使用AWS Cloud9建立Terraform环境(用于学习目的)

首先

这是我第一次投稿的文章!!

在学习Terraform过程中,考虑到第三方IDE可能会让密钥设置等变得复杂,我首先尝试了AWS Cloud9,它简单方便,可以快速设置环境进行实验。

“Cloud9” 是什么意思?

AWS Cloud9 是一个基于云的集成开发环境(IDE),可以在浏览器上进行代码编写、执行和调试。
您可以在浏览器中创建、执行和调试应用程序,无需安装或维护本地IDE。

作为缺点,它可能没有其他集成开发环境(IDE)中具备的便利功能,但我认为它对于学习来说已经足够了。

在本篇文章中所要进行的内容

    1. 云9的创建/访问

 

    1. 安装/确认安装Terraform和tfenv

 

    1. 创建用于tf.state文件的S3存储桶

 

    1. 创建Terraform执行文件

 

    1. 创建/执行tf文件

 

    删除通过tf文件创建的资源

<步骤>

1. 创建/访问Cloud9

请点击下方链接访问:https://ap-northeast-1.console.aws.amazon.com/cloud9control/home?region=ap-northeast-1#/product,并点击“创建环境”。

ap-northeast-1.console.aws.amazon.com_cloud9control_home_region=ap-northeast-1 (0).png
ap-northeast-1.console.aws.amazon.com_cloud9control_home_region=ap-northeast-1 (1).png
ap-northeast-1.console.aws.amazon.com_cloud9control_home_region=ap-northeast-1 (2).png

安装和确认版本的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中。

s3.console.aws.amazon.com_s3_get-started_region=ap-northeast-1 (1).png

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ファイルはここで作成される
ap-northeast-1.console.aws.amazon.com_ec2_home_region=ap-northeast-1.png

用tf文件删除创建的资源

我們將刪除此次創建的資源。

# 削除するリソースの確認
$ terraform plan -destroy

# リソースの削除
$ terraform destroy

当我再次通过控制台确认时,我认为EC2已经被删除了。另外,由于S3是手动创建的,所以存储的tfstate文件仍保持原样。

如果有任何错误的认识,请指正,我会非常高兴。

广告
将在 10 秒后关闭
bannerAds