Product SiteDocumentation Site

44.3. Пример создания контейнера с использованием API

Исходные данные:
  • APINODE — узел, на котором производится аутентификация;
  • TARGETNODE — узел, на котором будет создан контейнер;
  • cookie — файл, в который будет помещен cookie;
  • csrftoken — файл, в который будет помещен CSRF-токен.
Пример создания контейнера с использованием API:
  1. Для удобства установить переменные окружения:
    $ export APINODE=pve01
    $ export TARGETNODE=pve03
    
  2. Сохранить авторизационный cookie в файл cookie:
    $ curl --silent --insecure --data "username=root@pam&password=yourpassword" \
     https://$APINODE:8006/api2/json/access/ticket \
    | jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie
    
  3. Сохранить CSRF-токен в файл csrftoken:
    $ curl --silent --insecure --data "username=root@pam&password=yourpassword" \
     https://$APINODE:8006/api2/json/access/ticket \
    | jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > csrftoken
    
  4. Отобразить статус целевого узла, чтобы проверить, что создание cookie-билета сработало:
    $ curl --insecure --cookie "$(<cookie)" https://$APINODE:8006/api2/json/nodes/$TARGETNODE/status | jq '.'
    
  5. Создать LXC-контейнер:
    $ curl --silent --insecure --cookie "$(<cookie)" --header "$(<csrftoken)" -X POST\
     --data-urlencode net0="name=myct0,bridge=vmbr0" \
     --data-urlencode ostemplate="local:vztmpl/alt-p11-rootfs-systemd-x86_64.tar.xz" \
     --data vmid=601 \
     https://$APINODE:8006/api2/json/nodes/$TARGETNODE/lxc
    
    {"data":"UPID:pve03:00005470:00083F6D:66A76C80:vzcreate:601:root@pam:"}
    
    Команда должна вернуть структуру JSON, содержащую идентификатор задачи (UPID).

    Примечание

    При создании контейнера должен использоваться доступный vmid.