【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

第五章 5-1~5-5 Freestyle Job实战成一、三剑客环境介绍(Jenkins,Ansible,Gitlab)二、三剑客环境搭建(Jenkins,Ansible,Gitlab)2.1、验证Jenkisns下的ansible环境和ssh免密登录2.2、编写nginx_playbooks文件2.2.1、进入nginx_playbooks文件夹中编写deploy.yml文件2.2.2、创建dev和prod文件2.2.3、编写prod文件2.2.4、编写dev文件2.2.5、修改roles/nginx/files下的文件2.2.6、修改roles/nginx/templates下的文件2.3、编写wordpress_playbooks文件2.3.1、编写deploy.yml主入口文件2.3.2、编写inventory下的文件2.3.2.1、编写dev文件2.3.2.1、编写prod文件三、编写playbook实现静态网页远程部署四、将playbook部署脚本提交到Gitlab五、Freestyle任务构建和自动化部署5.1、添加一个nginx-freestyle-job的自由风格的任务5.2、添加描述5.3、添加Git5.4、添加参数5.5、添加构建5.6、测试构建

一、三剑客环境介绍(Jenkins,Ansible,Gitlab)

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
如上图所示的一个交付的流程图,我们需要准备三台云主机(也可以使用虚拟机来创建三台虚拟机)。
需要准备的三台主机分别安装的环境和IP分别如下。
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

二、三剑客环境搭建(Jenkins,Ansible,Gitlab)
2.1、验证Jenkisns下的ansible环境和ssh免密登录

# 登录到jenkins主机(203)
ssh root@192.168.2.203
# 切换到deploy用户
su - deploy
# 加载Python3.6的环境
source /home/deploy/.py3-a2.5-env/bin/activate
# 在Python3.6环境中加载ansible
source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q
# 测试ansible-playbook是否可用
ansible-playbook --version
# 测试是否可以通过远程登录到目标主机(testbox)
ssh root@test.example.com

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2、编写nginx_playbooks文件

在之前的windows机下的repo文件夹下,将之前ansible部分编写的test_playbooks放入,然后打开git brash命令窗口;

# 拷贝一份test_playbooks并将文件夹重命名为nginx_playbooks
cp -a test_playbooks nginx_playbooks

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.1、进入nginx_playbooks文件夹中编写deploy.yml文件

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
修改为下图
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.2、创建dev和prod文件

将testenv文件,复制一份,并重命名为dev,prod
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.3、编写prod文件

下图中,在[nginx]下可以添加多个dns记录,对应多台主机
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.4、编写dev文件

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.5、修改roles/nginx/files下的文件

修改testbox文件夹的名称为nginx
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
删除files文件夹下的foo.sh脚本文件
并创建health_check.sh脚本文件用来检查网站的健康状况
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

#!/bin/sh

# 将传入的变量赋值给URL
URL=$1

curl -Is http://$URL > /dev/null && echo "The remote side is healthy" || echo "The remote side is failed, please check"

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
创建一个index.html文件

# 写一个文本语句到index.html文件中
echo "This is my first website" > index.html

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.2.6、修改roles/nginx/templates下的文件

切换到templates文件夹
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
使用vim打开这个nginx.conf.j2文件,可以看到如下图所示。
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

# For more information on configuration, see:
user {{ user }};
worker_processes {{ worker_processes }};

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {
worker_connections {{ max_open_file }};
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
#include /etc/nginx/conf.d/*.conf;
server {
listen {{ port }} default_server;
server_name {{ server_name }};

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root {{ root }};
index index.html index.htm;
}

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

}

2.3、编写wordpress_playbooks文件

复制一份nginx_playbooks到wordpress_playbooks
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.3.1、编写deploy.yml主入口文件

- hosts: "wordpress"
gather_facts: true
remote_user: root
roles:
- wordpress

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.3.2、编写inventory下的文件

进入到inventory目录下
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

2.3.2.1、编写dev文件

[wordpress]
test.example.com

[wordpress:vars]
server_name=test.example.com
port=8080
user=deploy
worker_processes=2
max_open_file=30000
root=/data/www
gitlab_user='root'
gitlab_pass='nis123456'

2.3.2.1、编写prod文件

# 将dev文件复制到prod文件中
cp -rf dev prod

可以看到和上面dev文件的内容一致
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
然后添加一个gitlab的账号和密码

gitlab_user='root'
gitlab_pass='nis123456'

完整的文件如下
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

三、编写playbook实现静态网页远程部署

进入到nginx_playbook文件夹中的/nginx_playbooks/roles/nginx/tasks路劲。在该路劲下有一个main.yml(之前测试的时候编写的)的文件,修改文件内容如下

- name: Disable system firewall
service: name=firewalld state=stopped

- name: Disable SELINUX
selinux: state=disabled

- name: setup nginx yum source
yum: pkg=epel-release state=latest

- name: write then nginx config file
template: src=roles/nginx/templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf

- name: create nginx root folder
file: 'path={{ root }} state=directory owner={{ user }} group={{ user }} mode=0755'

- name: copy index.html to remote
copy: 'remote_src=no src=roles/nginx/files/index.html dest=/www/index.html mode=0755'

- name: restart nginx service
service: name=nginx state=restarted

- name: run the health check locally
shell: "sh roles/nginx/files/health_check.sh {{ server_name }}"
delegate_to: localhost
register: health_status

- debug: msg="{{ health_status.stdout }}"


四、将playbook部署脚本提交到Gitlab

之前编辑的playbook的文件的目录结构如下所示。
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
在Git Bash命令窗口上将目录位置移动到如下图所示
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
在Gitlab上创建一个ansible-playbook-repo项目。然后通过下面提示的git语句将上面编写的ansible的playbook提交到git上。
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

五、Freestyle任务构建和自动化部署
5.1、添加一个nginx-freestyle-job的自由风格的任务

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

5.2、添加描述

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

5.3、添加Git

复制git仓库地址【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
将复制的git添加到下图的配置中
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

5.4、添加参数

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

5.5、添加构建

#!/bin/sh

set +x
source /home/deploy/.py3-a2.5-env/bin/activate
source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

cd $WORKSPACE/nginx_playbooks
ansible --version
ansible-playbook --version

ansible-playbook -i inventory/$deploy_env ./deploy.yml -e project=nginx -e barnch=$barnch -e env=$deploy_env

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

5.6、测试构建

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
进入输出控制台
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
从上图的输出日志中可以看到本次构建成功!
查看windows主机的hosts文件,添加如下的DNS记录。
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
打开浏览器使用:test.example.com网址访问
【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
至此,freestyle构建部署脚本的实例演示成功!

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