使用AWS Cloud9建立Terraform环境(用于学习目的)
首先
这是我第一次投稿的文章!!
在学习Terraform过程中,考虑到第三方IDE可能会让密钥设置等变得复杂,我首先尝试了AWS Cloud9,它简单方便,可以快速设置环境进行实验。
“Cloud9” 是什么意思?
AWS Cloud9 是一个基于云的集成开发环境(IDE),可以在浏览器上进行代码编写、执行和调试。
您可以在浏览器中创建、执行和调试应用程序,无需安装或维护本地IDE。
作为缺点,它可能没有其他集成开发环境(IDE)中具备的便利功能,但我认为它对于学习来说已经足够了。
在本篇文章中所要进行的内容
-
- 云9的创建/访问
-
- 安装/确认安装Terraform和tfenv
-
- 创建用于tf.state文件的S3存储桶
-
- 创建Terraform执行文件
-
- 创建/执行tf文件
- 删除通过tf文件创建的资源
<步骤>
1. 创建/访问Cloud9
请点击下方链接访问:https://ap-northeast-1.console.aws.amazon.com/cloud9control/home?region=ap-northeast-1#/product,并点击“创建环境”。
安装和确认版本的Terraform/tfenv。
Cloud9已默认安装了Terraform。
#利用中のTerraformのバージョン確認
$ terraform -v
Terraform v1.5.5
on linux_amd64
接下来安装tfenv。tfenv是一个用于管理Terraform版本的工具。如果在多个项目中使用不同的版本,则需要进行版本管理。虽然可以不使用tfenv来安装Terraform,但是使用tfenv可以更轻松地切换版本。
#tfenvのインストール
$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv
#パスを通す
$ sudo ln -s ~/.tfenv/bin/* /usr/local/bin
#tfenvのバージョン確認
$ tfenv -v
tfenv 3.0.0-18-g1ccfddb
现在我们已经成功安装了Tenv,让我们尝试切换Terraform的版本。
#Terraformのインストール可能なバージョンの確認
$ tfenv list-remote
#Terraformのインストール
$ tfenv install 1.3.7
#Terraformのインストール済みのバージョンの確認
$ tfenv list
#利用するTerraformのバージョンを指定
$ tfenv use 1.3.7
让我们确认一下版本是否已更改。
※如果版本没有改变,请重新启动终端。
#利用中のTerraformのバージョン確認
$ terraform -v
Terraform v1.3.7
on linux_amd64
创建一个用于存储tf.state文件的S3存储桶。
tfstate文件是Terraform用来管理资源当前状态的文件。在下一次应用时,Terraform将参考前一次应用的结果,并将任何更改的状态反映到tfState文件中。
当tfstate文件被删除后,由Terraform创建或删除的资源将无法部署或删除,因为无法引用状态。
因此,tfstate文件的管理非常重要。
为了避免意外使用terraform destroy命令删除,本次将手动创建并存储在S3中。
4. 创建terraform执行文件
我将创建用于执行terraform的tf文件。
#作業用ディレクトリの作成
$ mkdir terraform && cd terraform
#実行ファイルの作成
$ touch backend.tf // tf.stateの置き場所を指定
$ touch provider.tf // AWSのプロバイダーを指定
$ touch ec2.tf // EC2インスタンスの設定を指定
我会逐步添加已创建的tf文件的内容。
#tfstateファイルをS3に配置する
terraform {
backend s3 { /*s3←デフォルトはlocalに配置される */
bucket = "tfstate20230821"
region = "ap-northeast-1"
key = "tf-test.tfstate" /*拡張子が.tfstateであればファイル名は任意*/
}
}
#AWSプロバイダーの定義
provider aws {
region = "ap-northeast-1"
}
#EC2の作成
resource aws_instance ec2 {
ami = "ami-0bba69335379e17f8"
instance_type = "t2.micro"
tags = {
Name = "tf-test"
}
}
5. 创建/执行tf文件
执行Terraform命令,上传tfstate文件并部署EC2实例。
# インデント調整
$ terraform fmt
# 環境の初期化
$ terraform init
# 変更内容の確認
$ terraform plan
# 変更予定内容を反映し、インフラ環境を構築する。
$ terraform apply //tfstateファイルはここで作成される
用tf文件删除创建的资源
我們將刪除此次創建的資源。
# 削除するリソースの確認
$ terraform plan -destroy
# リソースの削除
$ terraform destroy
当我再次通过控制台确认时,我认为EC2已经被删除了。另外,由于S3是手动创建的,所以存储的tfstate文件仍保持原样。
如果有任何错误的认识,请指正,我会非常高兴。