Jenkins实现CICD之集成ansible的任务

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Jenkins安装Ansible插件

1.ansible结合Jenkins架构概述

如上图所示,我们可以基于Shell脚本的方式批量管理服务,也可以基于Ansible编写剧本的方式来管理服务哟,需要安装相应的插件即可。

官方文档:
	https://plugins.jenkins.io/ansible/

2.Jenkins安装ansible环境

	(1)安装ansible
[root@ubuntu12.yinzhengjie.com ~]# apt -y install ansible

	(2)查看ansible的版本,如上图所示
[root@ubuntu12.yinzhengjie.com ~]# ansible --version

	(3)添加主机清单
[root@ubuntu12.yinzhengjie.com ~]# cat >> /etc/ansible/hosts <<EOF
[webservers]
10.0.0.13
10.0.0.14
[appservers]
10.0.0.15
EOF


	(4)验证ansible对后端主机的连通性,如下图
[root@ubuntu12.yinzhengjie.com ~]# ansible all -m ping

3.安装ansible插件

3.1 进入到插件界面

如上图所示,进入到安装插件界面。

3.2 搜索ansible插件

如上图所示,搜素"ansible"插件进行安装即可。

3.3 插件安装完成

如上图所示,表示插件安装成功啦。

二.测试Jenkins能否调用ansible命令

1 创建一个自由风格的项目

如上图所示,新建一个"yinzhengjie-ansible-job01"的自由风格项目。

2 添加shell命令

如上图所示,成功添加"ansible all -m shell"。

3 构建任务并查看输出

如上图所示,构建成功啦。

三.测试"Invoke Ansible Ad-Hoc Command"构建

1 创建一个自由风格的项目

如上图所示,我们可以创建一个自由风格的"yinzhengjie-ansible-job02"项目

2 添加"Invoke Ansible Ad-Hoc Command"之shell模块

2.1 添加"Invoke Ansible Ad-Hoc Command"构建步骤

如上图所示,点击"增加构建步骤",选择"Invoke Ansible Ad-Hoc Command"

2.2 配置shell模块

如上图所示,添加了shell模块相关配置

2.3 测试构建

如上图所示,咱们的测试成功了,仅仅执行了"webservers"的模块哟。

3 添加"Invoke Ansible Ad-Hoc Command"之user模块

3.1 配置user模块

如上图所示,我们测试appserver主机,创建jasonyin2020用户。

3.2 测试构建

如上图所示,测试成功啦。

四.测试Invoke Ansible Playbook构建

1 创建一个自由风格的项目

如上图所示,我们可以创建一个自由风格的"yinzhengjie-ansible-job03"项目

2 准备playbook和资源清单

	(1)编写剧本
[root@ubuntu12.yinzhengjie.com ~]# cat /yinzhengjie/script/jenkins/playbook/test.yaml 
- hosts: webservers
  remote_user: root

  tasks:
  - name: excute cmd
    shell:
      cmd: hostname
    register: result

  - name: show result
    debug:
      msg: "{{ result }}"
[root@ubuntu12.yinzhengjie.com ~]# 


	(2)准备主机清单
[root@ubuntu12.yinzhengjie.com ~]# tail -7 /etc/ansible/hosts
# Add by yinzhengjie 
[webservers]
10.0.0.13
10.0.0.14

[appservers]
10.0.0.15
[root@ubuntu12.yinzhengjie.com ~]# 

3 添加"Invoke Ansible Ad-Hoc Playbook"构建步骤

如上图所示,点击增加构建步骤,选择"Invoke Ansible Playbook"

4 配置"Invoke Ansible Ad-Hoc Playbook"

如上图所示,需要咱们指定playbook路径和主机清单路径哟。

5 测试构建

如上图所示,测试构建并查看主机清单。

五.基于选项参数配合ansible剧本构建案例

1 创建一个自由风格的项目

如上图所示,我们可以创建一个自由风格的"yinzhengjie-ansible-test-product-demo"项目。

2 准备资源清单和剧本

	(1)编写剧本
[root@ubuntu12.yinzhengjie.com ~]# cat /yinzhengjie/script/jenkins/playbook/deploy.yaml 
- hosts: appservers
  remote_user: root

  tasks:
  - name: excute cmd
    shell:
      cmd: hostname
    register: result

  - name: show result
    debug:
      msg: "{{ result }}"
[root@ubuntu12.yinzhengjie.com ~]# 


	(2)准备资源清单
