背景基于:jenkins配置docker联合项目的CICD
前项目只部署了一台web服务器即cmdb,此次需要两个web服务器,所以,在前项目上做如下改动:
在jenkins容器中安装ansible
由于该项目的jenkins容器是alpine
高山版本,所以,可直接用apk
添加
apk add ansible
改写宿主机中docker-compose.yaml文件
注意:改写前先停掉服务
docker-compose stop
- 将ports改为
expose
,不指定哪台cmdb,避免端口冲突 - 将
container_name
关闭,让默认生成
image.png - 改写完后再启动
docker-compose up --scale cmdb=2
image.png注意:此处启动时指定了使用两个cmdb
在新生成的两个cmdb容器上配置ssh
ssh-keygen
生成密钥对
ssh-keygen -A
生成系统密钥image.png
/usr/sbin/sshd
打开22端口passwd
设置密码image.png
在jenkins的容器上建立免密
- 避免出现cmdb密钥重复,可先清空known_hosts中已有的密钥
> ~/.ssh/known_hosts
- 建立免密:
ssh-copy-id root@auto-cmdb_cmdb_1
ssh-copy-id root@auto-cmdb_cmdb_2
image.png
- 查看
/root/.ssh/known_hosts
,可发现此时已添加成功
image.png
在jenkins的容器上创建一个/etc/ansible/下的hosts文件
bash-4.4# vi /etc/ansible/hosts
[prod]
auto-cmdb_cmdb_1
[prod:vars]
name=prod-oyzx
[dev]
auto-cmdb_cmdb_2
[test]
127.0.0.1
[dev:vars]
name=dev-user
port=2222
在gitlab项目上创建分支
image.png image.png在Jenkins中创建一个自由风格的任务:
1. 添加描述信息
添加描述信息.png2.选择参数化构建过程
Name:事件名称
Description:添加描述信息,加以区分不同参数事件
Parameter Type:选择以分支或标签进行构建(此处以分支为例)
3.添加一个选项参数模块
在执行时会出现一个下拉选项
,可选择自定义选项的内容
4.再添加一个文本参数
在执行时会出现一个文本框,可自定义文本参数的默认值
image.png
5.源码管理,配置git仓库
Repository URL:gitlab的ssh链接
注意:@后面写的时gitlab容器的镜像名
添加全局配置:同前一篇文章jenkins配置docker联合项目的CICD
6.构建触发器和构建环境
此处只为测试参数化构建,所以未使用,若有需要,请根据需求自定义添加
image.png
7. 构建一: 添加shell模块
根据上文定义的参数变量,可自定义shell内容,此处便于观看,echo打印了相应参数
echo "本次构建的版本是 ${build_version}"
echo "本次选择的 gitlab 分支是 ${branch_name}"
echo "本次选择部署的主机组是 ${deploy_hosts}"
image.png
8. 构建二:添加Invoke Ansible Ad-Hoc Command模块
image.pngHost pattern:添加主机组
Inventory:添加资产清单,需指定
host文件
在jenkins容器的具体目录Module:指定ansible执行模块,此处用的debug模块
Module arguments or command to execute:等价于ansible命令中
-a
后面的具体命令操作image.png
写完任务配置内容后,保存然后点击参数构建Build with Parameters
,填入相应信息
可在控制台输出查看输出结果,如下:
image.png image.png
可在输出信息中下端看见echo信息:
image.png
以上就是基于参数化选择gitlab代码分支或者标签进行构建的全部内容,如有疑问或漏洞,还请见谅,欢迎私信我嗷,嘻嘻~~
网友评论