コンテキストを組み立て直さずに Terragrunt ユニットを実行

Terragrunt の構造は Git に保存します。ディレクトリ、ワークスペース、入力を Semaphore に保存し、各操作の plan と実行の手順をチームに分かりやすく提供します。

このコマンドはどのインフラユニットに影響しますか?

Terragrunt リポジトリでは、開始ディレクトリと引数が対象範囲を決めます。覚えているコマンドだけでは、ほかの人に操作を引き継げません。

ユニットと入力をジョブの一部に

  • terragrunt.hcl を含むディレクトリを保存
  • ワークスペースと Terraform または OpenTofu のランタイムを選択
  • タスク出力で対象のユニットを確認

Terragrunt の操作を繰り返しやすく

1 つのインフラユニットを plan

ネットワーク、データベース、アプリケーションのユニットをテンプレートの対象にします。plan を開始する前に、その範囲を明確にします。

準備済みジョブを共有

複数環境で同じリポジトリを再利用

環境ごとのディレクトリと変数グループに対応する名前付きテンプレートを作成します。共有設定は Git に保存します。

準備済みジョブを共有

広範囲のインフラ変更を連携

使用する Terragrunt バージョンが対応する複数ユニット用の引数を設定します。Terragrunt がモジュールの依存関係を評価し、Semaphore がタスク出力を記録します。

ワークフローでジョブを接続

Terragrunt ユニットを選び、プランを確認

Terragrunt のロールアウトからサービスの準備完了まで

モジュールの依存関係は Terragrunt に保持します。ワークフローでその出力を Ansible の設定へ渡し、続いて Python でサービスを確認できます。タスクが失敗した場合の診断分岐も追加します。

インフラのロールアウトワークフロー
インフラユニットを実行
成功時出力 → 入力
システムを設定
成功時出力 → 入力
サービスを検証
失敗時
診断情報を収集

各実行を支えるディレクトリ、ツールチェーン、状態

開始ディレクトリを保存

terragrunt.hcl を含むリポジトリのサブディレクトリを選択します。ユニットや環境ごとに異なるエントリーポイントが必要な場合は、別々の名前付きテンプレートを使います。

Terragrunt とその実行バイナリを準備

アプリケーションで Terragrunt Code を有効にします。サーバーまたはランナーに terragrunt と Terraform または OpenTofu のバイナリをインストールし、リポジトリで使用するバージョンの組み合わせをテストしてください。

変数とワークスペース設定を再利用

変数グループは TF_VAR_ 値などの環境入力を提供します。Terragrunt のワークスペースインベントリを選び、操作用に設定したバックエンドを使います。

モジュールの依存関係は Terragrunt に

Terragrunt は構成内の依存関係を評価します。Semaphore ワークフローは個別のタスクテンプレートを連携させます。インストールした Terragrunt リリースに合わせて、複数ユニット用の CLI 引数を設定してください。

FAQ

アプリケーションの選択肢に Terragrunt がないのはなぜですか?

テンプレートを作成する前に、アプリケーションで Terragrunt Code を有効にしてください。既定では無効です。また、タスクを実行するサーバーまたはランナーに、terragrunt と、それが使用する Terraform または OpenTofu のバイナリをインストールします。

Terragrunt テンプレートには、リポジトリのどのディレクトリを指定すべきですか?

意図する操作の terragrunt.hcl を含むサブディレクトリを選択します。対象範囲はディレクトリとコマンド引数で決まります。異なるユニットや環境には名前付きテンプレートを使い、開始前にタスクが何を操作するかチームが判断できるようにしてください。

Terragrunt の実行エンジンとして Terraform の代わりに OpenTofu を使えますか?

はい。Semaphore の連携は、基盤の実行バイナリとして Terraform または OpenTofu に対応しています。実行環境に Terragrunt と選択したバイナリの両方を準備します。構成に対してバージョンの組み合わせをテストし、必要なモジュール、プロバイダー、バックエンドへのアクセスを提供してください。

1 つのテンプレートで複数の Terragrunt ユニットを実行できますか?

テンプレートの CLI 引数で、複数ユニットの操作を設定できます。インストールした Terragrunt バージョンが対応するコマンド構文を使ってください。どのユニットが対象かは作業ディレクトリと引数で決まり、モジュールの依存関係は Terragrunt が評価します。

特定のユニットに対する Terragrunt plan をスケジュールできますか?

はい。Terragrunt タスクテンプレートに対象ユニットのディレクトリとワークスペースを保存し、Plan のみの実行を設定してスケジュールを追加します。定期タスクごとに独自の出力が残ります。複数ユニットの定期作業に使う前に、コマンドの対象範囲を確認してください。

Terragrunt の依存関係と Semaphore ワークフローはどう違いますか?

Terragrunt はインフラモジュール間の依存関係を評価します。Semaphore ワークフローは、異なるツールを使えるタスクテンプレートを連携させます。たとえば、Terragrunt 内部のモジュール依存グラフを置き換えずに、そのロールアウト後に Ansible の設定と Python の確認処理を実行できます。

他のチームは保存済みの Terragrunt 操作を実行できますか?

はい。準備済みテンプレートの実行に必要なプロジェクトアクセスをチームメンバーに付与します。対象範囲を判断できるよう、開始ディレクトリ、ワークスペース、入力を明確に保存してください。広いプロジェクトアクセスが不要なら、Enterprise のカスタムロールで選択したテンプレートだけに制限できます。

Terragrunt ジョブに変数を渡すにはどうすればよいですか?

基盤となる構成が使用する TF_VAR_ 値などの環境入力に、変数グループを関連付けます。追加変数とアンケート変数は、対応する実行入力として渡されます。プロバイダーとバックエンドの認証情報はリポジトリへコミットせず、シークレットエントリーに保存してください。