Skip to content

ローカル環境の準備

手元で Terraform を実行する。 CI の仕組みは CI/CD を参照する。

前提条件

  • Terraform >= 1.5.0 を使う(terraform/.terraform-version、CI では 1.15.6)
  • Proxmox VE への API アクセスがあること
  • API トークンを terraform/terraform.tfvars または環境変数 TF_VAR_* で渡す
  • cloud-init snippet のアップロード等で、Proxmox ノードへ SSH 接続する(root パスワード)
  • GCS バックエンドを使うため、ローカル実行時は GCP 認証が必要である

作業ディレクトリは常に terraform/ にする。

cd terraform

1. 変数を用意する

terraform.tfvars を作成し、Proxmox 接続情報を設定する(.gitignore 済み)。

proxmox_endpoint      = "https://192.168.x.x:8006"
proxmox_api_token     = "user@pve!tokenid=secret"
proxmox_ssh_password  = "root-password"
proxmox_insecure      = true

環境変数でも同様に指定できる(CI ではこちらを使う)。

export TF_VAR_proxmox_endpoint="https://192.168.x.x:8006"
export TF_VAR_proxmox_api_token="user@pve!tokenid=secret"
export TF_VAR_proxmox_ssh_password="root-password"
export TF_VAR_proxmox_insecure="true"

機密情報をコミットしない

API トークンと SSH パスワードは terraform/terraform.tfvars または GitHub Secrets にのみ書く。

2. 初期化する

state は GCS バケット pve-state に保存される。

terraform init

3. 変更内容を確認する

terraform plan

4. 反映する

terraform apply

トラブルシュート

症状 対処
VM refresh でハングする terraform plan -refresh=false や必要に応じて -replace を検討
ツールバージョンを揃えたい aqua の aqua/aqua.yaml を利用

次のステップ