共通の場所から Terraform の変更を実行

Terraform コードを Semaphore に接続します。ワークスペースを選び、plan 出力を確認して Apply を実行し、チームが実行履歴を参照できるようにします。

変更はレビュー済み。実行も再現できますか?

コードは Git にありますが、端末セッションごとにワークスペース、変数、認証情報が違う場合があります。次のエンジニアにも同じ開始点が必要です。

インフラ操作ごとに実行設定を保存

  • 構成ディレクトリとワークスペースを保存
  • 再利用可能な変数グループで変数を渡す
  • Plan と Apply を別々に記録されたタスクとして確認

Terraform の操作をチームのプロセスに組み込む

アプリケーション環境をプロビジョニング

構成ディレクトリとワークスペースに対応するテンプレートを作成します。環境入力は変数グループから渡します。

準備済みジョブを共有

インフラの変更案を確認

Plan のみのタスクを開始し、出力を共有します。チームが変更を行う準備ができたら、Apply を別の操作として実行します。

準備済みジョブを共有

インフラのドリフトを再確認

Plan のみのテンプレートをスケジュールし、構成とインフラを比較して各 plan の出力を保持します。プランで差異を確認してください。

スケジュールを設定

Terraform を設定し、Plan のみの実行を開始

プロビジョニングからサービスの設定へ続ける

成功した Terraform ステップは、インフラの出力を自動的に公開します。その値を Ansible タスクの入力に割り当て、Python で設定済みサービスを検証できます。ワークフローはジョブとそのデータ、成功時と失敗時の経路を接続します。

アプリケーション環境のロールアウトワークフロー
インフラをプロビジョニング
成功時出力 → 入力
サービスを設定
成功時出力 → 入力
デプロイを検証
失敗時
診断情報を収集

Terraform ジョブのワークスペース、入力、状態

計画と適用を分離

変更を適用せずに変更案を確認するには Plan を選択します。Apply は別の実行です。後から実行する Apply が、先に実行した Plan タスクの保存済み出力を自動的に使うことはありません。

ワークスペースと入力を選択

テンプレートのインベントリ項目で Terraform ワークスペースを選びます。入力には TF_VAR_ 名を持つ変数グループを使います。ワークスペースを選んでも、異なる変数や認証情報が自動で選ばれるわけではありません。

既存のバックエンドを使うか、Semaphore のものを選択

Terraform コード内のバックエンドを引き続き使えます。Pro では、ロック、状態のバージョン管理、UI での管理を提供する Semaphore の HTTP バックエンドで上書きできます。

一貫した Terraform ランタイムを準備

Semaphore は実行前に init を実行します。ジョブを実行するサーバーまたはランナーに、Terraform バージョン、プロバイダー、プライベートモジュールの認証情報、API アクセスを準備してください。

FAQ

既存の Terraform 構成を Semaphore で実行できますか?

はい。リポジトリと構成ディレクトリを参照する Terraform タスクテンプレートを作成します。ワークスペースを選び、変数グループから入力を渡し、必要な Terraform ランタイムを準備してください。Semaphore は構成を実行し、タスク出力と実行ステータスを保持します。

Terraform の状態を Semaphore に移す必要がありますか?

いいえ。Terraform は、コードに設定されたバックエンドをそのまま使えます。Pro では、状態のロック、バージョン履歴、UI 管理のために Semaphore の HTTP バックエンドを選べます。既存のアクセスと復旧手順に合うバックエンドを選択してください。

Terraform ワークスペースを選ぶと、変数と認証情報も変わりますか?

いいえ。ワークスペースの選択は、状態のワークスペースを選ぶものです。ジョブに必要な変数と認証情報は別途設定します。入力の異なる環境には、意図した組み合わせのタスクテンプレートと変数グループを用い、テンプレート名で対象範囲を明確にしてください。

Apply は前のタスクの plan を使いますか?

後から実行する Apply が、先に実行した Plan タスクの保存済み出力を自動的に使用することはありません。それぞれ独立した実行です。Plan で変更案を確認してから、意図する Apply 操作を選択してください。タスク履歴には各実行の出力と結果が残ります。

Terraform plan の定期実行はドリフトの確認に役立ちますか?

はい。Plan のみのテンプレートをスケジュールし、出力から構成とインフラの差異を確認します。各実行には記録が残ります。これはレビュー用の plan を定期的に提供するもので、plan が検出したすべてのドリフトを自動通知するものではありません。

Terraform のプロビジョニング後に Ansible で設定できますか?

はい。ワークフローで Terraform タスクテンプレートを Ansible テンプレートの前に置き、その後に Python による準備確認などを追加します。各ステップを開始する条件を設定してください。Terraform の plan と状態は、ワークフローの連携とは分かれたままです。

Terraform の変数と認証情報はどう渡せますか?

変数グループをテンプレートに関連付けます。Terraform の入力変数には TF_VAR_ 名を使い、認証には各プロバイダーが想定する環境値を使います。機密値はシークレットエントリーに保存し、実行環境でモジュールとバックエンドへのアクセスを準備してください。

これは Semaphore Terraform プロバイダーと同じですか?

いいえ。この連携は、インフラ向けの Terraform 構成を Semaphore タスクとして実行します。Semaphore Terraform プロバイダーはその逆で、Terraform を使って対応する Semaphore リソースを管理します。それぞれ独立して使うことも、組み合わせることもできます。