xenserver_guest – Управляет виртуальными машинами, работающими на хосте или пуле Citrix Hypervisor/XenServer
Новая версия с 2.8.
Обзор
- Этот модуль может использоваться для создания новых виртуальных машин из шаблонов или других виртуальных машин, изменения различных компонентов виртуальной машины, таких как сеть и диск, переименования виртуальной машины и удаления виртуальной машины с ассоциированными компонентами.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- python >= 2.6
- XenAPI
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| cdrom словарь | Настройка CD-ROM для ВМ. Все параметры чувствительны к регистру. Допустимые параметры: - type (строка): Тип CD-ROM, допустимые варианты none или iso. С none устройство CD-ROM будет присутствовать, но пустым.- iso_name (строка): Имя файла ISO-образа из библиотек ISO XenServer (подразумевает type: iso). Требуется, если type установлено в iso. | |
| custom_params список | Определяет список пользовательских параметров ВМ для установки на ВМ. Полезно для опытных пользователей, знакомых с управлением параметрами ВМ через xe CLI. Объект пользовательского значения содержит два поля key и value (см. пример ниже). | |
| disks список | Список дисков для добавления к ВМ. Все параметры чувствительны к регистру. Удаление или отключение существующих дисков ВМ не поддерживается. Обязательные параметры для каждой записи: - size_[tb,gb,mb,kb,b] (целое число): Размер хранилища диска в указанной единице. Для переконфигурации этого параметра ВМ необходимо выключить.Необязательные параметры для каждой записи: - name (строка): Имя диска. Также можно использовать name_label как псевдоним.- name_desc (строка): Описание диска.- sr (строка): Хранилище, на котором будет создан диск. Если не указано, будет использоваться по умолчанию. Нельзя использовать для перемещения диска в другое хранилище.- sr_uuid (строка): UUID хранилища, на котором будет создан диск. Используйте, если имя хранилища не уникально.псевдонимы: disk | |
| folder строка | Папка назначения для ВМ. Этот параметр чувствителен к регистру. Пример: folder: /folder1/folder2 | |
| force логическое |
| Игнорировать предупреждения и выполнить действия. Этот параметр полезен для удаления ВМ в рабочем состоянии или переконфигурации параметров ВМ, которые требуют выключения ВМ. |
| hardware словарь | Управление аппаратными параметрами ВМ. Для переконфигурации этих параметров ВМ необходимо выключить. Допустимые параметры: - num_cpus (целое число): Количество ЦП.- num_cpu_cores_per_socket (целое число): Количество ядер на процессор. num_cpus должно быть кратным num_cpu_cores_per_socket.- memory_mb (целое число): Объем памяти в МБ. | |
| home_server строка | Имя хоста XenServer, который будет домашним сервером для ВМ. Этот параметр чувствителен к регистру. | |
| hostname строка | По умолчанию: "localhost" | Имя хоста или IP-адрес хоста XenServer или XenServer пула master. Если значение не указано в задаче, будет использовано значение переменной среды XENSERVER_HOST.псевдонимы: host, pool |
| is_template логическое |
| Преобразовать ВМ в шаблон. |
| linked_clone логическое |
| Создавать ли связанный клон из шаблона, существующей ВМ или снимка. Если нет, будет создана полная копия. Это эквивалентно параметру Use storage-level fast disk clone в XenCenter. |
| name строка / обязательно | Имя ВМ для работы. ВМ, работающие на XenServer, не обязательно имеют уникальные имена. Модуль завершится ошибкой, если найдено несколько ВМ с одинаковым именем. В случае нескольких ВМ с одинаковым именем, используйте uuid, чтобы однозначно указать ВМ для управления.Этот параметр чувствителен к регистру. псевдонимы: name_label | |
| name_desc строка | Описание ВМ. | |
| networks список | Список сетей (в порядке сетевых адаптеров). Все параметры чувствительны к регистру. Обязательные параметры для каждой записи: - name (строка): Имя сети XenServer, к которой подключить сетевой адаптер. Также можно использовать name_label как псевдоним.Необязательные параметры для каждой записи (используются для оборудования ВМ): - mac (строка): Настройка MAC-адреса интерфейса.Необязательные параметры для каждой записи (используются для настройки ОС): - type (строка): Тип назначения IPv4, допустимые значения none, dhcp или static. Значение none означает любое значение по умолчанию для ОС. В некоторых операционных системах это может быть DHCP (например, Windows) или не настроенный интерфейс (например, Linux).- ip (строка): Статический IPv4-адрес (подразумевает type: static). Может включать префикс в формате <IPv4 адрес>/<префикс> вместо использования netmask.- netmask (строка): Статическая IPv4 маска, необходимая для ip, если префикс не указан.- gateway (строка): Статический IPv4 шлюз.- type6 (строка): Тип назначения IPv6, допустимые значения none, dhcp или static. Значение none означает любое значение по умолчанию для ОС. В некоторых операционных системах это может быть DHCP (например, Windows) или не настроенный интерфейс (например, Linux).- ip6 (строка): Статический IPv6-адрес (подразумевает type6: static) с префиксом в формате <IPv6 адрес>/<префикс>.- gateway6 (строка): Статический IPv6 шлюз.псевдонимы: network | |
| password строка | Пароль для подключения к XenServer. Если значение не указано в задаче, будет использовано значение переменной среды XENSERVER_PASSWORD.псевдонимы: pass, pwd | |
| state строка |
| Укажите состояние, в котором должна находиться ВМ. Если state установлено в present, и ВМ существует, убедитесь, что конфигурация ВМ соответствует заданным параметрам.Если state установлено в present, и ВМ не существует, то ВМ развертывается с заданными параметрами.Если state установлено в absent, и ВМ существует, то ВМ удаляется со своими связанными компонентами.Если state установлено в poweredon, и ВМ не существует, то ВМ развертывается с заданными параметрами и автоматически включается. |
| state_change_timeout целое число | По умолчанию: 0 | По умолчанию модуль будет неопределенно ждать получения IP-адреса ВМ, если wait_for_ip_address: yes.Если этот параметр установлен на положительное значение, модуль вместо этого будет ждать указанное количество секунд для изменения состояния. В случае истечения времени ожидания, модуль выведет сообщение об ошибке. |
| template строка | Имя шаблона, существующей ВМ (должна быть выключена) или снимка, который должен быть использован для создания ВМ. Шаблоны/ВМ/снимки на XenServer не обязательно имеют уникальные имена. Модуль завершится ошибкой, если найдено несколько шаблонов с одинаковым именем. В случае нескольких шаблонов/ВМ/снимков с одинаковым именем, используйте template_uuid для однозначного указания исходного шаблона.Если ВМ уже существует, эта настройка будет проигнорирована. Этот параметр чувствителен к регистру. псевдонимы: template_src | |
| template_uuid строка | UUID шаблона, существующей ВМ или снимка, который должен быть использован для создания ВМ. Требуется, если имя шаблона не уникально. | |
| username строка | По умолчанию: "root" | Имя пользователя для подключения к XenServer. Если значение не указано в задаче, будет использовано значение переменной среды XENSERVER_USER.псевдонимы: admin, user |
| uuid string | UUID виртуальной машины (VM) для управления, если известно. Это уникальный идентификатор XenServer. Требуется, если имя не уникально. Обратите внимание, что предоставленный UUID будет проигнорирован при создании VM, так как XenServer создаёт UUID внутренне. | |
| validate_certs boolean |
| Разрешает подключение, когда сертификаты SSL недействительны. Установите в false, когда сертификаты ненадёжны.Если значение не указано в задаче, будет использовано значение переменной окружения XENSERVER_VALIDATE_CERTS. |
| wait_for_ip_address boolean |
| Ожидает, пока XenServer обнаружит IP-адрес для VM. Если state установлено в absent, этот параметр игнорируется.Для корректной работы требуется предварительная установка XenServer Tools на VM. |
Примечания
Примечание
- Минимальная поддерживаемая версия XenServer — 5.6.
- Модуль тестировался с XenServer 6.5, 7.1, 7.2, 7.6, Citrix Hypervisor 8.0, XCP-ng 7.6 и 8.0.
- Для получения Python-библиотеки XenAPI просто выполните
pip install XenAPIна вашем Ansible Control Node. Библиотека также доступна в Citrix Hypervisor/XenServer SDK (скачивается с веб-сайта Citrix). Скопируйте файл XenAPI.py из SDK в вашу директорию Python site-packages на вашем Ansible Control Node, чтобы использовать его. Последнюю версию библиотеки также можно получить с GitHub: https://raw.githubusercontent.com/xapi-project/xen-api/master/scripts/examples/python/XenAPI.py - Если в
hostnameне указана схема, модуль по умолчанию используетhttp://, так какhttps://проблематична в большинстве конфигураций. Убедитесь, что вы получаете доступ к хосту XenServer в надёжной среде или явно используйте схемуhttps://. - Для использования схемы
https://дляhostnameнеобходимо либо импортировать сертификат хоста в хранилище сертификатов вашей ОС, либо использоватьvalidate_certs: no, что требует библиотеки XenAPI из XenServer 7.2 SDK или более поздней версии и Python 2.7.9 или более поздней версии. - Конфигурация сети внутри гостевой ОС с использованием параметров
networks.type,networks.ip,networks.gatewayи т. д. поддерживается на XenServer 7.0 и более поздних версиях для гостевых ОС Windows с использованием официальной поддержки XenServer Guest agent для конфигурации сети. Модуль будет пытаться определить, доступна ли такая поддержка, и использовать её, в противном случае он будет использовать пользовательский метод конфигурации через xenstore. Поскольку XenServer Guest agent поддерживает только типы конфигурации сети None и Static, где None означает интерфейс с DHCP, значенияnetworks.typeиnetworks.type6noneиdhcpимеют одинаковый эффект. Дополнительная информация здесь: https://www.citrix.com/community/citrix-developer/citrix-hypervisor-developer/citrix-hypervisor-developing-products/citrix-hypervisor-staticip.html - На платформах без официальной поддержки конфигурации сети внутри гостевой ОС параметры сети будут записаны в ключ xenstore
vm-data/networks/<vif_device>. Параметры можно просмотреть с помощью инструментовxenstore lsиxenstore readна *nix-гостевых системах или через интерфейс WMI на гостевых системах Windows. Они также могут быть найдены в фактах VM в ключеinstance.xenstore_dataвозвращаемых модулем. Пользователю необходимо реализовать скрипты времени запуска или пользовательские агенты, которые будут читать параметры из xenstore и настраивать сеть с заданными параметрами. Обратите внимание, что для того, чтобы данные xenstore стали доступными в гостевой системе, необходимо перезагрузить VM, поэтому модуль потребует перезагрузки VM, если какой-либо параметр изменён. Это ограничение XenAPI и xenstore. Учитывая эти ограничения, конфигурация сети через xenstore наиболее полезна для загрузки вновь развернутых VM, гораздо реже для переконфигурации существующих. - Дополнительная информация здесь: https://support.citrix.com/article/CTX226713
Примеры
- name: Create a VM from a template
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
validate_certs: no
folder: /testvms
name: testvm_2
state: poweredon
template: CentOS 7
disks:
- size_gb: 10
sr: my_sr
hardware:
num_cpus: 6
num_cpu_cores_per_socket: 3
memory_mb: 512
cdrom:
type: iso
iso_name: guest-tools.iso
networks:
- name: VM Network
mac: aa:bb:dd:aa:00:14
wait_for_ip_address: yes
delegate_to: localhost
register: deploy
- name: Create a VM template
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
validate_certs: no
folder: /testvms
name: testvm_6
is_template: yes
disk:
- size_gb: 10
sr: my_sr
hardware:
memory_mb: 512
num_cpus: 1
delegate_to: localhost
register: deploy
- name: Rename a VM (requires the VM's UUID)
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
uuid: 421e4592-c069-924d-ce20-7e7533fab926
name: new_name
state: present
delegate_to: localhost
- name: Remove a VM by UUID
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
uuid: 421e4592-c069-924d-ce20-7e7533fab926
state: absent
delegate_to: localhost
- name: Modify custom params (boot order)
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
name: testvm_8
state: present
custom_params:
- key: HVM_boot_params
value: { "order": "ndc" }
delegate_to: localhost
- name: Customize network parameters
xenserver_guest:
hostname: "{{ xenserver_hostname }}"
username: "{{ xenserver_username }}"
password: "{{ xenserver_password }}"
name: testvm_10
networks:
- name: VM Network
ip: 192.168.1.100/24
gateway: 192.168.1.1
- type: dhcp
delegate_to: localhost
Значения возврата
Общие значения возврата документированы здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| changes список | всегда | Обнаруженные или внесённые изменения в VM Пример: [{'hardware': ['num_cpus']}, {'disks_changed': [[], ['size']]}, {'disks_new': [{'name': 'new-disk', 'name_desc': '', 'position': 2, 'size_gb': '4', 'vbd_userdevice': '2'}]}, {'cdrom': ['type', 'iso_name']}, {'networks_changed': [['mac']]}, {'networks_new': [{'name': 'Пуль-wide network associated with eth2', 'position': 1, 'vif_device': '1'}]}, 'need_poweredoff'] |
| instance словарь | всегда | Метаданные о VM Пример: {'cdrom': {'type': 'none'}, 'customization_agent': 'native', 'disks': [{'name': 'testvm_11-0', 'name_desc': '', 'os_device': 'xvda', 'size': 42949672960, 'sr': 'Локальное хранилище', 'sr_uuid': '0af1245e-bdb0-ba33-1446-57a962ec4075', 'vbd_userdevice': '0'}, {'name': 'testvm_11-1', 'name_desc': '', 'os_device': 'xvdb', 'size': 42949672960, 'sr': 'Локальное хранилище', 'sr_uuid': '0af1245e-bdb0-ba33-1446-57a962ec4075', 'vbd_userdevice': '1'}], 'domid': '56', 'folder': '', 'hardware': {'memory_mb': 8192, 'num_cpu_cores_per_socket': 2, 'num_cpus': 4}, 'home_server': '', 'is_template': False, 'name': 'testvm_11', 'name_desc': '', 'networks': [{'gateway': '192.168.0.254', 'gateway6': 'fc00::fffe', 'ip': '192.168.0.200', 'ip6': ['fe80:0000:0000:0000:e9cb:625a:32c5:c291', 'fc00:0000:0000:0000:0000:0000:0000:0001'], 'mac': 'ba:91:3a:48:20:76', 'mtu': '1500', 'name': 'Пуль-wide network associated with eth1', 'netmask': '255.255.255.128', 'prefix': '25', 'prefix6': '64', 'vif_device': '0'}], 'other_config': {'base_template_name': 'Windows Server 2016 (64-bit)', 'import_task': 'OpaqueRef:e43eb71c-45d6-5351-09ff-96e4fb7d0fa5', 'install-methods': 'cdrom', 'instant': 'true', 'mac_seed': 'f83e8d8a-cfdc-b105-b054-ef5cb416b77e'}, 'platform': {'acpi': '1', 'apic': 'true', 'cores-per-socket': '2', 'device_id': '0002', 'hpet': 'true', 'nx': 'true', 'pae': 'true', 'timeoffset': '-25200', 'vga': 'std', 'videoram': '8', 'viridian': 'true', 'viridian_reference_tsc': 'true', 'viridian_time_ref_count': 'true'}, 'state': 'poweredon', 'uuid': 'e3c0b2d5-5f05-424e-479c-d3df8b3e7cda', 'xenstore_data': {'vm-data': ''}} |
Статус
- Этот модуль не гарантирует обратную совместимость интерфейса. [preview]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Bojan Vitnik (@bvitnik) <bvitnik@mainstream.rs>
Подсказка
Если вы обнаружите какие-либо проблемы в этом документе, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/xenserver_guest_module.html