無料ツール
Terraform を図に変換
Terraform の .tf ファイルや terraform show -json の出力を貼り付けると、編集できる構成図になります。VPC、サブネット、リソースグループは枠に、リソースはカードに、参照は接続線になります。試すだけならアカウントは不要です。
出力例
使い方
Terraform を貼り付けるかドロップ
.tf ファイル 1 つ、同じモジュールの複数ファイル、または保存したプランや state について terraform show -json が出力する JSON を使えます。terraform init は不要です。
構成図を確認
各リソースは、コンピュート、データベース、キューなど種類ごとのカードになります。ネットワーク、サブネット、リソースグループは、その中に配置されたリソースを囲む枠になります。
Archboard で開く
新しい図として保存すれば、カードの配置変更、メモの追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。
Terraform コードから描かれるもの
図は構成内の次のブロックと引数から作られます。
resourcedataリソースを種類ごとのカードとして描きます。aws_lb_target_group_attachment のようなつなぎ役のリソースは接続線に、aws_s3_bucket_versioning のような設定用のリソースはバケットのカードに折りたたまれます。data ソースは、中にリソースが配置されない限り省略されます。
depends_onあるリソースから別のリソースへの参照(aws_iam_role.app.arn など)ごとに接続線を描きます。文字列、ヒアドキュメント、locals の中の参照も対象です。depends_on は破線の接続線を追加します。ただし、2 つのリソースがすでに参照でつながっている場合や、参照先が time_sleep のように表示しない補助リソースの場合は追加しません。
vpc_idsubnet_idvpc_id と subnet_id による配置。1 つのサブネットにあるリソースはそのサブネットの中に、VPC の複数のサブネットにまたがるリソースは VPC の枠に入り、Azure のリソースはリソースグループの中に入ります。
modulesource各 module ブロックをカードとして描きます。terraform-aws-modules/vpc/aws、eks、rds などのよく知られた Registry モジュールは、作成するネットワーク枠、クラスター、データベースとして描かれ、VPC モジュールのサブネットを使うリソースはその枠の中に入ります。
resource_changesプランの JSON では、各リソースのカードにプランが行う変更が表示されます。+ は作成、~ は更新、− は削除、± は置き換えです。プランで変更されないリソースには印が付きません。VPC やサブネットなどの枠と、カードに折りたたまれた設定用のリソースにも印は付きません。
awsazurermgoogleAWS、Azure、Google Cloud のリソースを描き、複数のプロバイダーを使っていれば 1 つの図にまとめます。専用カードのない種類は、リソースの種類を表示する汎用カードになります。
Terraform プランの可視化
プランの JSON を使うと最も完全な図になります。count と for_each は実際のインスタンス数になり、モジュールは中のリソースまで展開され、リソースのカードに予定された変更の印が付きます。ふだん terraform plan を実行する場所で次の 2 つのコマンドを実行し、JSON を貼り付けてください。
プランを作成して plan.out に保存します。何も適用しません。
terraform plan -out plan.out保存したプランを JSON で出力します。出力を貼り付けるか、plan.json にリダイレクトしてそのファイルをここにドロップしてください。
terraform show -json plan.out
Terraform の構成図に含まれないもの
- 変数と locals の値、.tfvars ファイル、tags、user_data などの属性値。カードには bucket や function_name のような固定の名前、なければコード上のリソース名が付きます。
- .tf ファイルでの count と for_each の展開。構成は評価されないため、count = 3 のリソースは ×3 の付いた 1 枚のカードに、for_each のリソースは ×N の付いたカードになります。実際のインスタンス数を見るにはプランの JSON を貼り付けてください。
- リモートモジュールの中身。Registry や Git のモジュールはダウンロードしません。よく知られたモジュール以外は 1 枚のカードのままで、中のリソースはプランの JSON で表示されます。
- クラウドの実際の状態、ドリフト、コスト、実行時にどのサービスがどのサービスを呼び出しているか。図が表すのは構成がリソースをどうつないでいるかで、トラフィックではありません。
Terraform の構成図についての質問
.tf ファイルとプランの JSON、どちらを貼り付けるべきですか?
.tf ファイルはコードの形をすぐに見られる一番手軽な方法で、事前に何かを実行する必要もありません。プランの JSON は Terraform が解決済みなので、より完全です。インスタンス数は実際の値になり、モジュールは展開され、リソースのカードに予定された変更が表示されます。ざっと見るなら .tf、変更をレビューするならプランの JSON を使ってください。
複数の .tf ファイルをまとめて追加できますか?
はい。複数の .tf ファイルやモジュールのフォルダーごとドロップすると、Terraform がディレクトリ内のすべての .tf ファイルを読むのと同じように、まとめて読み取ります。ファイルを続けて入力欄に貼り付けることもできます。プランや state ファイルなどの JSON は、1 ファイルずつ読み取ります。
どのクラウドプロバイダーに対応していますか?
AWS、Azure、Google Cloud です。よく使われるリソースの種類は、コンピュート、関数、データベース、キュー、ロードバランサー、DNS などのカードに対応し、ネットワーク、サブネット、リソースグループは枠になります。Kubernetes と Helm のリソースは汎用カードになり、random、time、null_resource などのユーティリティプロバイダーは表示しません。
Terraform の state を可視化できますか?
はい。現在の state について terraform show -json の出力を貼り付けるか、terraform.tfstate ファイルをそのままドロップしてください。図にはリソースの種類、名前、依存関係が表示され、sensitive と指定された名前はコード上のリソース名に置き換わります。.tfvars ファイルは変数の値しか含まないため、受け付けません。
図を Archboard で開くとどうなりますか?
このページのプレビューは保存されません。「Archboard で開く」を選ぶと、表示されている図(カード、枠、名前、接続線)がワークスペースに新しい図として保存され、配置の変更、注釈の追加、共有、エクスポートができます。あくまで出発点なので、後から Terraform のコードを変更しても図は更新されません。
Terraform の可視化ツールは無料ですか?
はい。Terraform のコードを貼り付けて図を見るだけならアカウントは不要です。Archboard で開くには無料アカウントが必要です。