😽

Terragruntに入門する(インストール編)

に公開

Terraformを使って基盤の管理をするようになったのだが、モジュール間で同じ設定を複数書くなどDRY出ない部分が多くなるのが気になった。

devとprodでフォルダで環境を分けると、繰り返し部分が多くなりミスが起こりやすくなりそう。

環境変数の利用やデプロイスクリプトの利用などうまく解決する方法を探したが、Terraformだけだと結局わかりにくい実装になりそうだったので Terragrunt の利用を決めた。

Terragruntとは

Terraform の薄いラッパーで、上記のあたりの課題をいい感じに解決してくれるものらしい。
コマンドは terraform -> terragrunt に変わるくらいで、ほぼそのまま使える。

インストール

自分はWindows11でWSL2の上でUbuntu24を動かしており、その上にTerragruntをインストールした。
インストールは公式サイトの通りに実行した。

バイナリダウンロード+チェックサム

公式サイトのスクリプトをshファイルに

$ cat > install_terragrunt.sh <<'EOF'
set -euo pipefail

OS="linux"
ARCH="amd64"
VERSION="v0.69.1"
BINARY_NAME="terragrunt_${OS}_${ARCH}"

curl -sL "https://github.com/gruntwork-io/terragrunt/releases/download/$VERSION/$BINARY_NAME" -o "$BINARY_NAME"

CHECKSUM="$(sha256sum "$BINARY_NAME" | awk '{print $1}')"
curl -sL "https://github.com/gruntwork-io/terragrunt/releases/download/$VERSION/SHA256SUMS" -o SHA256SUMS

EXPECTED_CHECKSUM="$(awk -v binary="$BINARY_NAME" '$2 == binary {print $1; exit}' SHA256SUMS)"

if [ "$CHECKSUM" == "$EXPECTED_CHECKSUM" ]; then
  echo "Checksums match!"
else
  echo "Checksums do not match!"
  exit 1
fi
EOF

権限の変更

$ chmod 755 install_terragrunt.sh

実行

$ install_terragrunt.sh
Checksums match!

「Checksums match!」が表示されると、terragrunt_{OS}_{ARCH} という名前のバイナリファイルがインストールされる。(僕の環境の場合はterragrunt_linux_amd64)

ファイル名の変更

terragrunt_linux_amd64 -> terragrunt にリネームする

まずは権限の変更

$ chmod 755 terragrunt_linux_amd64

リネーム

$ mv terragrunt_linux_amd64 terragrunt

パスの通ったフォルダに移動でひとまず完了

環境によって異なると思うので、移動先は自分の環境にあったものに置き換える

$ sudo mv terragrunt /usr/local/bin/terragrunt

コマンド実行できれば完了。

$ terragrunt --version
terragrunt version v0.69.1

##オートコンプリートのインストール(オプション)

タブ補完を有効化する。

bashrc(zshrc)がなければ作っておく(すでにあれば不要)

touch ~/.bashrc

インストールコマンド実行

terragrunt --install-autocomplete

シェルを再起動

これでタブ補完ができるようになる。

しかし注意しておきたいのは、init,plan,apply などterraformのコマンドが保管されるようになるわけではないらしいということ。
補完されるようになるのは、catalog,graphなどterragruntのコマンドだけのよう。

Discussion