[root@ubuntu12.yinzhengjie.com ~]# tail -3 /etc/ansible/hosts-test 
# Add by yinzhengjie 
[appservers]
10.0.0.13
[root@ubuntu12.yinzhengjie.com ~]# 
[root@ubuntu12.yinzhengjie.com ~]# tail -3 /etc/ansible/hosts-product 
# Add by yinzhengjie 
[appservers]
10.0.0.14
[root@ubuntu12.yinzhengjie.com ~]# 

3 添加选项参数

如上图所示,选择选项参数。

如下图所示,添加一个"YINZHENGJIE_DEPLOY_INVENTORY"的选项参数变量。

4 添加"Invoke Ansible Ad-Hoc Playbook"构建步骤

如上图所示,点击增加构建步骤,选择"Invoke Ansible Playbook"

5 配置"Invoke Ansible Ad-Hoc Playbook"并调用自定义变量

如上图所示,我们对于主机清单,选择两个,将来用户可以选择基于生成环境部署还是测试环境进行部署哟。

6 构建生产环境

如上图所示,我们构建生产环境,并查看日志输出如下图所示。

7 构建测试环境

如上图所示,我们构建测试环境,并查看日志输出如下图所示。

六.使用ansible Playbook实现向playbook中传参功能

请创建测试环境和生产环境的配置文件,并对于测试环境和生产环境可以再次选择可以执行的资源清单。

添加如下三个变量:
	YINZHENGJIE_DEPLOY_INVENTORY:
		Jenkins变量,选择测试环境还是生产环境。
		
	YINZHENGJIE_DEPLOY_HOST_LIST:
		Jenkins变量,选择生产环境或测试环境部署哪个主机组列表,比如webservers或者appservers等。
		
	YINZHENGJIE_ANSIBLE_HOST_LIST:
		ansible变量,用于接收部署那一组主机列表,比如webservers或者appservers等。

类似于ansible命令行如下操作: (因此需要在ansible的playbook中添加一个"YINZHENGJIE_ANSIBLE_HOST_LIST")
	ansible-playbook /yinzhengjie/script/jenkins/playbook/deploy-with-args.yaml -e YINZHENGJIE_ANSIBLE_HOST_LIST=webservers
	ansible-playbook /yinzhengjie/script/jenkins/playbook/deploy-with-args.yaml -e YINZHENGJIE_ANSIBLE_HOST_LIST=appservers

1 准备测试环境

	(1)编写playbook文件
[root@ubuntu12.yinzhengjie.com ~]# vim /yinzhengjie/script/jenkins/playbook/deploy-with-args.yaml
[root@ubuntu12.yinzhengjie.com ~]# 
[root@ubuntu12.yinzhengjie.com ~]# cat /yinzhengjie/script/jenkins/playbook/deploy-with-args.yaml 
- hosts: "{{ YINZHENGJIE_ANSIBLE_HOST_LIST }}"
  remote_user: root

  tasks:
  - name: excute cmd
    shell:
      cmd: hostname
    register: result

  - name: show result
    debug:
      msg: "{{ result }}"
[root@ubuntu12.yinzhengjie.com ~]# 


	(2)编写"/etc/ansible/hosts-test"资源清单主机列表
[root@ubuntu12.yinzhengjie.com ~]# tail -7 /etc/ansible/hosts-test 
# Add by yinzhengjie 
[appservers]
10.0.0.13
10.0.0.14

[webservers]
10.0.0.15
[root@ubuntu12.yinzhengjie.com ~]# 


	(3)编写"/etc/ansible/hosts-product"资源清单主机列表
[root@ubuntu12.yinzhengjie.com ~]# tail -6 /etc/ansible/hosts-product 
# Add by yinzhengjie 
[appservers]
10.0.0.15

[webservers]
10.0.0.13
[root@ubuntu12.yinzhengjie.com ~]# 

2 新建项目

如上图所示,新建一个"yinzhengjie-ansible-test-product-demo-with-args"项目,其配置使用我们之前的一个项目案例即可。

3 添加"YINZHENGJIE_DEPLOY_HOST_LIST"选项参数

如上图所示,新增一个选项参数,并配置"YINZHENGJIE_DEPLOY_HOST_LIST"变量,如下图所示。

4 新增一个"Extra Variables"变量

如上图所示,点击"高级",就进入到如下图所示的界面,再点击"Extra Variables"。

5 配置"Extra Variables"变量

如上图所示,配置好参数传递的对应关系后,点击保存即可。

6 构建测试环境

如上图所示,我们来构建测试环境,测试结果如下图所示。

7 构建测试环境

如上图所示,我们来构建生产环境,测试结果如下图所示。

posted @ 2024-12-15 05:59  尹正杰  阅读(41)  评论(0)    收藏  举报