首页 > 其他分享 >63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署

时间:2023-02-18 20:32:06浏览次数:32  
标签:Ansible CICD ansible 192.168 63 hosts jenkins root

集成 Ansible 的任务构建

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible

  • 安装 Ansible 环境
#包安装即可(新版ubuntu包安装Ansible会缺少配置文件,可copy旧版的部分)
[root@jenkins ~]#apt install ansible -y

[root@jenkins ~]#ansible --version
ansible 2.10.8
config file = None -->可以看到这里缺少配置文件,本次实验使用内容较简单我们手动创建
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]

#创建ansible配置文件
[root@jenkins ansible]#vim ansible.cfg
[root@jenkins ansible]#cat ansible.cfg
[defaults]
#inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录
#local_tmp = $HOME/.ansible/tmp #本机的临时命令执行目录
#forks = 5 #默认并发数
#sudo_user = root #默认sudo 用户
#ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码
#ask_pass = True
#remote_port = 22
#host_key_checking = False #检查对应服务器的host_key,建议取消此行注释,实现第一次连接自动信任目标主机
#log_path=/var/log/ansible.log #日志文件,建议启用
#module_name = command #默认模块,可以修改为shell模块
[privilege_escalation] #普通用户提权配置
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False

[root@jenkins ansible]#ansible --version
ansible 2.10.8
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
  • 创建主机清单文件
[root@jenkins ~]#cd /etc/ansible/
[root@jenkins ansible]#vim hosts-test
[root@jenkins ansible]#vim hosts-product
[root@jenkins ansible]#cat hosts-test ;cat hosts-product
[webservers]
192.168.11.202

[appservers]
192.168.11.203
[webservers]
192.168.11.204

[appservers]
192.168.11.205
  • 打通Ansible主机到被控制端机器的key验证
[root@jenkins ansible]#ssh-copy-id 192.168.11.202
[root@jenkins ansible]#ssh-copy-id 192.168.11.203
[root@jenkins ansible]#ssh-copy-id 192.168.11.204
[root@jenkins ansible]#ssh-copy-id 192.168.11.205
  • Jenkins更新镜像源到国内网站
[root@jenkins ~]#sed -i.bak 's#updates.jenkins.io/download#mirror.tuna.tsinghua.edu.cn/jenkins#g' /var/lib/jenkins/updates/default.json
[root@jenkins ~]#sed -i 's#www.google.com#www.baidu.com#g' /var/lib/jenkins/updates/default.json
  • 安装 Ansible 插件

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_02

安装插件后,添加了ansible的构建步骤

  • 准备 Playbook文件
[root@jenkins script]#vim hostname.yml
[root@jenkins script]#cat hostname.yml
- hosts: "{{ ansible_hosts }}"
remote_user: root

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

- name: show result
debug:
msg: "{{ result }}"
  • 创建 Ansible Playbook 的任务

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_03

  • 创建参数化任务 - 使构建可以有面向测试和生产两种选项

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_04

  • 添加第二个参数选项 - Jenkins参数传入到Playbook中使用
#Jenkins参数用作playbook中的参数逻辑
选菜单 --> hosts_list (jenkins变量)--> ansible_hosts (ansible 变量) --> playbook
注意:设置参数名要与playbook中的变量对应

[root@jenkins ~]#cat /data/script/hostname.yml
- hosts: "{{ ansible_hosts }}"
remote_user: root

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

- name: show result
debug:
msg: "{{ result }}"
[root@jenkins ~]#cat /etc/ansible/hosts-product
[webservers]
192.168.11.204

[appservers]
192.168.11.205

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Jenkins_05

  • 添加构建任务脚本,并添加参数构建选项

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_06

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Jenkins_07

  • 点"高级"添加ansible的变量,添加Ansible Playbook的变量注
注意: 此处的Extra Variables 指的是ansible的变量
key为ansible Playbook的变量名
Value可以是固定值,或者是任务中的变量,注意:需要用${变量名}形式
如下配置相当于: ansible-playbook -e "ansible_hosts=${ansible_hosts}"

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_08

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Jenkins_09

  • 保存构建设置并执行

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_10

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Ansible_11

