Terraform
https://gyazo.com/a4d2b4dfb0c6d8eb6e0134020aac9672
HashiCorpが64億ドルでIBMに買収された
概要
クラウドのリソースを宣言的に定義できる
tfファイルとtfstateの差分から新規作成 or 変更 or 削除を自動で判断してリソースを作成してくれる
hiroki.iconterraformのバージョン管理はtfenvで行うと便利
importではtfstateで取り込んでくれるだけなので、そこから自力でresourceを定義していかなきゃいけない
→terraformerなら一気にresourceファイルに起こしてくれる
条件分岐が存在しない
countと三項演算子を組み合わせて分岐可能
stg環境だけsubnet数を増やしてほしい、みたいな
良くあるファイル構成
main.tf
output.tf
variables.tf
terraform.tfvars
ステージング環境の作り方
count/三項演算子でリソースの作成を制御する
リソース毎にめちゃくちゃ書きまくる事になって大変な事になる
本質的に不必要な情報で溢れる
本番と同じ環境をステージングスペースで作成して、本番スペースにも適用する
hiroki.iconまぁこれも銀の弾丸じゃないけど
練習
コマンド
terraform cloudログイン
terraform login
初期化
terraform init
プロバイダのバージョンアップ
terraform init -upgrade
実行計画をみる(ドライラン
terraform plan
terraform plan --parallelism=30
リソースを作成する
terraform apply
作成したオブジェクトを確認する
terraform show
outputで定義した情報だけ確認できる
hiroki.icon確認したい情報をoutput.tfとかに定義しておけばこのコマンドで重要な情報をさくっと確認できる
terraform output
リソースを全て削除する
terraform destroy
tf設定ファイルのフォーマットを整えてくれる
terraform fmt -recursive
tfファイルの設定をチェックしてエラーを報告
terraform validate
コンソールでリソースの状態を確認する
code:terraform
terraform console
google_service_account.capi_cf_service_account
実体の内容に沿って状態だけを更新する。実体が更新されることはない
terraform apply -refresh-only
構文
provider
使用するプロバイダーを指定する
terraform
terraformのバージョンやtfstateを保存するbackendの設定など
data
外部データを参照できる
data.プリフィックスで参照できる
${data.aws_ami.hoge.id}
resource
デプロイしたいリソースを定義する
output
自分が確認したい情報だけを定義する
hiroki.icon作成されるリソースの情報は莫大になるから、出力して確認したい属性だけを列挙する
module
再利用可能にまとめたやつ
/icons/point.icon一連のresourceは別ディレクトリに分離していなければいけない
hiroki.iconトップレベルで定義しているtfも実はルートモジュールというモジュールである
variable
変数を定義
hiroki.iconモジュールへ値を渡すための要素であるんだよねー
var.をプリフィックスにつけることで変数にアクセスできる
var.hoge, ${var.hoge}
その他
参照
久しぶりにterraformを触る時にさらっと舐めると一気に記憶がよみがえる