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