【Terraform/AWS】从安装到创建EC2的过程
首先
确保安装了Terraform,并能在AWS上创建EC2实例。
执行环境
-
- Windows 10 21H2
- Terraform 1.1.9
安装
下载
请从以下网站进行下载。
对于Windows系统,有386和Amd64两个选择。
如果你的系统是64位操作系统,请在“开始菜单>设置>系统>详细信息”中选择Amd64。
如果你的系统是32位操作系统,请选择386。
让路径通过
确认
可以在命令提示符中执行命令,并显示Terraform的版本来确认是否正确安装。
C:\terraform> terraform -v
Terraform v1.1.9
on windows_amd64
顺便说一句,即使不通过路径也可以确认是否存在可执行文件。
但是,每次执行都必须写入绝对路径很麻烦,所以我添加了路径。
C:\terraform> C:\terraform\terraform.exe -v
Terraform v1.1.9
on windows_amd64
创建EC2
因为目标是确认作成,所以代码很简单。
编写代码
我在terraform文件夹中创建了一个名为example的文件夹。
由于terraform执行时会生成保存执行状态和依赖关系的文件,所以我创建了这个文件夹。
在example文件夹中创建了一个名为main.tf的文件。以下是main.tf的内容。
文件名只要拓展名是.tf就可以,没有限制。
access_key和secret_key的值都是xxxxxx,但你可以在AWS的管理控制台>右上角的用户名>安全凭据>用于CLI、SDK和API访问的AWS访问密钥中找到这些值,请输入你自己的值。(请勿与他人共享此值)
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
provider "aws" {
access_key = "xxxxxxxxxxxxxx"
secret_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
region = "ap-northeast-1"
}
resource "aws_instance" "example" {
ami = "ami-0c3fd0f5d33134a76"
instance_type = "t2.micro"
tags = {
Name = "example"
}
}
运行代码
可以使用 terraform apply 命令进行执行。
在执行过程中会显示 “Enter a value” 并进入等待输入的状态,输入 “yes” 后将开始创建 EC2。
(也可以使用 terraform apply –auto-approve 命令省略输入 “yes” 的选项)
C:\terraform\example> terraform apply
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_instance.example will be created
(省略)
Plan: 1 to add, 0 to change, 0 to destroy.
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 ←yesと入力
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed]
(省略)
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
确认
删除
我們確認已經完成了建立。
在忘記之前,請使用terraform destroy進行刪除。
請輸入與建立時相同的Enter a value,輸入yes。
C:\terraform\example> terraform destroy
aws_instance.example: Refreshing state... [id=i-075e0dc31836d8c17]
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
- destroy
(省略)
Plan: 0 to add, 0 to change, 1 to 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 ←yesと入力
aws_instance.example: Destroying... [id=i-075e0dc31836d8c17]
aws_instance.example: Still destroying... [id=i-075e0dc31836d8c17, 10s elapsed]
(省略)
Destroy complete! Resources: 1 destroyed.
在这里已经完成删除。
最后
由于确认作业的目的,因此它比较简单。你可以将生成的.tfstate文件保存到S3中,将main.tf文件分割,而不是将所有内容写在一起。同时,建议将提供者的访问密钥和秘密访问密钥等设置为变量。尽管有很多需要做的事情,请尝试一下。