Spec-Zone.ru › Ansible 2.10

community.kubevirt.kubevirt_vm – Управление виртуальными машинами KubeVirt

Примечание

Этот плагин входит в коллекцию community.kubevirt (версия 1.0.0).

Для его установки используйте: ansible-galaxy collection install community.kubevirt.

Для использования в плейбуке укажите: community.kubevirt.kubevirt_vm.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Описание

  • Используйте Openshift Python SDK для управления состоянием виртуальных машин KubeVirt.

Требования

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

  • openshift >= 0.8.2
  • python >= 2.7

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
affinity
словарь
Описывает правила планирования размещения узла для виртуальной машины.
hard
словарь
Если требования по родству, указанные в этом поле, не выполнены во время планирования, виртуальная машина не будет размещена на узле. Если требования по родству, указанные в этом поле, перестанут выполняться в какой-либо момент во время выполнения виртуальной машины (например, из-за обновления метки виртуальной машины), система может или не может попытаться в конечном итоге изгнать виртуальную машину с её узла. При наличии нескольких элементов списки узлов, соответствующие каждому term, пересекаются, т.е. все условия должны быть выполнены.
soft
словарь
Планировщик предпочтительно будет размещать виртуальные машины на узлах, удовлетворяющих выражениям родства, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т.е. для каждого узла, который удовлетворяет всем требованиям планирования (запрос ресурсов, выражения родства requiredDuringScheduling и т.д.), вычислить сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел имеет виртуальные машины, которые соответствуют соответствующему term; узлы с наибольшей суммой являются наиболее предпочтительными.
anti_affinity
словарь
Описывает правила планирования антиродства виртуальных машин, например, избегать размещения этой виртуальной машины на одном узле, в одной зоне и т.д. с другими виртуальными машинами.
hard
словарь
Если требования по антиродству, указанные в этом поле, не выполнены во время планирования, виртуальная машина не будет размещена на узле. Если требования по антиродству, указанные в этом поле, перестанут выполняться в какой-либо момент во время выполнения виртуальной машины (например, из-за обновления метки виртуальной машины), система может или не может попытаться в конечном итоге изгнать виртуальную машину с её узла. При наличии нескольких элементов списки узлов, соответствующие каждому term, пересекаются, т.е. все условия должны быть выполнены.
soft
словарь
Планировщик предпочтительно будет размещать виртуальные машины на узлах, удовлетворяющих выражениям антиродства, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т.е. для каждого узла, который удовлетворяет всем требованиям планирования (запрос ресурсов, выражения антиродства requiredDuringScheduling и т.д.), вычислить сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел имеет виртуальные машины, которые соответствуют соответствующему term; узлы с наибольшей суммой являются наиболее предпочтительными.
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
словарь
Представляет источник данных пользователя NoCloud cloud-init. Данные NoCloud будут добавлены в качестве диска к виртуальной машине. Требуется надлежащая установка cloud-init внутри гостевой системы. Дополнительная информация https://kubevirt.io/api-reference/master/definitions.html#_v1_cloudinitnocloudsource
context
строка
Имя контекста, найденного в файле конфигурации. Также можно указать через переменную окружения K8S_AUTH_CONTEXT.
cpu_cores
целое число
Количество ядер процессора.
cpu_features
список / элементы=строка
Список словарей для настройки функций, предоставляемых выбранной моделью процессора.
Примечание: Атрибут политики можно либо опустить, либо задать одно из следующих значений: 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
логическое значение
    Варианты:
  • нет ←
  • да
Если (истина), создаётся виртуальная машина с временными ресурсами. После уничтожения она больше не будет доступна.
Работает только с state present и absent.
force
логическое значение
    Варианты:
  • нет ←
  • да
