使用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的概念。

广告
将在 10 秒后关闭
bannerAds