kubevirt_vm – Управление виртуальными машинами KubeVirt
Новая версия с 2.8.
Обзор
- Используйте Openshift Python SDK для управления состоянием виртуальных машин KubeVirt.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- openshift >= 0.8.2
- python >= 2.7
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_key строка | Токен, используемый для аутентификации с API. Также может быть задан через переменную окружения K8S_AUTH_API_KEY. | |
| bootloader строка | Укажите загрузчик виртуальной машины. По умолчанию все виртуальные машины используют BIOS для загрузки. | |
| ca_cert путь | Путь к сертификату CA, используемому для аутентификации с API. Для избежания ошибок проверки сертификата необходимо указать полный цепочку сертификатов. Также может быть задан через переменную окружения K8S_AUTH_SSL_CA_CERT. псевдонимы: ssl_ca_cert | |
| client_cert путь | Путь к сертификату, используемому для аутентификации с API. Также может быть задан через переменную окружения K8S_AUTH_CERT_FILE. псевдонимы: cert_file | |
| client_key путь | Путь к файлу ключа, используемому для аутентификации с API. Также может быть задан через переменную окружения K8S_AUTH_KEY_FILE. псевдонимы: key_file | |
| cloud_init_nocloud словарь | Представляет источник данных пользователя cloud-init NoCloud. Данные NoCloud будут добавлены как диск к виртуальной машине. Требуется соответствующая установка cloud-init в гостевой системе. Дополнительная информация https://kubevirt.io/api-reference/master/definitions.html#_v1_cloudinitnocloudsource
| |
| context строка | Имя контекста, найденного в файле конфигурации. Также может быть задан через переменную окружения K8S_AUTH_CONTEXT. | |
| cpu_cores целое число | Количество ядер процессора. | |
| cpu_features список | Список словарей для настройки функций, предоставляемых выбранной моделью процессора.
Примечание: Атрибут Policy может быть опущен или содержать один из следующих политик: force, require, optional, disable, forbid.
Примечание: Если политика опущена для функции, она по умолчанию устанавливается как require. Дополнительная информация о политиках: https://libvirt.org/formatdomain.html#elementsCPU
| |
| cpu_limit целое число | Преобразуется в значение миллиядер и умножается на 100. Результирующее значение — общее количество времени работы процессора, которое может использовать контейнер каждые 100 мс. Виртуальная машина не может использовать больше времени работы процессора, чем ее доля во время этого интервала. | |
| cpu_model строка | Модель процессора. Список доступных моделей можно найти здесь: https://github.com/libvirt/libvirt/blob/master/src/cpu_map/index.xml.
Примечание: Пользователь может определить модель процессора по умолчанию как default-cpu-model в kubevirt-config ConfigMap. Если не задано, используется host-model.
Примечание: Убедитесь, что модель процессора узла, на котором вы запускаете ВМ, имеет ту же или более высокую семейство процессоров.
Примечание: Если модель процессора не была определена, у ВМ будет модель процессора, наиболее близкая к модели, используемой на узле, где ВМ запускается. | |
| cpu_shares целое число | Укажите долю процессора. | |
| datavolumes список | DataVolumes — способ автоматизации импорта дисков виртуальной машины на pvcs во время запуска виртуальной машины. Без использования DataVolume пользователи должны подготовить pvc с образом диска перед назначением его виртуальной машине или манифесту VMI. С DataVolume создание pvc и импорт выполняются автоматически от имени пользователя. | |
| disks список | Список словарей, определяющих диски виртуальной машины. Диск может быть доступен через четыре разных типа: disk, lun, cdrom, floppy. Все возможные параметры конфигурации доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_disk
Каждый диск должен иметь указанный volume, который объявляет тип тома диска. Все возможные параметры конфигурации тома доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_volume. | |
| ephemeral логическое значение |
| Если (true), будет создана временная виртуальная машина. При удалении она больше недоступна. Работает только с state present и absent. |
| force логическое значение |
| Если установлено no, и состояние — present, существующий объект будет заменён. |
| headless - | Укажите, должна ли виртуальная машина иметь минимальную конфигурацию устройства видео и графики. По умолчанию для VirtualMachineInstance будет применена минимальная конфигурация устройства видео и графики. Видеоустройство совместимо с VGA и имеет размер памяти 16 МБ. | |
| host строка | Укажите URL для доступа к API. Также может быть задан через переменную окружения K8S_AUTH_HOST. | |
| hugepage_size строка | Укажите размер огромных страниц. | |
| interfaces список | Интерфейс определяет виртуальный сетевой интерфейс виртуальной машины (также называется передним интерфейсом). Все возможные параметры конфигурации интерфейсов доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_interface
Каждый интерфейс должен иметь указанный network, который объявляет, с каким логическим или физическим устройством он подключен (также называется задним интерфейсом). Все возможные параметры конфигурации сети доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_network. | |
| kubeconfig путь | Путь к существующему файлу конфигурации Kubernetes. Если не указано, и не указаны другие параметры подключения, клиент openshift попытается загрузить файл конфигурации по умолчанию из ~/.kube/config.json. Также может быть задан через переменную окружения K8S_AUTH_KUBECONFIG. | |
| labels словарь | Метки — пары «ключ/значение», прикрепленные к виртуальным машинам. Метки предназначены для указания идентификационных атрибутов виртуальных машин, имеющих значение для пользователей, но не прямо подразумевают семантику для ядра системы. Метки могут использоваться для организации и выбора подмножеств виртуальных машин. Метки могут быть прикреплены к виртуальным машинам во время создания и впоследствии добавлены и изменены в любое время. Подробнее о метках, используемых для внутренней реализации https://kubevirt.io/user-guide/#/misc/annotations_and_labels
| |
| machine_type строка | Тип машины QEMU — фактический чипсет виртуальной машины. | |
| memory строка | Объем памяти, запрашиваемый виртуальной машиной. Например, 1024Mi. | |
| memory_limit строка | Максимальный объем памяти, используемый виртуальной машиной. Например, 1024Mi. | |
| merge_type список |
| Укажите, нужно ли переопределить подход к слиянию патчей по умолчанию с использованием конкретного типа. Если задано несколько типов слияния, типы слияния будут использоваться в указанном порядке. По умолчанию ['strategic-merge', 'merge'], что идеально подходит для использования одних и тех же параметров для типов ресурсов, которые объединяют пользовательские ресурсы и встроенные ресурсы, так как определения пользовательских ресурсов, как правило, не могут обновляться с помощью обычного стратегического слияния. |
| имя строка / обязательно | Имя виртуальной машины. | |
| пространство_имен строка / обязательно | Пространство имён, в котором существует виртуальная машина. | |
| пароль строка | Укажите пароль для аутентификации с API. Также можно указать через переменную окружения K8S_AUTH_PASSWORD. Пожалуйста, ознакомьтесь с описанием параметра username для понимания случаев применения этого параметра. | |
| определение_ресурса словарь | Частичное YAML-определение создаваемого/обновляемого объекта. Здесь можно определить параметры Kubernetes-ресурса, не покрытые параметрами данного модуля. ПРИМЕЧАНИЕ: определение_ресурса имеет более низкий приоритет, чем параметры модуля. Если вы попытаетесь определить, например, metadata.namespace здесь, это значение будет проигнорировано, и вместо него будет использовано пространство_имен. алиасы: определение, встроенное | |
| smbios_uuid строка | Для обеспечения согласованного представления виртуализированного оборудования для гостевой ОС можно установить SMBIOS UUID. | |
| состояние строка |
| Установите виртуальную машину в наличие, отсутствует, работает или остановлено.
наличие - Создать или обновить виртуальную машину. (И запустить её, если она временная).
отсутствует - Удалить виртуальную машину.
работает - Создать или обновить виртуальную машину и запустить её.
остановлено - Остановить виртуальную машину. (Это удаляет временные виртуальные машины). |
| таблетки список | Укажите используемые таблетки как устройства ввода. | |
| шаблон строка | Имя шаблона, используемого при создании виртуальной машины. | |
| параметры_шаблона словарь | Новые значения параметров из шаблона. | |
| имя_пользователя строка | Укажите имя пользователя для аутентификации с API. Также можно указать через переменную окружения K8S_AUTH_USERNAME. Обратите внимание, что это работает только с кластерами, настроенными на использование HTTP Basic Auth. Если ваш кластер имеет другой тип аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует изучить модуль k8s_auth, поскольку он может выполнять необходимые действия. | |
| проверять_сертификаты логическое |
| Выполнять проверку SSL-сертификатов API-сервера. Также можно указать через переменную окружения K8S_AUTH_VERIFY_SSL. алиасы: проверять_ssl |
| ждать логическое |
|
Истина, если модуль должен ждать, пока ресурс не перейдёт в нужное состояние. |
| время_ожидания целое | По умолчанию: 120 | Время в секундах, которое модуль должен ждать, пока ресурс не перейдёт в нужное состояние. |
Примечания
Примечание
- Клиент OpenShift Python оборачивает K8s Python клиент, предоставляя полный доступ ко всем API и моделям, доступным на обеих платформах. Для получения информации о версиях API и дополнительной информации посетите https://github.com/openshift/openshift-restclient-python
- Чтобы избежать ошибок проверки SSL-сертификатов, когда
validate_certsравно истина, цепочка полного сертификата API-сервера должна быть предоставлена черезca_certили в файле kubeconfig. - Для использования этого модуля необходимо установить Openshift Python SDK. Чтобы убедиться, что он установлен с правильной версией, можно создать следующую задачу: pip: name=openshift>=0.8.2
Примеры
- name: Start virtual machine 'myvm'
kubevirt_vm:
state: running
name: myvm
namespace: vms
- name: Create virtual machine 'myvm' and start it
kubevirt_vm:
state: running
name: myvm
namespace: vms
memory: 64Mi
cpu_cores: 1
bootloader: efi
smbios_uuid: 5d307ca9-b3ef-428c-8861-06e72d69f223
cpu_model: Conroe
headless: true
hugepage_size: 2Mi
tablets:
- bus: virtio
name: tablet1
cpu_limit: 3
cpu_shares: 2
disks:
- name: containerdisk
volume:
containerDisk:
image: kubevirt/cirros-container-disk-demo:latest
path: /custom-disk/cirros.img
disk:
bus: virtio
- name: Create virtual machine 'myvm' with multus network interface
kubevirt_vm:
name: myvm
namespace: vms
memory: 512M
interfaces:
- name: default
bridge: {}
network:
pod: {}
- name: mynet
bridge: {}
network:
multus:
networkName: mynetconf
- name: Combine inline definition with Ansible parameters
kubevirt_vm:
# Kubernetes specification:
definition:
metadata:
labels:
app: galaxy
service: web
origin: vmware
# Ansible parameters:
state: running
name: myvm
namespace: vms
memory: 64M
disks:
- name: containerdisk
volume:
containerDisk:
image: kubevirt/cirros-container-disk-demo:latest
path: /custom-disk/cirros.img
disk:
bus: virtio
- name: Start ephemeral virtual machine 'myvm' and wait to be running
kubevirt_vm:
ephemeral: true
state: running
wait: true
wait_timeout: 180
name: myvm
namespace: vms
memory: 64M
labels:
kubevirt.io/vm: myvm
disks:
- name: containerdisk
volume:
containerDisk:
image: kubevirt/cirros-container-disk-demo:latest
path: /custom-disk/cirros.img
disk:
bus: virtio
- name: Start fedora vm with cloud init
kubevirt_vm:
state: running
wait: true
name: myvm
namespace: vms
memory: 1024M
cloud_init_nocloud:
userData: |-
#cloud-config
password: fedora
chpasswd: { expire: False }
disks:
- name: containerdisk
volume:
containerDisk:
image: kubevirt/fedora-cloud-container-disk-demo:latest
path: /disk/fedora.qcow2
disk:
bus: virtio
- name: Remove virtual machine 'myvm'
kubevirt_vm:
state: absent
name: myvm
namespace: vms
Значения возврата
Общие возвращаемые значения описаны здесь, следующие — поля, уникальные для данного модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| kubevirt_vm сложное | успех | Спецификация словаря виртуальной машины, возвращённая API. Этот словарь содержит все значения, возвращённые API KubeVirt; все опции описаны здесь https://kubevirt.io/api-reference/master/definitions.html#_v1_virtualmachine
|
Состояние
- Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Команда KubeVirt (@kubevirt)
Подсказка
Если вы обнаружите какие-либо проблемы в данной документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 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/kubevirt_vm_module.html