Skip to content

既存リソースの import

Proxmox 上に手動で作済みの VM / LXC を、破壊せず Terraform 管理下へ移す。

事前確認

  • ローカル環境の準備 が済んでいること
  • 追加する定義が実機の設定とできるだけ一致していること
  • モジュール変数は Terraform を参照すること

手順

  1. terraform/vms.tf または terraform/lxcs.tf に module ブロックを追加する
  2. 一時的に terraform/imports.tf を作成し、import ブロックを追加する
  3. terraform/ で terraform plan し、意図しない destroy / recreate がないことを確認する
  4. terraform apply で import を実行する
  5. 再度 terraform plan し、差分が許容範囲(またはゼロ)になったら imports.tf を削除する
  6. インベントリ を更新する

import ブロックの例

ID は "<node_name>/<vm_id>" の形式で書く。

import {
  to = module.vm_200.proxmox_virtual_environment_vm.this
  id = "pve/200"
}

LXC では次のブロックを使う。

import {
  to = module.lxc_301.proxmox_virtual_environment_container.this
  id = "pve-03/301"
}

差分が出るとき

既存リソースに合わせた詳細な属性指定が必要なことがある。 モジュール側の lifecycle.ignore_changes で抑制している項目もあるが、plan の差分は必ず内容を読んでから apply する。