Spec-Zone.ru › Ansible

community.general.proxmox модуль – Управление экземплярами в кластере Proxmox VE

Примечание

Этот модуль входит в коллекцию community.general (версия 9.5.0).

У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, запустите ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования, см. Требования для подробностей.

Чтобы использовать его в playbook, укажите: community.general.proxmox.

  • Обзор
  • Требования
  • Параметры
  • Атрибуты
  • См. также
  • Примеры

Обзор

  • Позволяет создавать/удалять/останавливать экземпляры в кластере Proxmox VE.
  • Модуль автоматически определяет тип контейнеризации (lxc для PVE 4, openvz для более старых версий).
  • Начиная с community.general 4.0.0, значения по умолчанию больше не используются.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • proxmoxer
  • requests
END_OF_DOCUMENT_MARKER

Параметры

Параметр

Комментарии

api_host

строка / обязательно

Укажите целевой хост кластера Proxmox VE.

api_password

строка

Укажите пароль для аутентификации.

Вы можете использовать переменную окружения PROXMOX_PASSWORD.

api_port

целое число

добавлен в community.general 9.1.0

Укажите целевой порт кластера Proxmox VE.

Используется переменная окружения PROXMOX_PORT, если не указано.

api_token_id

строка

добавлен в community.general 1.3.0

Укажите идентификатор токена.

Требуется proxmoxer>=1.1.0 для работы.

api_token_secret

строка

добавлен в community.general 1.3.0

Укажите секрет токена.

Требуется proxmoxer>=1.1.0 для работы.

api_user

строка / обязательно

Укажите пользователя для аутентификации.

clone

целое число

добавлен в community.general 4.3.0

Идентификатор контейнера, который будет клонирован.

description, hostname, и pool будут скопированы из клонированного контейнера, если не указаны.

Тип создаваемого клона определяется параметром clone_type.

Этот оператор поддерживается только для кластеров Proxmox, использующих контейнеризацию LXC (версия PVE >= 4).

clone_type

строка

добавлен в community.general 4.3.0

Тип создаваемого клона.

full создаёт полный клон, и storage должен быть указан.

linked создаёт связанный клон, и клонированный контейнер должен быть контейнером шаблона.

opportunistic создаёт связанный клон, если клонированный контейнер является контейнером шаблона, и полный клон, если нет. storage может быть указан, в противном случае будет использоваться значение по умолчанию.

Варианты:

  • "full"
  • "linked"
  • "opportunistic" ← (по умолчанию)

cores

целое число

Укажите количество ядер на сокет.

cpus

целое число

количество выделенных cpu для экземпляра

cpuunits

целое число

Вес ЦП для виртуальной машины

description

строка

добавлен в community.general 0.2.0

Укажите описание контейнера. Используется только в веб-интерфейсе конфигурации.

Сохраняется как комментарий в файле конфигурации.

disk

строка

Этот параметр ранее описывался как «размер жёсткого диска в ГБ для экземпляра», но допускаются несколько форматов, описывающих mount lxc.

Более старые версии Proxmox принимают числовое значение для размера, используя параметр storage, чтобы автоматически выбрать, какой накопитель выделять, однако новые версии требуют синтаксис <STORAGE>:<SIZE>.

Доступны дополнительные параметры, используя комбинацию следующих пар ключ-значение через запятую: [volume=]<volume> [,acl=<1|0>] [,mountoptions=<opt[;opt...]>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=<DiskSize>].

Полное описание см. на https://pve.proxmox.com/wiki/Linux_Container.

Этот параметр несовместим с storage и disk_volume.

disk_volume

словарь

добавлен в community.general 9.2.0

Укажите хеш/словарь диска rootfs.

Полное описание см. на https://pve.proxmox.com/wiki/Linux_Container#pct_mount_points.

Этот параметр несовместим с storage и disk.

host_path

путь

disk_volume.host_path определяет путь привязки или устройства на хосте PVE, используемом для rootfs.

Несовместим с disk_volume.storage, disk_volume.volume, и disk_volume.size.

options

словарь

disk_volume.options — это словарь дополнительных параметров.

Значение любого параметра должно быть строкой, например, "1".

size

целое число

disk_volume.size — это размер используемого хранилища.

Размер задаётся в ГБ.

Требуется только если disk_volume.storage определено и несовместимо с disk_volume.host_path.

storage

строка

disk_volume.storage — идентификатор хранилища, используемого для rootfs.

Несовместимо с disk_volume.host_path.

volume

строка

disk_volume.volume — имя существующего тома.

Если не определено, модуль проверит его наличие. Если нет, будет создан новый том.

Если определено, том должен существовать под этим именем.

Требуется только если disk_volume.storage определено и несовместимо с disk_volume.host_path.

features

список / элементы=строка

добавлено в community.general 2.0.0

Указывает список функций, которые необходимо включить. Допустимые варианты см. в https://pve.proxmox.com/wiki/Linux_Container#pct_options.

Некоторые функции требуют использования контейнера с привилегиями.

force

логическое

Принудительное выполнение операций.

Может использоваться только с состояниями present, stopped, restarted.

