安装Terraform并使用Terraform在AWS上创建EC2
首先
我开始学习Terraform,所以想将所做的事情发布为备忘录。
构建Terraform执行环境
由于Tfenv可以进行版本控制,因此这次我们将使用Tfenv来安装Terraform。
安装tfenv
由于我用的是Mac,所以将使用brew命令进行安装。
brew install tfenv
使用tfenv安装Terraform。
安装最新版本的Terraform。
tfenv install latest
确认已安装的Terraform版本
❯ tfenv list
1.3.5
No default set. Set with 'tfenv use <version>'
将安装的Terraform版本设置为默认版本。
❯ tfenv use 1.3.5
Switching default version to v1.3.5
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.3.5
在Terraform中,我们也会确认版本。
❯ terraform version
Terraform v1.3.5
on darwin_arm64
创建一个Terraform的工作目录。
创建一个工作目录,并切换到其中。
mkdir terraform
cd terraform
创建Terraform的配置文件
创建一个名为terraform.tf的文件来定义Terraform本身的信息。
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
required_version = ">= 1.0.0"
}
创建provider.tf文件,定义AWS Provider的信息。
provider "aws" {
region = "ap-northeast-1"
profile = "terraform"
default_tags {
tags = {
Managed = "terraform"
}
}
}
创建region资源的region
AWS的profile名称,用于从Terraform访问
※本次省略了AWS配置文件的设置
default_tags是为Terraform创建和管理的所有AWS资源添加标签的设置
※通过此设置可以确定哪些资源是由Terraform创建和管理的
创建ec2.tf文件并定义EC2实例的信息。
resource "aws_instance" "test" {
ami = "ami-0404778e217f54308"
instance_type = "t3.micro"
tags = {
Name = "tf_test"
}
}
我希望创建一个AMI实例。
我希望创建一个实例类型。
* 如果仅指定上述两个选项,则会默认创建VPC和安全组。
创建的资源将被标记以便于识别。
整理配置構成文件
由于Terraform已经提供了代码格式化工具,因此可以使用它来进行代码整理。
terraform fmt
使用Terraform创建资源。
根据创建的配置文件,在Terraform中创建资源。
执行 Terraform 的初始化步骤
执行以下命令以使用配置文件定义内容进行初始化。
terraform init
Terraform执行计划。
可以通过执行配置文件来查看执行计划。
能够具体确认会创建哪些资源。
※可以安全地执行,不会影响实际环境。
terraform plan
将Terraform的执行计划应用到实际环境中。
如果terraform plan创建的资源没有问题,就将其内容反映到实际环境中。
terraform apply
由于对现实环境有影响,在执行前会显示确认对话框,请输入“是”进行确认。
确认所创建的实例
让我们检查在这里创建的实例。
应该创建了一个在Name标签上设置了tf_test的实例。
您也可以使用以下命令进行确认。
terraform show
使用Terraform删除EC2实例
在确认创建的实例后,将进行删除操作。
执行Terraform删除的计划
通过在 terraform plan 命令后加上 -destroy 选项,可以确认删除的执行计划。
terraform plan -destroy
反映Terraform的删除执行计划
如果删除执行计划没有问题,将会进行反映。
terraform destroy
请务必小心,destroy命令会删除Terraform管理的所有资源,避免在意外的环境中执行。
当出现确认对话框时,请输入“是”进行确认。
确认删除的实例。
让我们在这里确认已删除的实例。
最后
这是我第一次使用Terraform在AWS上创建EC2实例,但是一旦能够通过代码进行管理,无论是什么样的设置都会留在代码中,这让我感受到了相当大的好处。
下次,我希望使用Terraform来进行实现连接到已创建的EC2实例的设置。