Пример работы с API Proxmox с помощью консольной утилиты pvesh


Ответы

Подробное описание API можно найти на странице Proxmox VE API Documentation

Работа с пользователями

Создать пользователя

pvesh create /access/users -userid USERNAME@pve -password "PASSWORD"

Удалить пользователя

pvesh delete /access/users/USERNAME@pve

Получить список пользователей

pvesh get /access/users

Работа с контейнерами

Создать KVM

Сначала создаём образ диска

QCOW2

pvesh create /nodes/{node}/storage/local/content \
-filename 'vm-{vmid}-disk-1.qcow2' \
-format 'qcow2' \
-size {size}G \
-vmid {vmid}

RAW

pvesh create /nodes/{node}/storage/local/content \
-filename 'vm-{vmid}-disk-1.raw' -format 'raw' \
-size {size}G -vmid {vmid}

Создаём виртуальную машину и подключаем созданный образ диска

pvesh create /nodes/{node}/qemu -vmid {vmid} \
-ostype 'l26' -name {hostname} -storage 'local' \
-memory {mem} -sockets 1 -cores 2 \
-net0 'rtl8139,rate=50,bridge=vmbr0' \
-virtio0 local:{vmid}/vm-{vmid}-disk-1.qcow2,cache=writeback,mbps_rd=5,mbps_wr=5 \
-scsihw 'virtio-scsi-pci' \
-cdrom 'none'

RAW

pvesh create /nodes/{node}/qemu -vmid {vmid} \
-ostype 'l26' -name {hostname} -storage 'local' \
-memory {mem} -sockets 1 -cores 2 \
-net0 'rtl8139,rate=50,bridge=vmbr0' \
-scsi0 local:{vmid}/vm-{vmid}-disk-1.raw,cache=writeback \
-scsihw 'virtio-scsi-pci' \
-cdrom 'none'

Запускаем виртуальную машину

pvesh create /nodes/{node}/qemu/{vmid}/status/start

Работа с OpenVZ

Получить настройки

pvesh get /nodes/{node}/openvz/{vmid}/config

cat << EOF > newvm.json
{
  "node": "nodeXXX",
  "vmid": "777",
  "hostname": "test.777",
  "cpu": "2",
  "hdd": "16",
  "mem": "1024"
}
EOF

ansible-playbook -i '10.0.0.10,' -l 10.0.0.10 --ask-pass proxmox-newkvm.yml \
--extra-vars "@newvm.json"

rm newvm.json

Файл proxmox-newkvm.yml

---
- hosts: all
  remote_user: root

  tasks:
  - name: Создать образ диска
    shell: |
      pvesh create /nodes/{{ node }}/storage/local/content \
      -filename 'vm-{{ vmid }}-disk-1.qcow2' \
      -format 'qcow2' -size {{ hdd }}G -vmid {{ vmid }}

  - name: Создать VM и подключить образ диска
    shell: |
      pvesh create /nodes/{{ node }}/qemu -vmid {{ vmid }} \
      -ostype 'l26' -name {{ hostname }} -storage 'local' \
      -memory {{ mem }} -sockets 1 -cores {{ cpu }} \
      -net0 'rtl8139,rate=12,bridge=vmbr0' \
      -virtio0 local:{{ vmid }}/vm-{{ vmid }}-disk-1.qcow2,cache=writeback,mbps_rd=5,mbps_wr=5 \
      -cdrom 'none'

  - name: Запустить VM
    shell: |
      pvesh create /nodes/{{ node }}/qemu/{{ vmid }}/status/start