[aws] 使用 Terraform 创建实例
概述
我通常使用CloudFormation来创建AWS环境,但我从未使用过terraform,所以在本文中我将创建实例并进行操作验证。
环境
- MacOS
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.2
BuildVersion: 19C57
terraform是什么
Terraform是一个与CloudFormation类似的工具,用于安全高效地管理基础设施。它使用HashiCorp设计的语言HCL进行编码。
事前准备可以译为 “预先准备”。
创建AWS账号并预先创建IAM用户的访问密钥和秘密密钥。
本步骤此处省略。
使用Homebrew来安装terraform。
$ brew install terraform
$ terraform version
Terraform v0.13.5
您需要在环境变量中进行访问密钥和秘密密钥等设置。
请根据个人环境相应设置实际值。
请注意不要泄露访问密钥和秘密密钥。
$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx
$ export AWS_DEFAULT_REGION=ap-northeast-1
随后,执行aws-cli命令以确认我的aws账户是否显示。
$ aws sts get-caller-identity --query Account --output text
使用 Terraform 创建实例
我们将创建一个tf文件,并定义创建一个实例。
resource "aws_instance" "example"{
ami = "ami-0c3fd0f5d33134a76"
instance_type = "t3.micro"
}
在创建上述代码后,执行terraform init命令。
如果输出“Terraform has been successfully initialized!”,则表示成功。
$ terraform init
Initializing the backend...
Terraform has been successfully initialized!
接下来,执行terraform plan命令。
这个命令会告诉我们将会发生变化的资源信息等等。
$ terraform plan
使用terraform apply命令进行环境部署。
再次显示执行terraform plan的内容,并询问输入一个值,请输入yes,然后执行资源创建。
$ terraform apply
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
您可以在 AWS 控制台上确认已创建了实例。
编辑实例
我們將對上面創建的實例進行標記。
在修改tf文件如下後,執行terraform apply。
resource "aws_instance" "example"{
ami = "ami-0c3fd0f5d33134a76"
instance_type = "t3.micro"
tags = {
Name = "example"
}
}
$ terraform apply
# aws_instance.example will be updated in-place
~ tags = {
+ "Name" = "example"
}
您可以在AWS管理控制台的界面上确认实例是否被打上标签。
删除实例
通过使用terraform创建的环境可以通过terraform destroy命令进行删除。
当被询问”Do you really want to destroy all resources?”时,输入yes。
$ terraform destroy
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
您可以在AWS控制台上确认已经删除了我们刚刚创建的环境。