跳到主要内容

新添操作:Terraform CLI

· 阅读需 5 分钟
Alexander Kus

凭借其简单的语法,Terraform允许在每个云服务中轻松供配、更改与操纵版本资源。Terraform成为最受欢迎的IaC(基础设施即代码)的工具之一,难怪它很快就成为Buddy最需要的功能之一。今天,终于来啦!

Terraform与持续交付

除了部署代码外,Terraform还允许用户自动化基础设施更改。Terraform配置保存在存储仓中,从而可以进行版本控制。根据代码中包含的要求调整我们的基础架构,交付流水线将自动运行“terraform apply”。

Terraform配置与状态(State)

Terraform配置文件(.tf)中描述了基础架构。首次运行“Terraform”将创建所描述的资源。除此之外,将创建一种称为Terraform状态(State)将用作连续运行的数据库。

Terraform状态对整个过程至关重要,因为它让我们清楚接下来在“terraform apply”执行中我们做的事。

示例:

  1. 在我们的配置文件中,我们声明需要一个EC2 t3.medium实例
  2. 第一次执行将创建虚拟机(状态为空)并将其ID保存到Terraform状态
  3. 另一个运行将检查我们的Terraform状态,如果看到虚拟机已包含在内将不会执行任何操作。如果没有Terraform状态,将在每次执行时创建虚拟机。
重要

请确保Terraform状态为持续有效。如果没有,Terraform将在每次连续运行时创建一个新的基础架构,而不是更新已经存在的基础架构!

为了维护您的状态,建议使用称为Terraform后端(Backend)的东西。而我们建议使用AWS S3或Google GCS。

Buddy中使用Terraform

您可以在我们的交付流水线中使用Terraform CLI操作。它允许您提供将在包含“.tf”文件的存储仓相关联工件中执行命令,同时还允许您选择Terraform版本。

提示

我们建议使用固定的Terraform版本而不是最新版本“latest”。以前曾有过因为不同版本的Terraform状态而导致出现问题的情况。使用固定版本可以让您更好地控制并防止更改更新时出错。

Terraform后端配置可以直接在存储仓中的“.tf”文件中完成,也可以使用操作的“变量”选项卡中设置的环境变量来完成。除此之外,Buddy提供专用的AWS和GCP集成,允许在S3/DynamoDB和谷歌云存储中进一步后端配置选项。

使用案例

以上流水线是使用Terraform的示例之一。构建应用程序后,Terraform将验证配置文件是否正确。如果一切顺利,则以下变更集条件Terraform操作将计划更改,这些更改将在手动批准后执行。在这个场景中,我们使用Rsync作为部署操作示例。

为确保基础架构更改仅在“*.tf”文件发生更改时触发,我们在操作2-6中添加了触发条件。这样,只要没有基础架构更改,流水线就会正常构建和部署您的应用程序。

参看: