首次使用Terraform
Terraform是什么?
Terraform是由HashiCorp开发的IaC工具(即基础设施即代码)。
使用Terraform,可以将云资源如Azure编码,实现版本管理、重复利用和共享等功能。
通过将基础设施进行编码化,可以获得以下优点。
-
- 効率的にインフラ環境を構築できる:コード化が完了していればTerraformを実行するだけで、定義されたリソース設定を基に構築してくれます。
-
- 人的ミスの削減:Terraformが自動的にインフラを構築してくれるため、ヒューマンエラーを防ぐことができます。
- 保守性の向上:インフラがコード化されたことによりGithubなどでバージョン管理を行うことができるようになりました。これにより、大規模な構成でもメンテナンスが行いやすくなります。
Terraform的基本工作流程
在Terraform中的常见工作流程如下:
-
- 编写(写代码):通过代码定义想要构建的资源。
-
- 计划(确认更改内容):比较云上的基础设施和配置与定义的资源的代码。在执行下一步的应用(应用更改)时,它会告诉您资源是被创建、更新还是丢弃。通过”terraform plan”命令来执行。
- 应用(应用更改):将编码的资源配置应用到云上。通过”terraform apply”命令来执行。
怎么写?
在Terraform中,我们使用一种称为HCL(HashiCorp Configuration Language)的语法来描述定义资源配置。
这个例子是用HCL在Azure中定义资源组的代码。
resource "azurerm_resource_group" "example" {
name = "example-resources"
location = "West Europe"
}
在资源这个块中,指定了资源名称和区域。
你是如何在云端对资源和代码进行比较的?
Terraform保存资源状态的文件名为terraform.tfstate,并以JSON格式保存。
当执行 terraform plan 时,通过比较 terraform.tfstate 和编码的资源配置,我们可以了解资源的变化情况。所以能够执行 terraform plan 是因为有了 terraform.tfstate。
每次执行 terraform apply 都会更新 terraform.tfstate 文件,以确保始终保持最新的状态。
推荐将其存储在云上,尽管默认情况下会自动生成在本地。
结束
由于在业务中似乎要使用Terraform,所以我简单总结了一下。
顺便提一下,据说HashiCorp这个名字是由创始人Mitchell Hashimoto先生的名字得来的。