Determinate Systems の nix-installer を使うのが推奨です。
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- installインストール後、flake サポートが有効になっているか確認します。
nix --version
# nix (Nix) 2.x.xWSL2 の場合: インストール後にシェルを再起動するか
source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.shを実行してください。
direnv を使うとプロジェクトディレクトリに入るだけで devshell が自動で有効になります。不要であれば nix develop で代替できます。
# Ubuntu / Debian
sudo apt install direnv
# または Nix で
nix profile install nixpkgs#direnvシェルへの hook を追加します(~/.bashrc または ~/.zshrc)。
# bash
echo 'eval "$(direnv hook bash)"' >> ~/.bashrc && source ~/.bashrc
# zsh
echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc && source ~/.zshrcnix devshell の起動は時間がかかるため、タイムアウト警告を抑制しておきます。
mkdir -p ~/.config/direnv
cat >> ~/.config/direnv/direnv.toml <<'EOF'
[global]
warn_timeout = "1h"
EOFgit clone <repository-url>
cd cnk-analyticsTerraform/Terragrunt の実行に必要な環境変数を .envrc.local に記載します。
このファイルは .gitignore に登録されており、リポジトリにはコミットされません。
cp .envrc.local.example .envrc.local # 存在する場合
# または直接作成:
cat > .envrc.local <<'EOF'
export GOOGLE_CLOUD_PROJECT="<your-gcp-project-id>"
export TF_STATE_BUCKET="<your-tfstate-bucket-name>"
EOF| 変数名 | 説明 | 例 |
|---|---|---|
GOOGLE_CLOUD_PROJECT |
GCP プロジェクト ID | my-project-prod |
TF_STATE_BUCKET |
Terraform state を保存する GCS バケット名 | my-project-tfstate-abc123 |
direnv を使用している場合、ファイル作成後に direnv allow を再実行すると自動で読み込まれます。
direnv allowdirenv を使わない場合はこちら。
nix developdirenv をインストール済みの場合、初回のみ許可が必要です。
direnv allow以降はディレクトリに入るだけで自動的に環境が有効になります。
devshell 内では gauth コマンドで gcloud の認証操作をまとめて実行できます。
Usage: gauth <command> [options]
| コマンド | 説明 |
|---|---|
gauth login |
ブラウザでのインタラクティブログイン |
gauth login-adc |
Application Default Credentials (ADC) ログイン |
gauth whoami |
現在の認証アカウントを表示 |
gauth help |
ヘルプ表示 |
# 初回ログイン
gauth login
# ADC の設定(アプリケーションから GCP にアクセスする場合)
gauth login-adc