Terraform Cloud Agent のPROXY 設定とログ設定

Terraform Enterprise, Terraform Cloud Business で利用できるTerraform Cloud Agent をプロキシ経由で利用し、かつ実行時のログをsyslog に出力させた際のメモです。

Terraform Cloud Agent(以下TFC Agent) は、有償版のTerraform のTerraform EnterpriseTerraform Cloud Business で利用出来る機能です。

TFC Agent をDocker コンテナとして稼働させる場合、プロキシ経由でTerraform Cloud とアクセスさせ、かつTFC Agent の実行ログをsyslog に出力させた際のメモです。


TFC Agent を起動

TFCB の環境で試してみましたので、こちらにある「Managing Agent Pools」を参考にTFC Agent を起動させる際に必要なトークンの作成を行なっていきます。トークンが作成出来たら、TFC Agent コンテナを起動させます。
export TFC_AGENT_TOKEN=**********
export TFC_AGENT_NAME=test
export AWS_ACCESS_KEY_ID=************
export AWS_SECRET_ACCESS_KEY=************
export AWS_SESSION_TOKEN=************
export HTTP_PROXY=http://<SQUID_SERVER_IP_ADDRESS>:3128
export HTTPS_PROXY=http://<SQUID_SERVER_IP_ADDRESS>:3128
$ docker run -e TFC_AGENT_TOKEN -e TFC_AGENT_NAME -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e HTTP_PROXY -e HTTPS_PROXY -e TFC_AGENT_LOG_LEVEL=DEBUG --log-driver=syslog hashicorp/tfc-agent:latest
2021-10-14T13:23:10.629Z [INFO]  agent: Starting: name=test version=0.4.2
2021-10-14T13:23:10.629Z [DEBUG] plugin: starting plugin: path=/home/tfc-agent/bin/tfc-agent-core args=[/home/tfc-agent/bin/tfc-agent-core]
2021-10-14T13:23:10.629Z [DEBUG] plugin: plugin started: path=/home/tfc-agent/bin/tfc-agent-core pid=12
2021-10-14T13:23:10.629Z [DEBUG] plugin: waiting for RPC address: path=/home/tfc-agent/bin/tfc-agent-core
2021-10-14T13:23:10.636Z [DEBUG] plugin: using plugin: version=1
2021-10-14T13:23:10.636Z [DEBUG] plugin.tfc-agent-core: plugin address: address=/tmp/plugin808740908 network=unix timestamp=2021-10-14T13:23:10.636Z
...

ログの確認

Exec モードがAgent となっているWorkspace でTerraform Run(plan or apply) を実行します。

squid サーバーログには以下の様に出力され、プロキシ経由でアクセスがされている事が確認出来ます。
$ sudo tail /var/log/squid/access.log
1634217861.810   1589 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 10627 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217862.755   1815 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6240 CONNECT archivist.terraform.io:443 - HIER_DIRECT/
1634217862.755   7060 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6337 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217862.755    944 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6207 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217868.291   3628 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 10365 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217870.238   1946 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 10627 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217871.262   1023 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6208 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217871.262   2280 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6240 CONNECT archivist.terraform.io:443 - HIER_DIRECT/
1634217871.262   8285 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6337 CONNECT app.terraform.io:443 - HIER_DIRECT/
1634217886.682  95235 TFC_AGENT_HOST_IP_ADDRESS TCP_TUNNEL/200 6169 CONNECT releases.hashicorp.com:443 - HIER_DIRECT/

TFC Agent を実行したノードのsyslog を確認すると、以下のような形でログが出力されている事が確認出来ます。
$ cat /var/log/syslog |grep terraform
Oct 14 13:19:16 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:16.989Z [INFO]  terraform: Downloading Terraform release: url=https://releases.hashicorp.com/terraform/1.0.8/terraform_1.0.8_linux_amd64.zip
Oct 14 13:19:20 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:20.962Z [INFO]  terraform: Extracting Terraform from release archive
Oct 14 13:19:21 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:21.729Z [INFO]  terraform: Terraform CLI details: version=1.0.8
Oct 14 13:19:21 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:21.729Z [INFO]  terraform: Downloading Terraform configuration
Oct 14 13:19:21 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:21.905Z [INFO]  terraform: Running terraform init
Oct 14 13:19:35 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:35.125Z [INFO]  terraform: Running terraform plan
Oct 14 13:19:43 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:43.517Z [INFO]  terraform: Generating and uploading plan JSON
Oct 14 13:19:50 hashi-client 9b8c9877ac1d[17593]: 2021-10-14T13:19:50.194Z [INFO]  terraform: Generating and uploading provider schemas JSON
...

このブログの人気の投稿

Tanzu Mission Control(TMC) の NetworkPolicy を試してみる