再次测试生产服务器的app服务是否执行playbook

63-CICD持续集成工具-Jenkins结合Ansible实现自动化批量部署_Jenkins_12

Jenkins控制台输出

Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/Ansible-Playbook-hostname
[Ansible-Playbook-hostname] $ ansible-playbook /data/script/hostname.yml -i /etc/ansible/hosts-product -f 5 -e ansible_hosts=appservers

PLAY [appservers] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.11.205]

TASK [excute cmd] **************************************************************
changed: [192.168.11.205]

TASK [show result] *************************************************************
ok: [192.168.11.205] => {
"msg": {
"changed": true,
"cmd": "hostname -I",
"delta": "0:00:00.015849",
"end": "2023-02-18 12:07:10.440169",
"failed": false,
"rc": 0,
"start": "2023-02-18 12:07:10.424320",
"stderr": "",
"stderr_lines": [],
"stdout": "192.168.11.205 240e:368:9f27:c701:5054:ff:fe88:763f ",
"stdout_lines": [
"192.168.11.205 240e:368:9f27:c701:5054:ff:fe88:763f "
]
}
}

PLAY RECAP *********************************************************************
192.168.11.205 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Finished: SUCCESS

我是moore,大家一起加油!!!

标签:Ansible,CICD,ansible,192.168,63,hosts,jenkins,root
From: https://blog.51cto.com/mooreyxia/6065521

相关文章

  • ansible内置主机变量与魔法变量
    一、内置主机变量所谓内置变量其实就是ansible.cfg配置文件中的选项,在其前加上ansible_即成为内置变量。当然内置变量拥有比ansible.cfg中选项更高的优先级,而且针对不同的主......
  • 62-CICD持续集成工具-Jenkins构建Golang的web项目
    实现Golang应用源码编译并部署安装Golang环境#编译安装[root@jenkins~]#catinstall_go.sh#!/bin/bashGO_VERSION=1.18.4URL=https://studygolang.com/dl/golang/go${......
  • P6371做题记录+鲜花 复杂度
    看到很大的范围限制,很容易想到数位dp,记录当前\(mod\X\)的值。但是\(X\)会非常大,复杂度爆炸。考虑不用数位dp怎么做。容易想到直接枚举\(X\)倍数然后判断是不是......
  • 题解 CF637B
    题目大意:维护个栈,去重保留最上层题目分析:啥也不是,数组模拟\(\text{stack}+\text{unordered\_map}\)直接秒掉。复杂度\(O(n)\)代码实现:#include<bits/stdc++.h>......
  • Jenkins+Net Core3.1+Gitlab实现 CICD(未完成版)
    架构说明:由浅入深,我们暂时不考虑分布式,安装Jenkins到用户服务器进行CICD需要两台服务器Gitlab:192.168.232.128:12080源代码仓库,可以参考《安装git......
  • ansible 配置文件管理
    目录ansible配置文件管理配置文件的优先级配置文件分段说明配置参数说明关于ssh连接一些常见的错误说明文章转自ansible配置文件管理配置文件的优先级ansible的配置文......
  • ansible inventory文件
    目录ansibleinventory文件定义主机和组直接写进hosts文件简单实用ping模块检测连通性实用普通用户控制hosts文件管理主机分组简单配置指定主机范围定义主机组嵌套选择主机......
  • ansible 简介和基本安装
    目录ansible简介和基本安装自动化运维运维的自动化发展历程运维工程师的职能划分自动化运维的应用场景企业实际应用场景分析Dev开发环境测试环境发布环境生产环境灰度环境......
  • CICD流水线 Jenkins搭建 及构建后端SpringCloud项目
    一、CICD在CI/CD和DevOps领域中,持续交付和持续部署是一个老生常谈的话题。持续集成这个术语最早是在1994年由GradyBooch提出。微服务提出者MartinFlower在2014年发表的......
  • P9063 [yLOI2023] 分解只因数 题解
    P9063[yLOI2023]分解只因数题解题意分解给定的\(n\)的质因数,判断是否全为奇数。思想因为我不是黑子,所以我根本没考虑“只因”的发音对思路的极大提示。当我首次......