awx对接gitlab详解
awx对接gitlab
也是一个cicd案例
1、原理
awx就是一个ansible管理平台,管理多个节点,ansible命令执行的环境
gitlab是一个代码仓库,在本次案例中,存放yaml文件
awx从gitlab中拉取代码,在多个被控节点上执行(这个流程是自动的)
那么有几个地方需要我们注意的
-
awx凭什么直接从gitlab上下载代码文件啊,靠的就是这个凭证(gitlab用户名和token)
-
新版本的gitlab不支持awx使用gitlab用户和用户密码拉取代码了
-
就需要再gitlab中生成一个token,在awx中配置能从gitlab中拉取的凭证
-
-
awx凭什么能直接管理多个被控节点,不言而喻,这个凭证可以是被管理节点的用户名和密码或者做了免密后的管理节点的私钥(有了这个私钥就可以任意登录被管理节点,前提是做了免密)
在执行任务的时候,awx会创建一个临时pod专门来跑这个任务,pod从gitlab中拉取代码,执行剧本,连接目标主机,处理后,自动销毁
2、awx配置
1、添加架构

2、添加团队

3、添加被管理主机

上面写了怎么连接这个主机的内部变量的,也就是说awx管理这个主机的时候,不需要凭证,使用这个内部变量就能直接管理
下面这个node2不需要内部变量,使用凭证来管理这个节点

4、添加凭证
还有一种就是机器凭证,存放的主机的用户名和密码或者直接存放密钥(这个私钥可以登录到被管理的节点就可以了)

5、测试主机联通性
依次点击 清单--->Demo Inventory ---> 主机----> 勾选主机---->执行命令
# 点击执行命令的时候,会运行一个pod来完成这个任务
# 这个pod默认的镜像策略就是Always
# 任务执行完成后,会自动的退出
[root@master01 ~]# kubectl get pod -n awx
NAME READY STATUS RESTARTS AGE
automation-job-6-4hqdm 0/1 ContainerCreating 0 2m12s
我出现了一个问题,就是镜像在我的节点上,但是还是显示一直在拉取镜像,就一直卡在那个地方了
为了解决这个问题?
- 可以在awx web页面中,修改执行环境中,镜像的拉取策略改为IfNotPresent或者不上网拉取镜像
我这里设置了不上网拉取镜像,也就是Never

执行环境就配置好了,pod在这个环境下,实现ansible命令管理被控节点
测试任务


这样就成功了,能够控制被控节点
1、测试主机的流程
-
会临时创建一个pod
-
pod靠这个凭证来连接被控节点执行ansible命令
-
测试完成后,pod销毁
3、对接gitlab
1、gitlab创建token和awx添加凭证
gitlab中创建令牌
token
- glpat-ix1mpwTimH4sbxNE_zpW

awx中创建凭证
凭证选源控制这个类型

2、awx上新建项目
项目就是从gitlab中拉取指定分支的代码

这个项目创建好后,会自己跑一遍的,在自己的localhost上,正好可以测试一下
1、上传代码文件
[root@docker testdev]# ls
README.md test.yml
git add .
git commit -m "test awx"
git push
如果有角色的话,需要上传ansible.cfg 里面定义了roles路径,临时创建的pod会读取ansible.cfg配置文件,执行命令的
- 修改ansible.cfg里面的host_key_checking = False
3、添加作业模版
选中项目,连接被控节点的凭证,主机清单,执行环境

4、测试
点击启动,就会从gitlab中拉取剧本,在被控节点执行剧本


浙公网安备 33010602011771号