Если установлено no, и состояние равно present, существующий объект будет заменён.
headless
строка
Укажите, должна ли виртуальная машина иметь минимальную конфигурацию устройства видео и графики.
По умолчанию для VirtualMachineInstance будет применена минимальная конфигурация устройства видео и графики. Устройство видео совместимо с vga и имеет размер памяти 16 МБ.
host
строка
Укажите URL для доступа к API. Также можно указать через переменную окружения K8S_AUTH_HOST.
hostname
строка
Указывает имя хоста виртуальной машины. Имя хоста будет установлено либо DHCP, либо cloud-init (если настроен), либо будет использовано имя виртуальной машины.
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.
метки
словарь
Метки — это пары ключ/значение, которые прикреплены к виртуальным машинам. Метки предназначены для задания идентификационных атрибутов виртуальных машин, имеющих смысл и значение для пользователей, но не подразумевают семантики для основной системы. Метки могут использоваться для организации и выбора подмножеств виртуальных машин. Метки могут быть прикреплены к виртуальным машинам при их создании, а затем добавлены и изменены в любое время.
Дополнительная информация о метках, используемых для внутренней реализации https://kubevirt.io/user-guide/#/misc/annotations_and_labels
тип_машины
строка
Тип машины QEMU — это фактический чипсет виртуальной машины.
память
строка
Объем памяти, запрашиваемый виртуальной машиной.
Например, 1024Mi.
предел_памяти
строка
Максимальный объем памяти, используемый виртуальной машиной.
Например, 1024Mi.
тип_слияния
список / элементы=строка
    Варианты:
  • json
  • слияние
  • стратегическое_слияние
Нужно ли переопределить стандартный подход к слиянию патчей с помощью определенного типа.
Если задано несколько типов слияния, типы слияния будут проверены в порядке следования.
По умолчанию ['strategic-merge', 'merge'], что идеально подходит для использования одних и тех же параметров для типов ресурсов, которые объединяют пользовательские ресурсы и встроенные ресурсы, поскольку определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния.
См. https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment
имя
строка / обязательно
Имя виртуальной машины.
пространство_имен
строка / обязательно
Пространство имен, в котором существует виртуальная машина.
сродство_узла
словарь
Описание правил планирования сродства ВМ, например, разместить эту ВМ на том же узле, зоне и т. д., что и некоторые другие ВМ
жесткий
словарь
Если требования сродства, указанные в этом поле, не выполнены на стадии планирования, ВМ не будет запланирована на узел. Если требования сродства, указанные в этом поле, перестанут выполняться в какой-то момент во время выполнения ВМ (например, из-за обновления), система может или не может попытаться в конечном итоге удалить ВМ с узла.
мягкий
словарь
Планировщик предпочтёт планировать ВМ на узлы, удовлетворяющие выражениям сродства, указанным в этом поле, но может выбрать узел, нарушающий одно или несколько выражений. Наиболее предпочтительным узлом является тот, у которого наибольшая сумма весов, т. е. для каждого узла, удовлетворяющего всем требованиям планирования (запрос на ресурсы, выражения сродства, требуемые во время планирования и т. д.), вычислите сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел соответствует соответствующим выражениям соответствия; узлы с наибольшей суммой являются наиболее предпочтительными.
пароль
строка
Укажите пароль для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_PASSWORD.
Пожалуйста, прочтите описание опции username для обсуждения случаев применения этой опции.
persist_config
булево
    Варианты:
  • нет
  • да
Сохранять ли токены обновления конфигурации kube. Также можно указать через переменную среды K8S_AUTH_PERSIST_CONFIG.
Когда контекст k8s использует учетные данные пользователя с токенами обновления (например, oidc или gke/gcloud auth), токен обновляется библиотекой python k8s, но по умолчанию не сохраняется. Таким образом, старый токен обновления может истечь, и следующая аутентификация может завершиться неудачно. Установка этого флага в значение true сообщит библиотеке python k8s о сохранении нового токена обновления в файл конфигурации kube.
По умолчанию false.
Обратите внимание, что текущая версия библиотеки python k8s пока не поддерживает установку этого флага в значение True.
Исправление для этой библиотеки python k8s находится здесь: https://github.com/kubernetes-client/python-base/pull/169
прокси
строка
URL HTTP-прокси, который следует использовать для подключения. Также можно указать через переменную среды K8S_AUTH_PROXY.
Обратите внимание, что этот модуль не использует стандартные настройки прокси из среды (например, HTTP_PROXY).
определение_ресурса
словарь
Частичное YAML-определение создаваемого/обновляемого объекта. Здесь вы можете определить параметры ресурсов Kubernetes, не покрытые параметрами этого модуля.
ПРИМЕЧАНИЕ: определение_ресурса имеет меньший приоритет, чем параметры модуля. Если вы попытаетесь определить, например, metadata.namespace здесь, это значение будет проигнорировано, и вместо этого будет использовано пространство_имен.

