准备使用Terraform和备忘录在WSL(Ubuntu)中

使用WSL2的Ubuntu进行Terraform操作。

环境

image.png

前提是指所需我们做某事的条件或基础。

    • Windowsがインターネットに接続できていること

 

    • WSLにUbuntuをインストール済であること

 

    • Ubuntu-20.04

 

    AWSでIAMユーザのシークレットが払い出されていること

做法

准备好WSL。

    Powershellを開く

 

    • powershell:コンソールログ記録(新規)

 

    Teratermログのようなコンソールの記録を取るばあい、Powershellではこうする。
Start-Transcript -Path 保存先パス\ログファイル名.log

 

    powershell:WSLリスト表示
wsl -l -v

  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

确认Ubuntu已经被选中,然后继续。

    powershell:WSL実行
wsl


Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Thu Apr  6 15:17:53 JST 2023

  System load:  0.61               Processes:             9
  Usage of /:   1.2% of 250.92GB   Users logged in:       0
  Memory usage: 3%                 IPv4 address for eth0: 172.22.233.133
  Swap usage:   0%

0 updates can be applied immediately.

The list of available updates is more than a week old.
To check for new updates run: sudo apt update

This message is shown once a day. To disable it please create the
/home/USER/.hushlogin file.

运行后,提示符将从PowerShell中的“>”变为Ubuntu的“$”,进入了Ubuntu的shell会话。

安装AWS CLI

    powershell(Ubuntu):AWSCLIインストール
$ sudo apt install awscli

 

(固定:下次起,AWS凭证持续输入)

    powershell(Ubuntu):環境変数にIAMユーザのシークレットとリージョンを投入
$ export AWS_ACCESS_KEY_ID=AKXXXXXXXXXXXXXXXXXX
$ export AWS_SECRET_ACCESS_KEY=XXXX!!XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
$ export AWS_DEFAULT_REGION=ap-northeast-1

※使用 exit 等命令登出、重启操作系统等,会导致该环境变量被删除。需在再次登录时重新执行该命令。

    powershell(Ubuntu):AWSのクレデンシャルを登録
$ aws configure
AWS Access Key ID [None]: ${AWS_ACCESS_KEY_ID}
AWS Secret Access Key [None]: ${AWS_SECRET_ACCESS_KEY}
Default region name [None]: ${AWS_DEFAULT_REGION}
Default output format [None]: text

在退出或者重新启动操作系统后,再重新执行这个操作。

    powershell(Ubuntu):AWSアカウントのクレデンシャル確認
$ aws sts get-caller-identity --query Account --output text

※执行退出等操作后,重新启动操作系统,并执行此命令。如果显示AWS的账户ID,则表示顺利。

安装各种工具

    powershell(Ubuntu):requiredパッケージのインストール
$ sudo apt-get install build-essential procps curl file git

 

    powershell(Ubuntu):Homebrewのインストール
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

    powershell(Ubuntu):Homebrewのパスを追加
$ test -d ~/.linuxbrew && PATH="$HOME/.linuxbrew/bin:$HOME/.linuxbrew/sbin:$PATH"
$ test -d /home/linuxbrew/.linuxbrew && $ PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH"
$ test -r ~/.bash_profile && echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.bash_profile
$ echo "export PATH='$(brew --prefix)/bin:$(brew --prefix)/sbin'":'"$PATH"' >>~/.profile

 

    powershell(Ubuntu):Homebrewのパスが通っているかの確認でバージョンを確認
$ brew --version

Homebrew 3.4.11

 

安装与Terraform相关的软件

    powershell(Ubuntu):tfenvインストール
$ brew install tfenv

==> Downloading https://ghcr.io/v2/homebrew/core/bzip2/manifests/1.0.8-1
######################################################################## 100.0%

 

    powershell(Ubuntu):tfenvインストール確認
$ tfenv --version

tfenv 2.2.3

 

    powershell(Ubuntu):terraformバージョン確認
$ tfenv list-remote

1.2.0-rc2
1.2.0-rc1
1.2.0-beta1
1.2.0-alpha20220413
1.2.0-alpha
1.1.9
1.1.8
・・・
・・・

 

    • powershell(Ubuntu):terraformバージョン指定インストール

 

    この場合、「0.12.5」バージョンを選択してインストールしている。
$ tfenv install 0.12.5

Installing Terraform v0.12.5
Downloading release tarball from https://releases.hashicorp.com/terraform/0.12.5/terraform_0.12.5_linux_amd64.zip

 

    • powershell(Ubuntu):terraformバージョン指定

 

    この場合、「0.12.5」バージョンを指定
$ tfenv list
$ tfenv use 0.12.5
$ tfenv list
$ terraform -v

Terraform v0.12.5

Your version of Terraform is out of date! The latest version
is 1.1.9. You can update by downloading from www.terraform.io/downloads.html

 

Terraform: 创建资源

    powershell(Ubuntu):リソース作成用ディレクトリ作成、カレントディレクトリ移動
$ mkdir example
$ cd example
$ pwd

 

    powershell(Ubuntu):Terraformメインファイルの作成
$ touch main.tf

 

    powershell(Ubuntu):Terraformメインファイルの編集
$ nano main.tf
provider "aws" {
  region  = "ap-northeast-1"
  version = "4.22.0"
}

区域名称和提供商版本可随意更改。

    powershell(Ubuntu):(初回のみ)Terraform init リソース作成用バイナリダウンロード、初期化
$ pwd
$ terraform init

在这种情况下,请通过在example目录中进行init操作来完成。为此,通过pwd命令来检查当前目录。

    • エディタnanoで良い感じにtfファイル、つまりリソースを書いていく。

 

    ある程度ソースコード(.tfファイル)にリソースを書いたら、それをAWSに適用する。

 

    • powershell(Ubuntu):Terraform plan リソース実行計画

 

    • Dry-Runとなる。ここでエラーやWarnが出たら、ソースコードを適宜修正する。

 

    ここでもexampleディレクトリがカレントなのを確認するためpwdしている。
$ pwd
$ terraform plan

 

    • powershell(Ubuntu):Terraform apply リソース作成

 

    • 実際にリソースをクラウドへ作成する。失敗が許されない部分。

 

    いろいろリソースが表示された後、yes noが出るので、yesでEnterする。
$ pwd
$ terraform apply

yes

 

    • powershell(Ubuntu):Terraform tfstate リソース状態ファイル確認

 

    リソースの状態がここに記載されるため、軽くチェックする。
$ pwd
$ cat terraform.tfstate

 

    • powershell(Ubuntu):Terraform destroy リソース削除

 

    • リソースを削除する。リソースをすべて消すので注意する。

 

    • なお、ソースコードは消されない。あくまでもリソースが消える。

 

    いろいろリソースが表示された後、yes noが出るので、yesでEnterする。
$ pwd
$ terraform destroy

yes

 

完成作业

    powershell(Ubuntu):Ubuntuからログアウト
$ exit

在Ubuntu操作系统中,提示符由“$”变为PowerShell中的“>”。

    • powershell:コンソールログ終了

 

    取ってたログを止める。
Stop-Transcript

 

请提供更多的上下文或要求,以便我可以给出相应的中文翻译。

    UbuntuにHomebrewをインストール

 

    Ubuntu18.04LTSにlinuxbrew(linux版homebrew)を入れる

 

    • 実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing))

 

    具体的なTerraformのソースコードの書き方はこの本がとってもおすすめ。