Skip to content

AobaIwaki123/Proxmox-Terraform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Create Proxmox VM/Container with Terraform

自前のProxmox環境にVMやコンテナを立てるためのTerraformフレームワーク。
基本的なコマンドは、Taskfileに集約し、基礎となる環境ファイルはtemplateディレクトリに格納している。
公式のドキュメントはこちら
絶賛3.0.1開発中のProxmox Providerのリポジトリはこちら

Version情報

  • Terraform: v1.13.3
  • Proxmox: 8.3.4
  • proxmox provider: 3.0.1-rc6
    • Containerに関しては、rc5, rc6においてこちらのISSUEが存在するため、rc4を使用している

Gettig Started

1. Terraformをインストール

$ terraform version
Terraform v1.13.3

2. Proxmox API Tokenの取得

まず、以下のようにロール、ユーザーを作成し、作成したロールをユーザーに割り当てる。 以下のコマンドはPVEクラスタのノード上であればどこで実行しても良い。 また、GUIでも作成可能だがRoleは多少面倒なのでRoleだけはコマンドで作成するのがおすすめ。

TerraformProvロールの作成

$ pveum role add TerraformProv -privs "Datastore.AllocateSpace Datastore.Audit Pool.Allocate Sys.Audit Sys.Console Sys.Modify VM.Allocate VM.Audit VM.Clone VM.Config.CDROM VM.Config.Cloudinit VM.Config.CPU VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Migrate VM.Monitor VM.PowerMgmt SDN.Use"

terraform-provユーザーの作成

$ pveum user add terraform-prov@pve --password <password>

TerraformProvロールをterraform-provユーザーに割り当てる

$ pveum aclmod / -user terraform-prov@pve -role TerraformProv

最後に作成したユーザーを用いてGUI上で任意のidでトークンを作成する。 以下のような画面が出ればOK

alt text

Provider情報のコピー

  • TOKENをべたがきするようになっているため、流出に注意
$ task create-provider
# modules/proxmox_vm/provider.tf及び
# modules/proxmox_lxc/provider.tfが作成される

provider.tfにProxmox API Tokenの情報を記述する

VMテンプレートの作成

以下のコマンドをproxmoxのノード上で実行する スクリプトはこちらを参考にしました。
コピペ用はこちら

$ wget https://cloud-images.ubuntu.com/oracular/current/oracular-server-cloudimg-amd64.img -O ubuntu-24.10-server-cloudimg-amd64.img
# Base VM configuration
$ qm create 9200 --net0 virtio,bridge=vmbr0
$ qm importdisk 9200 ubuntu-24.10-server-cloudimg-amd64.img local-lvm
$ qm set 9200 --name ubuntu-24.10a
$ qm set 9200 --scsihw virtio-scsi-pci --virtio0 local-lvm:vm-9200-disk-0
$ qm set 9200 --boot order=virtio0
$ qm set 9200 --ide2 local-lvm:cloudinit
$ qm set 9200 --nameserver 127.0.0.53 --searchdomain localdomain
# Convert VM to VM Template
$ qm template 9200

目的毎にTerraformの設定ファイル(env)を作成する

  • 以下のコマンドでenvを作成する
$ task create-vm -- VM_NAME
$ task create-ct -- CT_NAME

envs/dev/terraform.tfvarsを適宜編集する 以下はざっくりした説明

  • hostname : VMのホスト名
  • username : VMにログインするユーザ名
  • public_key : VMにログインするための公開鍵
  • cores : CPUのコア数
  • memory : メモリのサイズ (MB)
  • disk_size : ディスクのサイズ (GB)
  • ip_address : VMに割り当てるIPアドレス
  • gateway : VMに割り当てるゲートウェイ
  • target_node : Proxmoxのノード名
  • template : VMのテンプレート名
  • storage : VMのストレージ名
  • bride : VMに割り当てるネットワークブリッジ
  • vmid : VMのID

Terraform環境の適用方法

$ cd envs/dev
$ make tf-init
$ make tf-apply

こちらに詳しい手順が記載されています。

参考

Docs

About

Proxmox VMを作成するためのTerraform Template

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors