Skip to content

セットアップ

作業ディレクトリは terraform/ です。

cd terraform

前提条件

  • Terraform >= 1.5.0terraform/.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-stateprefix = terraform/state
  • lifecycle.ignore_changes: import 時の差分抑制のため、一部属性(VM の description、LXC の timeout_* など)で使用している
  • ツールバージョン管理: aqua を使う場合は aqua/aqua.yaml
  • ゲストエージェント: VM の refresh でハングする場合は terraform plan -refresh=false-replace を検討する