Terraform的安装设置
首先
我已经开始学习Terraform了!基础设施即代码真的很方便呢!因此,这次我写了一篇关于Terraform设置的文章。
使用asdf进行Terraform的版本管理。设置完成后,我们将创建一个EC2实例作为验证。
环境
苹果MacBook Pro搭载英特尔处理器,预装的操作系统为macOS Monterey版本12.6。
安装asdf
通过使用asdf,您可以为每个应用程序管理Terraform的版本。
官方文档中有关于不同环境下的安装和设置方法。我使用了”Bash & Homebrew (macOS)”模式进行安装。
$ asdf version
v0.11.3-0adc6c1
安装Terraform。
使用asdf来安装Terraform。
$ asdf plugin add terraform
Terraform的配置设置
在工作目录下创建一个名为.tool.versions的文件。在这个文件中,写下要使用的Terraform版本,然后运行asdf install。
$ ls -a
. .. .tool-versions
# インストール可能なバージョン
$ asdf list all terraform
~省略~
1.4.5
1.4.6
1.5.0-alpha20230405
1.5.0-alpha20230504
1.5.0-beta1
1.5.0-beta2
1.5.0-rc1
1.5.0-rc2
# 使用するバージョンを記載
$ cat .tool-versions
terraform 1.4.5
# インストール
$ asdf install
# バージョン確認
$ terraform -v
Terraform v1.4.5
on darwin_amd64
提供商的设置
我們將開始進行Terraform的配置。我們將創建一個tf文件,用於記述提供者的配置。
(提供者是Terraform支持的雲端服務,例如GCP、Azure等)
$ ls -a
. .. .tool-versions main.tf
撰写设定信息。
terraform {
# 使用するTerraformのバージョン
required_version = "1.4.5"
required_providers {
# プロバイダの指定(今回はAWS)
aws = {
source = "hashicorp/aws"
# awsプロバイダのバージョン
version = "~> 4.0"
}
}
}
provider "aws" {
# AWSの認証情報、記述しない場合はdefaultが設定される
profile = "terraform_user"
# 使用するリージョン
region = "ap-northeast-1"
}
您可以从 AWS 供应商的官方文档下拉菜单中检查版本。

配置文件
在Terraform中,AWS认证信息(AWS CLI配置)是必需的。
设定完毕!
确认动作
由于Terraform配置已完成,我们将创建EC2实例并进行操作确认。
新建app.tf文件,并描述EC2实例的配置。(由于本次主要是Terraform设置,将省略描述方法的详细说明。)
resource "aws_instance" "hoge_ec2" {
ami = "ami-07c2a88388bb80eb0"
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}
# Terraformの初期化
terraform init
# インフラの構築状態を確認
terraform plan
# tfファイルの内容を反映
terraform apply
~省略~
aws_instance.hoge_ec2: Creating...
aws_instance.hoge_ec2: Still creating... [10s elapsed]
aws_instance.hoge_ec2: Still creating... [20s elapsed]
aws_instance.hoge_ec2: Still creating... [30s elapsed]
aws_instance.hoge_ec2: Creation complete after 37s [id=i-0b5232saxdssa98e85rd]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
我已经在AWS 管理控制台上确认了在东京区域启动了 EC2 实例!看来 Terraform 的配置没有问题!
最后
我认为我们已经完成了构建基本的基础设施所需的最低配置。未来我将会撰写有关如何管理tfstate文件以及其他与Terraform相关的文章。