
GitLab CI在使用基础结构作为代码方法演示Ansible剧本方面的全部力量。
GitLab CI是适用于各种场景的有效工具,包括基础架构即代码。 GitLab可以与其他工具一起使用,但是在本演示中,我们将采用Ansible,因为正是开发人员在接近“将基础结构作为代码”时最常使用的工具。 这是Ansible网络课程中的 两个路由器的演示 。
GitLab CI的优点在于,可以修改和交付Ansible剧本中的代码,而无需在本地安装任何依赖项。 可以在我们的代码托管服务GitLab.com上完全完成一个演示项目,该演示项目可根据我们的安全策略每月在所有设备上更新SNMP字符串。
首先,打开Ansible剧本,其中有4个任务:
- 收集路由器事实-收集有关路由器的事实。
- 显示版本-显示版本
- 显示序列号
- 配置SNMP-配置SNMP。
在本演示中,我们将重点介绍配置SNMP字符串,为此您需要执行一些简单的步骤。
从任务板开始
GitLab上的任何计划都以相同的方式开始: 使用task 。 因此,GitLab工作流程的第一步是检查ansible-demo项目中的任务板。 在ansible-demo任务板上,我们已经看到了任务: 更改所有路由器上的SNMP行 。 该任务具有指向GitLab安全策略Wiki页面的链接,该页面上说SNMP行应该每月更新,而对于只读和读写操作,应该有不同的行。

GitLab的安全策略规定每月更新SNMP字符串。
然后,您需要验证使用两个路由器在演示中配置SNMP字符串的命令没有违反任务中介绍的GitLab安全策略。

Ansible剧本提供了用于配置SNMP字符串的命令。
然后返回任务,将其分配给您自己,然后将快捷方式从to-do
更改为在右侧面板上to-do
,或者将板上的任务从一列拖到另一列。
创建合并请求
现在,您需要从任务创建合并请求。 确保合并请求具有“进行中”(WIP)标志,以免合并请求过早进入向导。 我们不使用本地连接,而是使用GitLab Web IDE,因为对SNMP行的更改很小。
- 打开CI / CD演示部分。
- 转到Ansible剧本。
- 更改SNMP部分,如下所示:
- 请注意,根据任务中所述的GitLab安全策略,为RO和RW配置了不同的行。
提交提交
您已根据说明更新了SNMP行,现在需要提交更改。 打开并行更改比较,以确保合并请求包含最新提交。

并行比较工具以可视方式显示更改。
结果
提交更改将自动启动GitLab CI管道。 他将执行以下任务:
我们会在更新SNMP的GitLab CI管道中查看每个作业的进度和输出。

任务的输出显示,人工环境中的SNMP更新成功。
所有这些任务将启动并记录在合并请求中。

复选标记表示GitLab CI管道中的任务已完成。
然后登录到路由器以进行演示并查看更改。

SNMP RO和RW字符串的更改反映在路由器中。
合并请求审核
您可以执行合并请求的其他步骤批准 。 如果您设置批准,则多个用户将能够在进行生产之前验证这些更改。

可以配置合并请求,以便其他用户在您的作品出现在向导中之前对其进行检查。
转移到主人
更改可以在测试后立即提交给向导。 向导是包含工作区代码的主要分支。
准备就绪后,单击“ Resolve Work In Progress
按钮。 然后单击Merge
。
启用WIP状态时,合并请求可以发送到向导,并且任务可以关闭。
新的管道将运行在生产环境中启动剧本的附加步骤中执行的所有测试。
跟踪进度并在管道屏幕上记录日志。 该过程完成后,登录到正常工作的路由器并验证SNMP线路是否已更改。
魔术GitLab CI
这一切都归功于GitLab CI的魔力。 GitLab CI管道是一系列顺序任务,执行测试和实现Ansible代码所需的一切。
GitLab CI的整个配置都放在一个简单的YAML文件中,该文件存储在.gitlab-ci.yml
。
在此演示中, .gitlab-ci.yml
包含3个步骤。
- 部署(Deployment):使用Ansible在AWS中使用两个路由器创建一个模拟网络。
- 演示:执行一本可更改SNMP行的剧本。
- 销毁:销毁具有两个路由器的模拟网络。
GitLab CI从基本图像开始。 在这种情况下,我们使用Docker映像,其中包含所有必需的代码和Ansible依赖项。 指示将在每个阶段执行的命令以及相关性。

一个简单的YAML文件包含GitLab CI的三个阶段。

GitLab CI的演示阶段,该阶段运行Ansible剧本。
我们查看了管道内部,看到了如何使用GitLab CI以代码形式创建基础结构,甚至无需在计算机上安装Ansible依赖项。 这只是如何使用GitLab CI将基础设施实现为代码的一个示例。 观看视频以获取完整指南: