セットアップ
作業ディレクトリは terraform/ です。
cd terraform
前提条件
- 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 パスワード)
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"
2. 初期化
state は GCS バケット pve-state に保存される。ローカル実行時は GCP 認証が必要。
terraform init
3. 変更内容の確認
terraform plan
4. 反映
terraform apply
補足
機密情報をコミットしない
API トークン・SSH パスワードは terraform/terraform.tfvars または GitHub Secrets にのみ書く。
- state ファイル: GCS バケット
pve-state(prefix = terraform/state) - lifecycle.ignore_changes: import 時の差分抑制のため、一部属性(VM の
description、LXC のtimeout_*など)で使用している - ツールバージョン管理: aqua を使う場合は
aqua/aqua.yaml - ゲストエージェント: VM の refresh でハングする場合は
terraform plan -refresh=falseや-replaceを検討する