使用Terraform构建EC2实例(实践部分)
首先
用AWS很麻烦,每次都要通过控制台来建立环境。
听说可以使用一种叫做Terraform的工具,能够一次性搭建整个环境,并能够快速删除,所以我试着去了解了一下。
首先,我们将以试用的方式来构建AWS的EC2实例。
在这个实践部分中,我将解释安装完成后的建立方法。有关安装和初始设置的说明,请参阅安装部分。
目标
使用Terraform来构建基础设施的目标是按照以下流程进行。
① 在.tf文件中编写基础设施代码。
② 使用terraform plan命令比较当前状态与差异。
③ 使用terraform apply命令应用基础设施配置。
④ 使用terraform show命令确认当前状态。
我们将在这次操作中建立环境,然后进行删除。
删除将按照以下步骤进行。
⑤ 使用terraform destroy命令来删除
⑥ 使用terraform show命令确认已删除
实践
环境建设
创建.tf文件
Terraform使用HCL(HashiCorp配置语言)这种DSL,来将基础设施的配置信息写入.tf文件中。
本次,我们将VPC、子网和实例定义为资源。
只要按照官方文档来处理参数就可以了。提供商:AWS – HashiCorp的Terraform。
resource "aws_instance" "linux" {
ami = "ami-00a5245b4816c38e6"
instance_type = "t2.micro"
subnet_id = "${aws_subnet.public_subnet.id}"
}
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
instance_tenancy = "default"
}
resource "aws_subnet" "public_subnet" {
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "10.0.10.0/24"
availability_zone = "ap-northeast-1a"
}
② 进行土壤改良计划
使用terraform plan命令会比较当前环境和.tf文件之间的差异。
由于本次操作将新建VPC、子网和实例,所以它们将以“+”的方式显示出来。
$ ./terraform plan
Terraform will perform the following actions:
+ aws_instance.linux
id: <computed>
ami: "ami-00a5245b4816c38e6"
arn: <computed>
・
・
・
+ aws_subnet.public_subnet
id: <computed>
arn: <computed>
assign_ipv6_address_on_creation: "false"
・
・
・
+ aws_vpc.vpc
id: <computed>
arn: <computed>
・
・
・
Plan: 3 to add, 0 to change, 0 to destroy.
应用terraform
确认了配置信息后,可以使用terraform apply命令应用配置信息。
在过程中会询问是否继续操作,输入“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
如果显示如下,则处理已完成。
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
④ 查看terraform配置
您可以使用terraform show命令来查看配置信息,也可以通过AWS控制台等途径进行确认。
$ ./terraform show
aws_instance.linux:
id = i-*****************
ami = ami-00a5245b4816c38e6
arn = arn:aws:ec2:ap-northeast-1:************:instance/i-*****************
・
・
・
aws_subnet.public_subnet:
id = subnet-*****************
arn = arn:aws:ec2:ap-northeast-1:************:subnet/subnet-*****************
・
・
・
aws_vpc.vpc:
id = vpc-*****************
arn = arn:aws:ec2:ap-northeast-1:************:vpc/vpc-*****************
・
・
・
删除环境
5. 使用Terraform销毁
您可以使用terraform destroy命令来删除定义的资源。
在删除过程中,您会被询问是否要继续执行操作,此时您需要输入”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
如果显示如下,处理就完成了。
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
⑥ 显示 Terraform
最后,再次使用terraform show命令来确认当前的配置。
如果成功删除,将不会显示任何内容。
$ ./terraform show
结束
到目前为止,Terraform的安装和EC2实例的构建已经暂时完成。
如果应用得当,应该可以构建更复杂的基础架构!
而且,如果有时间的话,我也想深入了解Terraform的state和Backend的概念。