この記事は Terraform Advent Calendar 2024 の 25日目の記事です。
Terraform Agent とは
Terraform Agent は、HCP Terraform で提供されるサービスの一つです。
HCP Terraform や、Terraform Enterprise において、Terraform の実行をオンプレ環境で行うためのツールです。
HCP Terraform の 機能である「リモート」という機能では、個別の使い捨て仮想マシンで Terraform を実行することができます。
ただし、この使い捨て仮想マシンはIPアドレスが公開されていないため、送信元IPアドレスが制限されている環境では HCP Terraform を使用するのが難しくなります。
(VCSなどを取得するIPアドレスは公開されており、専用のAPIが用意されています。)
また、この Terraform Agent を構築することで、HCP Terraform から実行したものが Agent 経由で Terraform が実行されます。 送信元IPアドレスが制限された環境下でも、構築した Agent のIPアドレスを指定することで、リソース操作が可能となります。
そのため、オンプレ環境でのTerraform 実行するツールでもありますが、制限された環境においてもTerraformを実行するツールでもあり、大変便利な機能です。
必要な要件
Terraform Agent を利用するためには、以下の要件が必要です。
HCP Terraform Agents Requirements - HashiCorp Developer
- ハードウェア
- OS: Linux のみ対応
- Disk: 4GB 以上
- Memory: 2GB 以上
- ソフトウェア
- ネットワーク
Hostname | Port/Protocol | Directionally |
---|---|---|
app.terraform.io | tcp/443, HTTPS | Outbound |
registry.terraform.io | tcp/443, HTTPS | Outbound |
releases.hashicorp.com | tcp/443, HTTPS | Outbound |
archivist.terraform.io | tcp/443, HTTPS | Outbound |
agents.terraform.io | tcp/7146 | Outbound |
手順
HCP Terraform での手順
Terraform Agent Pool の作成
HCP Terraform のコンソールにログインし、Terraform Agent Pool を作成します。
Organization -> Settings -> Agents に移動し、Create Agent Pool
をクリックします。
Agent Pool の名前を入力し、Continue
をクリックします。
すると、Token management の画面に遷移して、Agent のトークンを発行できるようになります。
Description を入力し、Create Token
をクリックします。
Token が発行されるので、コピーしておきます。
これで、Agent Pool の作成は完了し、HCP Terraform での設定は完了です。
AWS での手順
EC2インスタンスを作成
まず、Terraform Agent をインストールする EC2 インスタンスを作成します。
今回は、上記要件から t2.small
で作成します。
Terraform Agent のインストール
次に、Terraform Agent をインストールします。
以下のHashicorp社のサイトからダウンロードができます。
TFC-Agent Versions | HashiCorp Releases
今回は最新版の 1.17.5
をインストールします。
tfc-agent_1.17.5_linux_amd64.zip
を右クリックして、リンクアドレスをコピーします。
以下のコマンドを実行して、ダウンロードしたファイルを解凍します。
$ wget https://releases.hashicorp.com/tfc-agent/1.17.5/tfc-agent_1.17.5_linux_amd64.zip $ unzip tfc-agent_1.17.5_linux_amd64.zip
解凍が完了したら、先ほどコピーした Token を使って、変数を設定します。
$ export TFC_AGENT_TOKEN=<TOKEN> $ export TFC_AGENT_NAME=agent
設定が完了したら、以下のコマンドを実行して、Terraform Agent を起動します。
$ ./tfc-agent
起動が完了すると、以下のようなメッセージが表示されます。
[INFO] core: Waiting for next job
と表示されていれば、Terraform Agent の起動は完了です。
これで、Terraform Agent の設定は完了です。
実行してみる
Terraform Agent を使って、実際に Terraform の実行をしてみます。
適当に Workspace を作成します。
今回は、事前にTerraformコードが入っているリポジトリを使うため、「Version Control Workflow」を選択します。
Workspace の作成ができたら、右ペインの Execution mode: Remote
をクリックします。
すると、Execution mode を選択できる画面が表示されるので、Agent
を選択し、先ほど作成した Agent Pool を選択します。
最後に、一番下の「Save Settings」をクリックしてください。
これで、Terraform Agent を使っての実行が可能になります。
では、実際に Terraform の実行をしてみます。
Workspace の画面に戻り、右上のNew Run
をクリックします。
Run Type は Plan and Apply(standard) を選択し、Start
をクリックします。
HCP Terraform の画面が遷移し、Plan まで完了しました。
普段の画面と特段、変化はないです。
ここで、Agent を確認すると、以下のようなログが表示されており、 Agent が実行されていることが確認できます。
これで、Terraform Agent を使っての実行が完了しました。
まとめ
今回、HCP Terraform の Terraform Agent を使って、Terraform の実行を行いました。
Terraform Agent を使うことで、オンプレ環境、送信元IPアドレスが制限された環境下でも実行が可能になります。
ぜひ、Terraform Agent を使って、Terraform の実行を行ってみてください。