Terraform / HCL スタジオ(Terraform Studio)

.tf(HCL)を貼るか複数ファイルをドロップすると、resource・variable・module・provider の一覧を表示し、password などへの文字列の直書き、0.0.0.0/0 からの SSH・RDP、provider と module のバージョン未固定、未定義の var.・local.・module. の参照、重複した定義を行番号つきで指摘します。HCL の整形もできますが、terraform fmt と完全に同じ結果にはなりません。plan や apply は行いません。Kubernetes の YAML は Kubernetes スタジオ、CI の設定は GitHub Actions スタジオを使ってください。

端末内で処理・アップロードなしスマホ対応オフライン対応

ファイルや入力内容はお使いの端末(ブラウザ)の中だけで処理され、サーバーへは送信されません。

貼り付けた・ドロップした .tf は端末の中だけで処理し、サーバーへ送らず保存もしません。plan・apply・state の読み込みと、provider のスキーマの検証はしません。

.tf ファイルをドロップ(複数可)

または

1 ファイル 300 KB まで、30 ファイルまで。内容は送信されません。貼り付け(Ctrl+V)にも対応
.tf を貼り付けるか、ファイルをドロップすると、ブロックの一覧と指摘が出ます。

使い方

  1. main.tf

    .tf を貼る(複数可)

  2. ブロックと指摘行番号つき

    構成の一覧と指摘

  3. main.tf(整形後)字下げと = を揃える

    整形して保存

.tf を貼り、構成と指摘を確かめ、整形して保存する流れ
  1. .tf を貼り付けるか、ファイルをドロップします(複数可。「ファイルを選択」でも可)。「サンプルで試す」でも動作を確認できます。

  2. 「構成」で、ブロックの一覧と、変数(型・既定値・sensitive)、モジュールの source と version、プロバイダの version を確かめます。

  3. 「指摘」で重要度つきの一覧を見ます。ファイル名と行番号が付き、秘密らしい値そのものは表示しません。変数が別のファイルにあるときは、そのファイルも入れてください。

  4. 「整形」で字下げと = の位置を揃えた .tf をコピー・保存できます。構文エラーがあるときは整形しません。

できること

自前の HCL 解析

文字列の ${ } の補間、<<EOT と <<-EOT のヒアドキュメント、# と // と /* */ のコメント、リスト、オブジェクトを読みます。解析できない箇所は、行番号つきで示します。

根拠のある指摘だけ

秘密らしい名前の属性への文字列の直書き、sensitive のない秘密らしい変数、バージョン未固定、aws_security_group などの 0.0.0.0/0 からの 22・3389、S3 の public-read 系 ACL、未定義の参照、重複を確かめます。

秘密の値は画面に出さない

指摘には属性の名前だけを出し、直書きされた値は出しません。変数の表の既定値も、秘密らしい名前の変数では伏せます。「整形」の結果は .tf をそのまま整えるので、値も含まれます。

terraform fmt に近い整形

字下げを 2 空白に揃え、連続した 1 行の属性の = を揃えます。ヒアドキュメントの中は変えません。terraform fmt と完全に同じではありません。

複数ファイルをまとめて確認

main.tf と variables.tf など、複数のファイルをまとめて読みます。変数・ローカル値・モジュールの定義をファイルの間で突き合わせます。

こんなときに

  • password や access_key などの秘密を .tf に直接書いていないか、コミットの前に確かめたい
  • セキュリティグループが 0.0.0.0/0 から SSH・RDP を許していないか確かめたい
  • provider と module のバージョンが固定されているか、一覧で確かめたい
  • terraform を動かせない環境で、HCL の構文エラーの行を見つけたい

対応状況

機能対応補足
.tf(HCL)の読み取り・ブロックの一覧(複数ファイル)対応—
秘密の直書き・sensitive・バージョン未固定の確認一部対応名前と形で判定する項目だけです。見つからなくても安全とは言えません
aws_security_group などの 0.0.0.0/0 からの SSH・RDP、S3 の ACL一部対応AWS の一部のリソースだけです。変数で指定したポートは判定しません
未定義の var.・local.・module. の参照と、重複した定義対応—
字下げと = の位置の整形一部対応terraform fmt と完全に同じ結果にはなりません
plan・apply・state ファイルの読み込み非対応実行も state の読み込みもしません
provider のスキーマ(属性名・型)の検証非対応属性名の誤字や型の誤りは指摘しません
.tf.json(JSON 形式)・.tfvars の検証非対応.tf と同じ書き方のテキストだけを読みます

