打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基础架构即代码,使用GitLab和Ansible创建基础网络架构
userphoto

2023.11.07 浙江

关注
虫虫安全
2019-8-21 12:54

GitLab依托快速迭代优势,逐渐完善了其对最新趋势、理念和技术的支持。尤其在DevOps和DevSecOps方面更是跑到了最浪尖。GitLab CI就是具体负责这些工作的工具套件,是一系列功能强大的工具,可用于开发测试运维一栈式服务,自动化任务执行,当然也包括虫虫要给大家说的一个方面TaD(Infrastructure as Code),基础架构即代码。本文实例演示Ansible的网络类的双路由器演示,节选自GitLab官方的CI/CD示例。

概述

在GitLab CI环境下,我们可以的方便的通过修改和推送Ansible playbook代码构建和修改虚拟网络基础架构环境,而无需在本地安装任何Ansible网络模块依赖项。

实例中的Ansible playbook由以下四个任务:

收集路由器信息:

显示OS版本

显示序列号

和配置SNMP:

基本步骤

缘起——问题看板

GitLab的每个计划都在同一个地方开始:问题看板。GitLab CI工作流程的第一步是检查ansible-demo项目中的问题板。在ansible-demo问题看板上,我们发现在所有路由器上更改SNMP字符串已经存在问题。在该问题中有一个指向安全策略的链接,根据安全策略每月必须轮换SNMP字符串,并且必须有不同的字符串用于只读和读写,该实例就演示为了符合安全策略的更改操作。

检查在双路由器演示中配置的SNMP字符串的命令是否遵循问题中概述的GitLab安全策略。

接下来,返回问题看板,将该问题分配给自己。并将标签从待办事项切换到问题的右侧边栏。

创建合并请求

下一步是从问题创建合并请求(MR)。仔细检查'正在进行工作'(WIP)标志是否已经附加到你的MR中,这样它就不会过提前和master合并。

由于SNMP字符串的更改很小,所以可以直接在浏览器上通过Web IDE进行在线编辑,而无需本地操作。打开CI/CD演示部分,转到Ansible Playbook,并编辑SNMP部分,使其显示为:

-snmp-server community New-SNMP-DEMO1 RO

-snmp-server community Fun-SNMP-RW-STR RW

请注意,根据问题中概述的GitLab安全策略,RO和RW要设置为不同的字符串。

提交更改

更新SNMP字符串后,直接提交更改。提交后,打开该更改的并排比较,查看确认MR已经包含了新提交的更新。并排比较工具是一种方便快捷的浏览更新的可视化工具。

测试执行

更改提交,会自动启动GitLab CI管道,执行以下任务:

语法检查

试运行

测试实验室/模拟环境的变化。

可以在GitLab CI管道中查看每个作业的进度和输出,以便执行SNMP更新。

查看作业的输出,显示模拟环境中的SNMP更新成功。

复选标记表示GitLab CI管道中的每个任务都已通过。接下来可以登录实验室路由器并查看更改。

RO和RW SNMP字符串的更改将反映在路由器中。

MR审查

该步骤是进行MR审查,需要对MR进行审批后才合并,可以预先检查提交的MR是否存在问题。

合并到主分支

测试无误后,可以将更改合并到master主分支中。通过主分支来更新生产环境,这是Git流程中通用的惯例。

一切准备就绪后,单击'解决正在进行的工作'按钮。然后单击'合并'。这样修改WIP状态后,就可以进行MR合并操作,并结束问题。

新管道将在生产环境中运行playbook设置的各任务步骤,执行的所有测试。可以从管道屏幕查看进度和日志。完成此过程后,可以用同样的方法登录生产路由器并查看SNMP安全字符串是否已得到更新。

GitLab CI

整个过程都可以通过GitLab CI完成,而无需任何本地操作(除了登陆验证结果)。 GitLab CI管道是一系列栈式任务,可以执行测试和实现Ansible代码所需的一切。

GitLab CI中支持一个简单的YML配置文件,该文件位于存储库中,名为.gitlab-ci.yml,可通过Gitlab文件创建模版创建,并根据实际情况修改。本演示实例中的.gitlab-ci.yml文件包含三个阶段。

部署:这将在AWS中使用Ansible创建双路由器仿真网络。

演示:这将执行将更改SNMP字符串的playbook。

销毁:删除双路由器仿真网络。

GitLab CI以基本镜像开始,在该实例中使用的Docker镜像已经包含所有必需的Ansible二进制文件和所有网络依赖项。在每个阶段执行运行的命令以及必要时的依赖关系。

下面是查看GitLab CI的演示阶段代码,它执行Ansible playbook

总结

本文通过对Gitlab CI管道进行了深入了解,展示利用GitLab CI 基础架构即代码的实例,无需安装任何依赖项目就可以创建一个路由器实验环境。这只是GitLab CI如何用于执行基础架构作为代码的一个示例。更多实例请查看gitlab的官方示例文档。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【Jenkins Ansible Gitlab 自动化部署三剑客】学习笔记-第五章 5-1~5-5 Freestyle Job实战
Jenkins Ansible Gitlab自动化部署三剑客 | 一路向北的博客
gitlab还原到上个版本_一次近乎完美的PostgreSQL版本大升级
Jenkins+Ansible+GitLab持续交付平台搭建-第4篇
2020年 DevOps 领域值得推荐的工具
从零开始,搭建公司通用后台架构技术栈,这套架构稳得一批...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服