joeの小窝

Loading...

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、添加架构

img

2、添加团队

img

3、添加被管理主机

img

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

下面这个node2不需要内部变量,使用凭证来管理这个节点

img

4、添加凭证

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

img

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

img

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

测试任务

img

img

这样就成功了,能够控制被控节点

1、测试主机的流程

  • 会临时创建一个pod

  • pod靠这个凭证来连接被控节点执行ansible命令

  • 测试完成后,pod销毁

3、对接gitlab

1、gitlab创建token和awx添加凭证

gitlab中创建令牌

token

  • glpat-ix1mpwTimH4sbxNE_zpW

img

awx中创建凭证

凭证选源控制这个类型

img

2、awx上新建项目

项目就是从gitlab中拉取指定分支的代码

img

这个项目创建好后,会自己跑一遍的,在自己的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、添加作业模版

选中项目,连接被控节点的凭证,主机清单,执行环境

img

4、测试

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

img

posted @ 2026-04-13 12:41  乔的港口  阅读(31)  评论(0)    收藏  举报