如果我想在同一机器上部署 gitlab + ansible,我需要"shell"运行器吗?



我看过一个关于使用基础设施即代码的 gitlab 演示。如果我想在本地做同样的事情,这会起作用吗?在本地设置开源 gitlab,将 bash 设置为外壳运行器,并使用外壳运行器,在网络设备上执行 ansible 剧本?

写出这个答案后,我现在认为这个问题有被关闭的风险,因为太宽泛或主要基于意见; 但是,我已经花了精力把它打出来,所以我们开始了。

在本地设置开源 gitlab,将 bash 设置为外壳运行器,并使用外壳运行器,在网络设备上执行 ansible 剧本?

我相信这是可能的,或者您可以将 ansible 以及您的剧本所需的任何 python 模块安装到 docker 映像中,然后使用 docker 执行器在容器内运行剧本。使用塔或AWX也是可能的,因为它们具有从源代码管理运行项目的概念

使用 docker runner的优点是,您不必在每个运行器主机上预安装 ansible(及其依赖项(;使用 docker runner 的缺点是我可以想象容器内部的 ssh 身份验证变得奇怪。

# hypothetical .gitlab-ci.yml
stages:
- apply
run ansible playbook:
stage: apply
image: docker.example.com/my-ansible:2.8
scripts:
- ansible-playbook -i ./some-inventory -v playbook.yml

使用像AWX(或Tower(这样的专用系统的优点是,运行这些剧本所依据的清单也是系统中的正式管理实体,并且不需要教GitLab如何将其提供给您的剧本。身份验证也是如此,因为AWX对托管SSH密钥对具有一流的支持,该密钥对只能有条件地授予某些剧本项目

您仍然可以使用 tower-cli 或其丰富的 API 启动作业模板,让 GitLab 与 Tower 集成,该作业模板将其项目配置为在启动前执行 SCM 更新

最新更新