0908
LOGS
terraform(1章)の続き
- AWS のマネコンから Access Key を持ってくるところから
AddministratorAccessポリシーがアタッチされているもの- これは先日払い出している
 
- で,これを持って 
aws configureコマンドを実行 AWS Access Key IDとAWS Secret Access Keyがあって,おそらく後者に設定するんだろうが,前者は何?- わからんので,とりあえずテキトーに設定してみる
- region name はもちろん東京リージョン(
ap-northeast-1) - output format はなんもなし
 
 - region name はもちろん東京リージョン(
 > aws sts get-caller-identityを実行- もちろんエラー
 
- うん,わからん
 - ので,もっかい作り直す…と思ったら,csv ファイルもダウンロードしてたやん
- ちゃんと手元のシークレットディレクトリ(名前は秘密)においてた
 - と思ったが,多分これじゃないわ
 - やっぱ作り直す
 - 作り直して気付いたが,参照する csv ファイルを間違えてたわ
 
 - よーし,通った
 
 > terraform planを実行- お,エラーなくなった
 
> terraform applyDo you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes- エンターをたっーん! ``` aws_instance.hello: Creating... aws_instance.hello: Still creating... [10s elapsed] aws_instance.hello: Creation complete after 13s [id=i-0cdca69978ab4596b]
 
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. ```
- マネコンアクセス,インスタンスない
 - あ,リージョンがちげーわ
 - よしよし,できた
 
Nameタグを追加main.tfのrecourceに以下を追記
resource "aws_instance" "hello" { ami = "ami-0701e21c502689c31" instance_type = "t2.nano" + + tags = { + Name = "hello" + } }> terraform plan,> terraform applyを実行yesを入力- よしよし,成功
 - マネコンからも 
Nameにhelloが設定されていることも確認 
続いて,
amiを変更- 要はリソースの再作成をする
 - 値は長いので割愛(リポジトリのコードを見て)
 
aws_instance.hello: Destroying... [id=i-0cdca69978ab4596b] aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 10s elapsed] aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 20s elapsed] aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 30s elapsed] aws_instance.hello: Still destroying... [id=i-0cdca69978ab4596b, 40s elapsed] aws_instance.hello: Destruction complete after 40s aws_instance.hello: Creating... aws_instance.hello: Still creating... [10s elapsed] aws_instance.hello: Creation complete after 13s [id=i-00e4893ced35a5f26] Apply complete! Resources: 1 added, 0 changed, 1 destroyed.- なるほど.変更というが,過去のものは削除し,新しく作るのね
 > terraform planのラストの1 to destroy.の部分が大事
では,今後は意図的にリソースを削除する
> terraform destroyを実行- おー.
planを実行したときのように確認がちゃんとでる 
aws_instance.hello: Destroying... [id=i-00e4893ced35a5f26] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 10s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 20s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 30s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 40s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 50s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m0s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m10s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m20s elapsed] aws_instance.hello: Still destroying... [id=i-00e4893ced35a5f26, 1m30s elapsed] aws_instance.hello: Destruction complete after 1m31s Destroy complete! Resources: 1 destroyed.- 削除完了
 - ちなみに削除途中は,インスタンスの状態が 
シャットダウンとなる 
- コードフォーマット
terraformコマンドにフォーマットのコマンドも用意されているのか!> terraform fmt -recursive- へー.サブディレクトリも見てくれるのか.便利.
 
 - また,
terraformコマンドは.tfという拡張子のファイルはすべて認識するので,長くなったら分割しませう ※1 学習用に作ったリソースや一時的なものは,不要になったタイミングで適宜削除しましょう.不要な請求を避けるために. ※2 クレデンシャルはコミットしない.公開は危険. 
- AWS のマネコンから Access Key を持ってくるところから
 terraform(2章)
- EC2 インスタンス上で web サーバーを起動,テストページを閲覧できるような環境を Terraform で作る
 - そのためには,いくつかのリソースが必要らしい
- VPC(10.0.0.0/16)
 - パブリックサブネット(10.0.0.0/24)
 - インターネットゲートウェイ
 - EC2
 
 - 利用するクレデンシャルの profile 名は 
defaultを想定 - Terraform で良く使われるファイル名
main.tf基本設定を記述する定義ファイルvariables.tf文字通り,変数を定義するファイルoutputs.tf実行後に出力される変数を定義するファイル{リソース名}.tfファイル名事にサービスを分けて定義するファイル
 - 今までと違ったブロックが突然出てくるので,ちゃんとhashicorpの Terraform 公式サイトに行って,記法を見たほうが良さそうだな
- とは言え,サンプルを見てたら,まぁ読めばわかるっちゃわかる
 hashicorp/awsを利用するらしいが,書籍のバージョンだとかなり古く,公式サイト を見ると,最新は5.66.0だが,これで続けて行って大丈夫かなぁ- だめだったらバージョンは古いもので揃えてやろう
 
 - 今回は 
defaultという profile を使うので,またinitから- 実行後に,
.terraformディレクトリを見る .terraform/providers/registry.terraform.io/hashicorp/aws/5.66.0/ができている
 - 実行後に,
 - プロバイダのバージョンアップも比較的頻繁らしいので,常に公式の registry サイトを見て見るのが良いと
 
resource "リソース種別" "リソース名" { 項目 = オプション }- リソース種別を先程のサイトから見てみる
- https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
 - うむ.ちゃんと 
Version 5.66.0Latest Version ってあるな 
 - 続けたいが,時間がないので今日はここまで *