ローカル環境の準備¶
手元で 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/ にする。
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 に保存される。
3. 変更内容を確認する¶
4. 反映する¶
トラブルシュート¶
| 症状 | 対処 |
|---|---|
| VM refresh でハングする | terraform plan -refresh=false や必要に応じて -replace を検討 |
| ツールバージョンを揃えたい | aqua の aqua/aqua.yaml を利用 |