Proxmox IaC 解決方案
前言 IaC
實作
Proxmox 開啟 API Token
Datacenter > 權限 > API 權杖 > 增加
選擇綁定帳號與期限與權杖名稱
![image]()
把她存起來
在 Proxmox 主機
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 
 | # 其他基本依賴套件sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
 # 安裝 GPG Key
 wget -O- https://apt.releases.hashicorp.com/gpg | \
 gpg --dearmor | \
 sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
 # 驗證 fingerprint
 gpg --no-default-keyring \
 --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
 --fingerprint # 這裡會 Show 出來
 
 | 
![image]()
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | # 新增 Terraform Repositoryecho "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
 https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
 sudo tee /etc/apt/sources.list.d/hashicorp.list
 # 更新
 sudo apt update
 # 安裝 Terraform
 sudo apt-get install terraform
 # 看看 Terraform 安裝成功沒
 terraform -help
 
 
 | 
Optional - 啟用 tab-completetion
| 12
 
 | touch ~/.bashrcterraform -install-autocomplete
 
 | 
建立第一個 虛擬機 Iac
建立專案資料夾
內容如下
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 
 | # 使用的 Provider 設定terraform {
 required_providers {
 proxmox = {
 source = "telmate/proxmox"
 }
 }
 }
 
 # Provider 的配置
 provider "proxmox" {
 pm_tls_insecure     = true # 啟用不安全的 TLS 通訊
 pm_api_url          = "https://XX.XX.XX.XX:8006/api2/json" # Proxmox API 的 URL
 pm_api_token_id     = "剛剛在 PVE 介面建立的 Token id" # 用於驗證的 Token ID
 pm_api_token_secret = "剛剛在 PVE 介面建立的 Token Secret" # 用於驗證的 Token Secret
 }
 
 # 虛擬機資源的配置
 resource "proxmox_vm_qemu" "proxmox-ubuntu" {
 count = 1 # 創建的虛擬機數量
 name  = "ubuntu-${count.index + 1}" # 虛擬機的名稱
 desc  = "Ubuntu 開發環境" # 虛擬機的描述
 
 target_node = "pve" # 虛擬機部署的目標節點
 
 clone = "ubuntu-2004-cloudinit-template" # 從哪個模板克隆虛擬機
 
 agent   = 0 # 是否啟用客戶端代理
 os_type = "ubuntu" # 虛擬機的操作系統類型
 onboot  = true # 是否開機自動啟動虛擬機
 
 # CPU 設定
 cores    = 4 # 虛擬機的核心數量
 sockets  = 1 # 虛擬機的插槽數量
 cpu      = "host" # 虛擬機的 CPU 型號
 
 # 記憶體設定
 memory   = 16384 # 虛擬機的記憶體大小(MB)
 scsihw   = "virtio-scsi-pci" # 虛擬機的 SCSI 硬件類型
 
 # 開機硬碟設定
 bootdisk = "scsi0" # 開機時使用的硬碟
 
 # 硬碟設定
 disk {
 slot     = 0 # 硬碟的插槽位置
 size     = "200G" # 硬碟的大小
 type     = "scsi" # 硬碟的類型
 storage  = "local-lvm" # 儲存池名稱
 iothread = 1 # 是否使用 I/O 線程
 }
 
 # 網路設定
 network {
 model  = "virtio" # 網路卡的模式
 bridge = "vmbr1" # 網路橋接的名稱
 }
 
 lifecycle {
 ignore_changes = [
 network,
 ] # 忽略變更的項目列表
 }
 
 # 用戶名和 SSH 鍵設定
 ciuser  = "test" # 用戶名
 sshkeys = <<EOF
 SSH KEYS HERE # 在這裡添加你的 SSH 鍵內容
 EOF
 }
 
 | 
| 12
 3
 4
 5
 6
 7
 8
 
 | terraform init #初始化terraform fmt # 格式化
 terraform validate  # 驗證
 # 如果上面都通過
 terraform apply # yes
 # 如果想要銷毀
 terraform destroy
 
 
 | 
Reference
- 快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机