псевдонимы: определение, встроенный
smbios_uuid
строка
Для обеспечения согласованного представления виртуального оборудования для гостевой ОС можно установить UUID SMBIOS.
состояние
строка
    Варианты:
  • существует ←
  • отсутствует
  • работает
  • остановлен
Установите виртуальную машину как существует, отсутствует, работает или остановлен.
существует - Создать или обновить виртуальную машину. (И запустить ее, если она временная.)
отсутствует - Удалить виртуальную машину.
работает - Создать или обновить виртуальную машину и запустить ее.
остановлен - Остановить виртуальную машину. (Это удаляет временные ВМ.)
поддомен
строка
Если указано, полное доменное имя виртуальной машины будет hostname.subdomain.namespace.svc.cluster_domain. Если не указано, виртуальная машина вообще не будет иметь доменного имени. Запись DNS будет разрешаться до виртуальной машины, независимо от того, может ли сама виртуальная машина получить имя хоста.
таблетки
список / элементы=строка
Укажите таблетки, которые будут использоваться в качестве устройств ввода
шаблон
строка
Имя шаблона, который будет использоваться при создании виртуальной машины.
параметры_шаблона
словарь
Новые значения параметров из шаблона.
имя_пользователя
строка
Укажите имя пользователя для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_USERNAME.
Обратите внимание, что это работает только с кластерами, настроенными на использование HTTP Basic Auth. Если ваш кластер имеет другой вид аутентификации (например, OAuth2 в OpenShift), эта опция не будет работать должным образом, и вам следует обратиться к модулю k8s_auth, так как он может выполнять нужные вам действия.
validate_certs
булево
    Варианты:
  • нет
  • да
Проверять ли сертификаты SSL API-сервера. Также можно указать через переменную среды K8S_AUTH_VERIFY_SSL.

псевдонимы: verify_ssl
подождать
булево
    Варианты:
  • нет
  • да ←
True, если модуль должен ожидать, пока ресурс перейдет в нужное состояние.
wait_sleep
строка
По умолчанию:
5
Количество секунд ожидания между проверками.
wait_timeout
целое
По умолчанию:
120
Время в секундах, которое модуль должен ждать, пока ресурс перейдет в нужное состояние.

Примечания

Примечание

  • Python-клиент OpenShift оборачивает Python-клиент K8s, предоставляя полный доступ ко всем API и моделям, доступным на обеих платформах. Подробную информацию о версии API и дополнительную информацию см. на сайте https://github.com/openshift/openshift-restclient-python
  • Чтобы избежать ошибок проверки сертификатов SSL, когда validate_certs имеет значение True, полная цепочка сертификатов API-сервера должна быть предоставлена через ca_cert или в файле kubeconfig.
  • Для использования этого модуля необходимо установить Openshift Python SDK. Чтобы убедиться, что он установлен с правильной версией, вы можете создать следующую задачу: pip: name=openshift>=0.8.2

Примеры

- name: Start virtual machine 'myvm'
  community.kubevirt.kubevirt_vm:
      state: running
      name: myvm
      namespace: vms

- name: Create virtual machine 'myvm' and start it
  community.kubevirt.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
  community.kubevirt.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
  community.kubevirt.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
  community.kubevirt.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
  community.kubevirt.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
      node_affinity:
        soft:
          - weight: 1
            term:
              match_expressions:
                - key: security
                  operator: In
                  values:
                    - S2

- name: Create virtual machine with datavolume and specify node affinity
  community.kubevirt.kubevirt_vm:
    name: myvm
    namespace: default
    memory: 1024Mi
    datavolumes:
      - name: mydv
        source:
          http:
            url: https://url/disk.qcow2
        pvc:
          accessModes:
            - ReadWriteOnce
          storage: 5Gi
    node_affinity:
      hard:
        - term:
            match_expressions:
              - key: security
                operator: In
                values:
                  - S1

- name: Remove virtual machine 'myvm'
  community.kubevirt.kubevirt_vm:
      state: absent
      name: myvm
      namespace: vms

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:

Ключ Возвращаемое Описание
kubevirt_vm
сложный
успех
Спецификация словаря виртуальной машины, возвращаемая API.
Этот словарь содержит все значения, возвращаемые API KubeVirt, все параметры описаны здесь https://kubevirt.io/api-reference/master/definitions.html#_v1_virtualmachine



Авторы

  • Команда 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.10/collections/community/kubevirt/kubevirt_vm_module.html

Spec-Zone.ru

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