# Proxmox IaC 解決方案
# 前言 IaC
# 實作
# Proxmox 開啟 API Token
Datacenter > 權限 > API 權杖 > 增加
選擇綁定帳號與期限與權杖名稱
把她存起來
在 Proxmox 主機
1 2 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 出來
|
1 2 3 4 5 6 7 8 9 10 11
| # 新增 Terraform Repository echo "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
1 2
| touch ~/.bashrc terraform -install-autocomplete
|
# 建立第一個 虛擬機 Iac
# 建立專案資料夾
內容如下
1 2 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 }
|
1 2 3 4 5 6 7 8
| terraform init #初始化 terraform fmt # 格式化 terraform validate # 驗證 # 如果上面都通過 terraform apply # yes # 如果想要銷毀 terraform destroy
|
# Reference
- 快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机