制限・注意事項

  • 入力は合計 400,000 文字まで、30 ファイルまで、1 ファイル 300 KB までです。超えた分は読み止めて通知します。
  • provider のスキーマを持たないので、属性名の誤字・必須の属性の不足・値の型の誤りは指摘しません。
  • 指摘は書かれた文字列と名前から判定します。変数や関数で組み立てた値、別のモジュールの中は追いません。
  • 未定義の参照は、貼った範囲の中だけで探します。構文エラーがあるときは確認しません。

プライバシーと安全性

貼り付けた .tf やドロップしたファイルはお使いの端末の中だけで処理され、サーバーへ送信・保存されることはありません。ブラウザに保存もしません。使用状況の記録にも内容やファイル名は含めません。

よくある質問

terraform fmt と同じ結果になりますか?
完全には同じになりません。このツールは字下げを 2 空白にし、連続した属性の = を揃えますが、コメントや式の細かい整え方は terraform fmt と異なることがあります。リポジトリへ入れる前は terraform fmt を使ってください。
0.0.0.0/0 から SSH を許すと何が問題ですか?
インターネット上のどこからでも 22 番ポートに接続を試せる状態になります。踏み台のアドレスや自社のアドレス範囲に絞るのが一般的です。このツールは、そのような書き方をした行を指摘します。
sensitive = true にすれば秘密は安全ですか?
plan などの画面表示では値が伏せられますが、state ファイルには平文で残ります。公式のドキュメントでも state の保護が必要とされています。このツールは sensitive の有無だけを確かめます。
provider のバージョンはどう固定しますか?
terraform ブロックの required_providers で、source と version を書きます。例えば ~> 5.0 は 5.0 以上 6.0 未満です。.terraform.lock.hcl は実際に選ばれた版を記録しますが、このツールはロックファイルを読みません。
未定義の参照が出るのに、実際は定義してあります。
別のファイルで定義しているときは、そのファイルも一緒に入れてください。このツールは貼った範囲の中だけで探します。

Kubernetes マニフェスト スタジオ(Kubernetes Studio)

Deployment・Service などの YAML を貼ると、リソースの一覧と Service がどの Deployment の Pod に当たるかを表示し、廃止された apiVersion、latest タグ、requests・limits の不足、privileged などの設定を行番号つきで指摘します。スキーマの完全な検証はしません。クラスタへ適用する前の目視確認の補助です。

アップロードなし

GitHub Actions ワークフロー確認(GitHub Actions Studio)

ワークフローの YAML を貼ると、on(トリガー)、needs の依存の順に並んだジョブ、各手順の uses と run を表示します。利用者が書ける値を run に直接展開した箇所(スクリプト注入)、タグ・ブランチで指定された action、permissions の無いジョブなどを行番号つきで指摘します。完全なスキーマの検証や実行はしません。

アップロードなし

.env スタジオ(.env Studio)

.env を貼る・ドロップすると、キーと値を表で確認でき、重複・空の値・書式の誤りを行番号つきで指摘します。値は既定で伏せ、.env と .env.example を比べたり、.env.example・Kubernetes の Secret に書き出したりできます。.env の書き方(dotenv 形式)を確かめたいときに使い、docker compose の変数展開などツール固有の細かい仕様までは判定しません。

アップロードなし

lockfile 比較・依存関係ツリー

2 つの lockfile を比べて、どのパッケージが追加・削除・更新されたかを表示します。あるパッケージがなぜ入っているか(入ってくる経路)と、同じパッケージの複数バージョンも分かります。ファイルはブラウザの外へ出ません。

アップロードなし

Docker Compose Studio

docker run のコマンドを compose.yaml に、compose.yaml を docker run に変換します。compose.yaml は構文・Compose Specification・よくある誤りを調べ、セキュリティ上の確認点も一覧にします。コンテナの起動やイメージの取得はせず、入力は端末の外へ送りません。

アップロードなし

Dockerfile Studio

Dockerfile を貼り付けると、構文・ステージ・よくある誤りを調べ、秘密らしい値や curl | sh などの確認したい点を一覧にします。整形と、Node.js・Python・Go・静的サイト・Java の雛形の生成もできます。ビルドはせず、入力は端末の外へ送りません。

アップロードなし

最終更新: