准备使用Terraform和备忘录在WSL(Ubuntu)中
使用WSL2的Ubuntu进行Terraform操作。
环境
前提是指所需我们做某事的条件或基础。
-
- 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のソースコードの書き方はこの本がとってもおすすめ。