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 apply
Do 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.0
Latest Version ってあるな
- 続けたいが,時間がないので今日はここまで *