基础设施即代码如何起效?
时间:2022-04-05 18:21:01 | 来源:行业动态
时间:2022-04-05 18:21:01 来源:行业动态
要全面实现基础设施即代码,我们需要准备一系列依赖项。
首先,也是最重要的依赖项,就是远程访问托管。配置管理工具需要接入并修改该远程主机。如果远程基础设施具备自我管理能力,我们就要确保团队能够随时访问其配置管理工具。而IaaS云托管平台则提供API,允许用户根据需要自动创建、删除及修改基础设施资源。配置管理工具同样可以访问这些API,借此将相关操作任务转为自动化形式。目前流行的IaaS平台包括Digital Ocean、Amazon AWS以及微软Azure。
实现IaC的下一项要求,则是接入IaaS API并负责自动执行常规任务的工具套件。团队当然可以自主创建一组脚本及工具,但这会带来大量的开发负担与后续维护成本,投资回报也往往不高。目前市面上已经有多种开源配置管理平台用于解决这类需求,包括Terraform、Ansible、Salt Stack以及Chef等。
最后是版本控制系统。配置管理平台使用以YAMl等标记语言编写的、人类及机器皆可读取的文本文件对平台将要执行的任务及序列做出声明。这类文本文件作为应用代码文件存在,并被存储在版本控制系统repo当中。这套repo相当于集中指定来源,同时支持pull请求及代码审查。目前最流行的版本控制系统当数Git。
有了以上依赖项,我们设想以下示例场景,其中开发人员希望向系统当中添加新的应用程序服务。下面来看IaC工作流演示:
1. 开发人员在选定的配置管理平台Terraform中编辑YAML配置文本文件,由此指定所需的新托管服务器。
2. 开发人员将编辑结果提交至Git repo中的功能分支。由于项目的Git repo托管在Bitbucket上,因此开发者会开启一项pull请求。其他团队成员负责审查这项pull请求,并发现其中包含基础设施变更。后者批准此项pull请求,而后由之前的开发人员将提交结合提交并合并至repo的主分支当中。
3. 到这里,我们需要使用配置平台以执行更新。这项更新可以由开发人员手动触发。本场景中的团队使用的是Bitbucket,因此可以访问Bitbucket Pipelines以使用管道自动执行此步骤。
4. 执行完成后,Terraform将与团队的IaaS进行交互。Terraform将针对IaaS API执行一系列命令,确保IaaS与预期的基础设施配置保持同步。