С опцией force можно перезаписать существующий контейнер.

Состояния stopped, restarted позволяют принудительно остановить экземпляр.

Варианты:

  • false ← (по умолчанию)
  • true

hookscript

строка

добавлено в community.general 0.2.0

Скрипт, который будет выполняться на различных этапах жизненного цикла контейнера.

hostname

строка

Имя хоста экземпляра.

Требуется только для state=present

Должно быть уникальным, если не указан vmid.

ip_address

строка

Указывает адрес, который будет назначен контейнеру.

memory

целое число

Размер памяти в МБ для экземпляра.

mount_volumes

список / элементы=словарь

добавлено в community.general 9.2.0

Указывает дополнительные подключения (отдельные диски) для контейнера. Представлено в виде словаря/списка, определяющего точки монтирования.

Полное описание см. в https://pve.proxmox.com/wiki/Linux_Container#pct_mount_points.

Эта опция несовместима с mounts.

host_path

путь

mount_volumes[].host_path определяет путь привязки или устройства на хосте PVE, используемый для rootfs.

Несовместимо с mount_volumes[].storage, mount_volumes[].volume, и mount_volumes[].size.

id

строка / обязательно

mount_volumes[].id — идентификатор точки монтирования, записанный как mp[n].

mountpoint

путь / обязательно

mount_volumes[].mountpoint — точка монтирования тома.

options

словарь

mount_volumes[].options — словарь дополнительных опций.

Значение каждой опции должно быть строкой, например "1".

size

целое число

mount_volumes[].size — размер используемого хранилища.

Размер указан в ГБ.

Требуется только если mount_volumes[].storage определено и несовместимо с mount_volumes[].host_path.

storage

строка

mount_volumes[].storage — идентификатор хранилища для использования.

Несовместимо с mount_volumes[].host_path.

volume

строка

mount_volumes[].volume — имя существующего тома.

Если не определено, модуль проверит, существует ли такой том. Если нет, будет создан новый.

Если определено, том должен существовать под этим именем.

Требуется только если mount_volumes[].storage определено и несовместимо с mount_volumes[].host_path.

mounts

словарь

Указывает дополнительные подключения (отдельные диски) для контейнера. Представлено в виде словаря/списка, определяющего точки монтирования как строки.

Эта опция несовместима с mount_volumes.

nameserver

строка

Устанавливает IP-адрес DNS-сервера для контейнера.

netif

словарь

Указывает сетевые интерфейсы для контейнера. Представлено в виде словаря/списка, определяющего интерфейсы.

node

строка

Узел Proxmox VE, на котором нужно выполнить операцию.

Требуется только для state=present.

Для всех остальных состояний он будет автоматически определён.

onboot

логическое

Указывает, будет ли VM запущена при загрузке системы.

Варианты:

  • false
  • true

ostemplate

строка

Шаблон для создания VM.

Требуется только для state=present

ostype

string

added in community.general 8.1.0

Указывает ostype контейнера LXC.

Если установлено значение auto, при создании экземпляра ostype предоставляться не будет.

Варианты:

  • "auto" ← (default)
  • "debian"
  • "devuan"
  • "ubuntu"
  • "centos"
  • "fedora"
  • "opensuse"
  • "archlinux"
  • "alpine"
  • "gentoo"
  • "nixos"
  • "unmanaged"

password

string

root-пароль экземпляра

pool

string

Добавить новую виртуальную машину в указанный пул.

pubkey

string

Открытый ключ для добавления в /root/.ssh/authorized_keys. Добавлен в Proxmox 4.2, игнорируется для более ранних версий

purge

boolean

added in community.general 2.3.0

Удалить контейнер из всех связанных конфигураций.

Например, задания резервного копирования, задания репликации или HA.

Связанные списки управления доступом и записи брандмауэра всегда будут удалены.

Используется с state=absent.

Варианты:

  • false ← (default)
  • true

searchdomain

string

устанавливает DNS-домен поиска для контейнера

startup

list / elements=string

added in community.general 8.5.0

Указывает порядок запуска контейнера.

Используйте order=#, где # — неотрицательное число, чтобы определить общий порядок запуска. Выключение выполняется в обратном порядке.

Используйте up=#, где # — в секундах, чтобы указать задержку перед запуском следующей виртуальной машины.

Используйте down=#, где # — в секундах, чтобы указать задержку перед остановкой следующей виртуальной машины.

state

string

Указывает желаемое состояние экземпляра

template был добавлен в community.general 8.1.0.

Варианты:

  • "present" ← (default)
  • "started"
  • "absent"
  • "stopped"
  • "restarted"
  • "template"

storage

string

Целевое хранилище.

Этот параметр взаимоисключающий с disk и disk_volume.

Значение по умолчанию: "local"

swap

integer

Размер подкачки в МБ для экземпляра

tags

list / elements=string

added in community.general 6.2.0

Список тегов для применения к контейнеру.

Теги должны начинаться с [a-z0-9_] с последующими нулём или более символами [a-z0-9_-+.].

Теги доступны только в Proxmox 7+.

timeout

integer

время ожидания для операций

Значение по умолчанию: 30

timezone

string

