持续集成ci和持续部署cd
持续交付(CD)和持续集成(CI)是DevOps的两个众所周知的方面。 但是,当今流行的CI缺少关键的“ I:”基础架构。
曾经有一段时间,“基础设施”意味着无头的黑匣子,巨大的服务器机房和高耸的机架,更不用说采购过程长达数月之久,而负载估计却在盈余方面出错。 然后是虚拟机革命,它使基础设施很好地实现了虚拟化,而世界却从未如此。 我们不再需要管理实体盒子。 只需单击几下,我们就可以创建和销毁,启动和停止,升级和降级计算机。
有一个关于银行的流行故事,该银行已数字化并引入了在线表格,客户需要手动填写,打印并通过蜗牛邮件将其填写到银行。 那就是我们今天使用基础架构的地方:使用新技术以旧方式做事。
在本文中,我们将研究渐进式基础架构管理,将基础架构视为版本工件,并探讨不可变服务器的概念。 在后续文章中,我们将研究如何使用开源工具来实现连续的基础架构。
这是大家熟悉的CI,早期发布,经常发布的循环管道。 该管道缺少关键组件:基础架构。
突击测验:
- 您如何创建和升级基础架构?
- 您如何控制和跟踪基础架构的变化?
- 您的基础架构如何随业务扩展?
- 您如何确保在正确的基础架构配置上进行测试?
要回答这些问题,请引入连续基础架构。 将CI构建管道分为连续集成代码(CIc)和连续集成基础结构(CIi),以并行开发和构建代码和基础结构,将两者融合以进行统一的测试和发布。 使基础架构成为CI管道的一流公民。
CIi的定义方面包括:
1.代码
通过代码而非安装来创建基础结构。 基础架构即代码(IaC)是用于从配置脚本开发基础架构的现代方法。 这些脚本遵循编码和单元测试的典型开发生命周期(有关示例,请参见下面的Terraform脚本)。
2.版本
IaC工件在源存储库中进行版本控制。 这为基础架构带来了版本控制的所有优点:一致性,可追溯性,分支和标记。
3.管理
使用编码和版本控制的基础结构,您可以应用熟悉的测试和发布过程来管理基础结构开发。
CIi具有以下优点:
1.一致性
版本化和带标签的基础结构意味着您明确知道要使用的系统的组件和配置。 这建立了出色的DevOps实践,可以一致地识别和管理基础架构。
2.重现性
使用标记和基准化的基础架构,轻松创建基础架构。 想想您经常听到这样的消息:“但是它在我的机器上有效!” 现在,您可以在本地测试台中快速重现类似生产的环境,以将环境作为调试周期的变量删除。
3.可追溯性
您经历了多少次历史来找出谁更改了文件夹的权限,或者谁升级了ssh软件包? 编码,版本化,已发布的基础架构消除了临时更改,为基础架构管理带来了轻松的可追溯性和可预测性。
4.自动化
借助可编写脚本的基础架构,自动化是下一个逻辑步骤。 自动化使您可以按需创建基础架构并在完成后销毁它,因此您可以将宝贵的时间和精力集中在更具生产力的任务上。
5.不变性
CIi带来了诸如不变基础设施之类的创新。 除了升级,您还可以简单地创建新的基础架构组件(请参阅下面有关不可变基础架构的说明)。
持续的基础设施是关于运行环境与运行伪像的发展。 将基础架构视为代码,并通过成熟的DevOps流程进行处理。 重新定义了传统CI,以包括缺少的“ i”,从而导致了连贯的CD。
(CIc + CIi)= CI→CD
基础架构即代码(IaC)
CIi管道的关键推动因素是基础设施即代码(IaC)。 IaC是使用配置文件创建和升级基础结构的机制。 这些配置文件像代码一样开发,并在版本控制系统中进行版本控制。 这些文件遵循通常的代码开发生命周期:单元测试,提交,构建和发布。 IaC流程为基础架构开发带来了版本控制的所有优点,例如标记,版本一致性和更改可追溯性。
这是一个示例Terraform脚本,用于在AWS上创建两层基础架构,其中包括虚拟私有云(VPC),弹性负载均衡器(ELB),安全组和NGINX服务器。 Terraform是用于通过脚本创建和更改基础结构的开源工具。
完整的脚本可在GitHub上获得 。
不变的基础设施
您有几个正在运行的VM,并且需要应用安全补丁。 一种常见的方法是使用远程推送脚本单独更新所有系统。
与其更新旧系统,不如扔掉它们并部署安装了安全补丁的新系统,该怎么办? 这是不可变的基础架构。 由于对基础结构的先前版本进行了版本控制和标记,因此安装补丁程序只需更新脚本并将其推送到发布管道即可。
现在您知道为什么基础设施应该成为CI管道的一等公民吗?
翻译自: https://opensource.com/article/17/11/continuous-infrastructure-other-ci
持续集成ci和持续部署cd