MENU

terraform console、書く前に試せる電卓のような存在

.gitignore、ゼロから書かなくていい理由を説明する画像

おはようございます、YASUです。

これまでplan・apply・fmt・validate・destroy・importと、実際にAWSに影響するコマンドを中心に見てきましたが、今日は少し毛色の違うterraform consoleというデバッグ用のコマンドを紹介します。

目次

結論

terraform consoleは、実際にリソースを作ったり変更したりせず、コードの中の値や関数の動作を対話的に確認できる、いわば「電卓」や「お試し実行環境」のようなコマンドでした。複雑な式を書く前の動作確認に便利です。

使い方はとてもシンプル

terraform console

これを実行すると、対話モード(プロンプトが>に変わる状態)に入ります。ここに式や変数名を打つと、その場で評価結果が返ってきます。

> 1 + 1
2

> upper("hello")
"HELLO"

> var.instance_type
"t2.micro"

抜けるときはexitと入力するか、Ctrl+Dを押します。

なぜこれが便利なのか

Terraformのコードには、単純に値を書くだけでなく、条件分岐や関数を使った少し複雑な式を書く場面があります。

locals {
  environment_name = var.environment == "prod" ? "本番環境" : "検証環境"
}

こうした式が、意図した通りに評価されるか不安な時、わざわざplanapplyを実行して確認するのは手間ですし、下手をすると意図しない変更を実行してしまうリスクもあります。terraform consoleを使えば、このディレクトリの変数やlocalsの値を読み込んだ状態で、式だけを気軽に試せます。

実際に試してみる

terraform console
> var.environment
"dev"

> var.environment == "prod" ? "本番環境" : "検証環境"
"検証環境"

このように、実際のコード内で使っている変数の値を確認しながら、条件式の結果もその場でチェックできます。式が思った通りに動くか不安な時、実際にコードに組み込む前の「下書きの実験場」として使える、というイメージです。

よく使う関数の動作確認にも便利

Terraformには、文字列操作やリスト操作のための関数がいくつも用意されています。これらの動作を、実際のコードに書く前に確認できます。

> join(",", ["a", "b", "c"])
"a,b,c"

> length(["a", "b", "c"])
3

> lookup({a = 1, b = 2}, "a", 0)
1

関数の細かい挙動(区切り文字の扱い方、存在しないキーを指定した時の挙動など)を、ドキュメントを読むだけでなく実際に試して確認できるのは、地味に安心感があります。

安全性について

terraform consoleは、あくまで値を「読み取って評価する」だけのコマンドで、実際のAWSリソースには一切変更を加えません。以前紹介したfmtvalidateと同じく、安心して何度でも試せるコマンドの仲間です。ただし、tfstateの読み込みは行うため、リモートステートを使っている場合はその参照のための接続は発生します。

実務での使いどころ

複雑な条件分岐や、外部から取得したデータの整形(for式やjsonencodeなど)を書く際、いきなりコードに書いてplanで確認するより、先にconsoleで式の断片を試してから、コードに組み込むという順序で進めると、手戻りが減ります。以前紹介した「軽い確認から重い確認へ」という考え方(fmt/validate → plan → apply)に、このconsoleも仲間として加えられそうです。

まとめ

  • terraform consoleは、実際のリソースに影響を与えず、値や式を対話的に確認できるデバッグ用コマンド
  • 変数、locals、関数の動作を、コードに組み込む前に気軽に試せる
  • 複雑な条件式や関数を使う前の「お試し実行環境」として活用できる
  • fmt/validateと同様、安全に何度でも試せるコマンドの一つ

普段は完成したコードだけを見ていましたが、こうした「書く前に試す」ための道具があると知り、もっと気軽に複雑な式にも挑戦できそうだと感じました。それでは、また明日!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次