added in community.general 7.1.0

Часовой пояс, используемый контейнером, принимает значения, подобные Europe/Paris.

Специальное значение host настраивает тот же часовой пояс, что и у хоста Proxmox.

unprivileged

boolean

Указывает, должен ли контейнер быть с пониженными правами.

Значение по умолчанию изменилось на true в community.general 7.0.0. Ранее оно было false.

Варианты:

  • false
  • true ← (default)

update

boolean

added in community.general 8.1.0

Если true, контейнер будет обновлен новыми значениями.

Варианты:

  • false ← (default)
  • true

validate_certs

boolean

Если false, SSL-сертификаты проверяться не будут.

Это следует использовать только на лично контролируемых сайтах, использующих самозаверяющие сертификаты.

Варианты:

  • false ← (default)
  • true

vmid

integer

Указывает ID экземпляра.

Если не указано, следующий доступный ID будет получен из ProxmoxAPI.

Атрибуты

Атрибут

Поддержка

Описание

action_group

Группа действий: community.general.proxmox

Добавлена в community.general 9.0.0

Используйте group/community.general.proxmox в module_defaults для установки значений по умолчанию для данного модуля.

check_mode

Поддержка: нет

Может работать в check_mode и возвращать прогноз статуса изменения без модификации целевого объекта.

diff_mode

Поддержка: нет

Вернёт подробности о том, что изменилось (или, возможно, требует изменения в check_mode) при использовании режима diff.

См. также

См. также

community.general.proxmox_vm_info

Получение информации об одной или нескольких виртуальных машинах Proxmox VE.

Примеры

- name: Create new container with minimal options
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'

- name: Create new container with minimal options specifying disk storage location and size
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    disk: 'local-lvm:20'

- name: Create new container with minimal options specifying disk storage location and size via disk_volume
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    disk_volume:
      storage: local
      size: 20

- name: Create new container with hookscript and description
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    hookscript: 'local:snippets/vm_hook.sh'
    description: created with ansible

- name: Create new container automatically selecting the next available vmid.
  community.general.proxmox:
    node: 'uk-mc02'
    api_user: 'root@pam'
    api_password: '1q2w3e'
    api_host: 'node1'
    password: '123456'
    hostname: 'example.org'
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'

- name: Create new container with minimal options with force(it will rewrite existing container)
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    force: true

- name: Create new container with minimal options use environment PROXMOX_PASSWORD variable(you should export it before)
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'

- name: Create new container with minimal options defining network interface with dhcp
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,ip=dhcp,ip6=dhcp,bridge=vmbr0"

- name: Create new container with minimal options defining network interface with static ip
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.2/24,bridge=vmbr0"

- name: Create new container with more options defining network interface with static ip4 and ip6 with vlan-tag and mtu
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.2/24,ip6=fe80::1227/64,gw6=fe80::1,bridge=vmbr0,firewall=1,tag=934,mtu=1500"

- name: Create new container with minimal options defining a mount with 8GB
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    mounts:
      mp0: "local:8,mp=/mnt/test/"

- name: Create new container with minimal options defining a mount with 8GB using mount_volumes
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    mount_volumes:
      - id: mp0
        storage: local
        size: 8
        mountpoint: /mnt/test

- name: Create new container with minimal options defining a cpu core limit
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    cores: 2

- name: Create new container with minimal options and same timezone as proxmox host
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    timezone: host

- name: Create a new container with nesting enabled and allows the use of CIFS/NFS inside the container.
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    password: 123456
    hostname: example.org
    ostemplate: 'local:vztmpl/ubuntu-14.04-x86_64.tar.gz'
    features:
     - nesting=1
     - mount=cifs,nfs

- name: >
    Create a linked clone of the template container with id 100. The newly created container with be a
    linked clone, because no storage parameter is defined
  community.general.proxmox:
    vmid: 201
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    clone: 100
    hostname: clone.example.org

- name: Create a full clone of the container with id 100
  community.general.proxmox:
    vmid: 201
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    clone: 100
    hostname: clone.example.org
    storage: local

- name: Update container configuration
  community.general.proxmox:
    vmid: 100
    node: uk-mc02
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    netif:
      net0: "name=eth0,gw=192.168.0.1,ip=192.168.0.3/24,bridge=vmbr0"
    update: true

- name: Start container
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started

- name: >
    Start container with mount. You should enter a 90-second timeout because servers
    with additional disks take longer to boot
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: started
    timeout: 90

- name: Stop container
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: stopped

- name: Stop container with force
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    force: true
    state: stopped

- name: Restart container(stopped or mounted container you can't restart)
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: restarted

- name: Convert container to template
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: template

- name: Convert container to template (stop container if running)
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: template
    force: true

- name: Remove container
  community.general.proxmox:
    vmid: 100
    api_user: root@pam
    api_password: 1q2w3e
    api_host: node1
    state: absent

Авторы

  • Sergei Antipov (@UnderGreen)

Ссылки на коллекции

  • Система отслеживания задач
  • Репозиторий (Исходные коды)
  • Задать вопрос
  • Отправить отчет об ошибке
  • Запросить новую функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/proxmox_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API