熱門分類
載入中…
目錄0%

🛠️ Proxmox VE 自動化:CLI + API + Ansible 完整指南(進階篇)

    🛠️ Proxmox VE 自動化:CLI + API + Ansible 完整指南(進階篇)

    Proxmox VE(PVE)是目前最成熟的開源虛擬化平台之一,內建 KVM + LXC、ZFS、叢集 HA、高彈性 API 與完善 CLI 工具,因此非常適合將日常管理流程自動化。本篇將以進階技術角度,整合:

    • 🔹 PVE CLI 自動化管理
    • 🔹 PVE REST API(Token 方式登入)
    • 🔹 Ansible 自動化部署 PVE / VM / LXC
    • 🔹 實際自動化案例與腳本範本

    讓你從日常管理到大規模佈署,都能更快、更準確、更標準化。


    📌 第一章:Proxmox VE CLI 進階自動化

    PVE CLI(pvesh / qm / pct)是最快、最穩定的自動化工具,以下整理最常使用的命令與案例。

    1.1 檢視與管理 VM

    # 查看所有 VM
    qm list
    
    # 啟動與停止 VM
    qm start 101
    qm shutdown 101
    
    # 建立 VM(快速範本)
    qm create 9000 --name ubuntu-tpl --memory 2048 --cores 2
    

    1.2 匯入 OVF / VMDK

    # 匯入 OVF
    qm importovf 105 vm.ovf local-lvm
    
    # 匯入 VMDK(會轉成 RAW 或 QCOW2)
    qm importdisk 105 disk.vmdk local-lvm
    qm set 105 --scsi0 local-lvm:105/vm-105-disk-0.raw
    

    1.3 LXC 容器自動化

    # 建立 LXC
    pct create 300 local:vztmpl/ubuntu-22.04-standard.tar.gz \
      --hostname test-lxc --cores 2 --memory 2048
    
    # 啟動
    pct start 300
    

    📌 第二章:Proxmox VE REST API(Token)

    PVE REST API 幾乎覆蓋所有功能。本章示範以 Token 方式登入(更安全、適合作業自動化)。

    2.1 建立 API Token

    位置:Datacenter → Permissions → API Tokens → Add

    User: root@pam
    Token ID: ansible
    Privilege: Administrator(或依需求)
    Expire:(可選)
    
    完成後會取得: - Token ID - Secret(只會顯示一次)

    2.2 使用 curl 呼叫 API

    API_URL="https://pve1:8006/api2/json"
    TOKEN="root@pam!ansible=yourtoken"
    SECRET="yoursecret"
    
    curl -k -H "Authorization: PVEAPIToken=$TOKEN=$SECRET" \
      "$API_URL/nodes/pve1/qemu"
    

    2.3 Python 操作 API

    import requests
    
    url = "https://pve1:8006/api2/json/nodes/pve1/qemu"
    headers = {
        "Authorization": "PVEAPIToken=root@pam!ansible=YOURSECRET"
    }
    
    resp = requests.get(url, headers=headers, verify=False)
    print(resp.json())
    

    📌 第三章:使用 Ansible 自動化管理 Proxmox

    Ansible 是管理 PVE 大規模環境的首選。本章提供完整目錄結構、inventory、以及 playbook 範例。

    3.1 Inventory 範例

    [pve]
    pve1 ansible_host=192.168.10.11
    pve2 ansible_host=192.168.10.12
    
    [pve:vars]
    ansible_user=root
    ansible_ssh_private_key_file=~/.ssh/id_rsa
    

    3.2 使用 Ansible 建立 VM

    - name: Create VM
      hosts: pve
      tasks:
        - name: Create VM via API
          uri:
            url: "https://{{ inventory_hostname }}:8006/api2/json/nodes/{{ inventory_hostname }}/qemu"
            method: POST
            validate_certs: no
            headers:
              Authorization: "PVEAPIToken={{ pve_token }}"
            body_format: json
            body:
              vmid: 200
              name: ansible-vm
              memory: 2048
    

    3.3 使用 Ansible 建立 LXC 容器

    - name: Create LXC container
      hosts: pve
      tasks:
        - uri:
            url: "https://{{ inventory_hostname }}:8006/api2/json/nodes/{{ inventory_hostname }}/lxc"
            method: POST
            validate_certs: no
            headers:
              Authorization: "PVEAPIToken={{ pve_token }}"
            body_format: json
            body:
              vmid: 310
              hostname: web01
              ostemplate: "local:vztmpl/ubuntu-22.04.tar.gz"
              cores: 2
              memory: 2048
    

    📌 第四章:常見自動化場景與最佳實務

    4.1 建立標準化 VM 模板庫

    • VM 標準化:CPU/Memory/網卡模型/磁碟類型
    • 安裝 cloud-init 支援
    • 建立 golden image(Ubuntu / Rocky / Debian)

    4.2 自動備份與輪替

    # 每天 02:00 備份所有 VM
    pvesh create /nodes/pve1/vzdump --all 1 --mode snapshot --compress zstd
    

    4.3 節點健康檢查(以腳本替代 GUI)

    pvesh get /nodes/pve1/status
    pvesh get /cluster/resources
    

    📌 第五章:完整自動化專案範例

    📁 專案結構:

    proxmox-automation/
     ├── ansible/
     │   ├── inventory
     │   ├── pve-create-vm.yml
     │   ├── pve-create-lxc.yml
     │   └── pve-health-check.yml
     ├── scripts/
     │   ├── backup-all.sh
     │   ├── import-ovf.sh
     │   └── template-build.sh
     └── api/
         └── python-demo.py
    

    這類專案可直接上 GitHub,讓多人協作 PVE 管理。


    📌 結語

    Proxmox VE 已經不只是虛擬化平台,更是能與 DevOps、CI/CD、配置管理系統整合的完整生態。透過 CLI、REST API 與 Ansible,你可以將整個環境自動化、標準化、模組化,大幅降低人工操作錯誤,並提升部署速度。

    未來也會推出「Proxmox VE 大規模佈署與高可用架構(Enterprise 版)」作為本篇的延伸內容。


    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級