Spec-Zone.ru › Ansible 2.9

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

Новая версия с 2.8.

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

Обзор

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

Требования

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

  • openshift >= 0.8.2
  • python >= 2.7

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
affinity
словарь
добавлено в 2.9
Описывает правила планирования аффинирования узлов для виртуальной машины.
hard
словарь
Если требования аффинирования, указанные в этом поле, не будут выполнены во время планирования, виртуальная машина не будет запланирована на узел. Если требования аффинирования, указанные в этом поле, перестанут выполняться в какой-то момент во время выполнения виртуальной машины (например, из-за обновления метки виртуальной машины), система может или не может попытаться в конечном итоге выгнать виртуальную машину с её узла. При наличии нескольких элементов списки узлов, соответствующие каждому term, пересекаются, т. е. должны быть удовлетворены все условия.
soft
словарь
Планировщик будет предпочитать размещать виртуальные машины на узлах, удовлетворяющих выражениям аффинирования, указанным в этом поле, но может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, имеет наибольшую сумму весов, т. е. для каждого узла, удовлетворяющего всем требованиям планирования (запрос ресурсов, выражения аффинирования requiredDuringScheduling и т. д.), вычисляется сумма, проходя по элементам этого поля и добавляя weight к сумме, если узел имеет виртуальные машины, которые соответствуют соответствующему term; узлы с наибольшей суммой являются наиболее предпочтительными.
anti_affinity
словарь
добавлено в 2.9
Описывает правила планирования антиаффинирования виртуальных машин, например, избегать размещения этой виртуальной машины на одном узле, в той же зоне и т. д., что и некоторые другие виртуальные машины.
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, и state — present, существующий объект будет заменён.
headless
-
Указывает, должна ли виртуальная машина иметь подключённую минимальную конфигурацию устройства видео и графики.
По умолчанию для VirtualMachineInstance будет применена минимальная конфигурация устройства видео и графики. Видеоустройство совместимо с vga и имеет размер памяти 16 МБ.
host
строка
Укажите URL для доступа к API. Также может быть указан через переменную среды K8S_AUTH_HOST.
имя_хоста
-
добавлен в 2.9
Указывает имя хоста виртуальной машины. Имя хоста будет установлено либо с помощью DHCP, cloud-init (если настроен), либо будет использовано имя виртуальной машины.
размер_гигастраницы
строка
Укажите размер гигастраницы.
интерфейсы
список
Интерфейс определяет виртуальный сетевой интерфейс виртуальной машины (также называется фронтальным интерфейсом).
Все возможные параметры конфигурации интерфейсов доступны по адресу https://kubevirt.io/api-reference/master/definitions.html#_v1_interface
Каждый интерфейс должен указывать сеть, которая определяет, с каким логическим или физическим устройством он подключен (также называется бэкендом). Все возможные параметры конфигурации сети доступны по адресу 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
имя
строка / обязательно
Имя виртуальной машины.
пространство_имен
строка / обязательно
Пространство имен, в котором существует виртуальная машина.
привязка_узла
словарь
добавлен в 2.9
Описывает правила планирования привязки виртуальных машин, например, размещение этой виртуальной машины на одном узле, зоне и т. д. с другими виртуальными машинами.
жесткий
словарь
Если требования привязки, указанные в этом поле, не выполняются во время планирования, виртуальная машина не будет запланирована на узел. Если требования привязки, указанные в этом поле, перестанут выполняться в какой-то момент во время работы виртуальной машины (например, из-за обновления), система может или не может попытаться в конечном итоге изгнать виртуальную машину с ее узла.
мягкий
словарь
Планировщик будет предпочитать планировать виртуальные машины на узлы, удовлетворяющие выражениям привязки, указанным в этом поле, но может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочитается больше всего, — это узел с наибольшей суммой весов, т. е. для каждого узла, который соответствует всем требованиям планирования (запрос ресурсов, требования привязки во время планирования и т. д.), вычислите сумму, итеративно переходя по элементам этого поля и добавляя weight к сумме, если узел соответствует соответствующим выражениям сопоставления; узлы с наибольшей суммой являются наиболее предпочтительными.
пароль
строка
Укажите пароль для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_PASSWORD.
Прочитайте описание опции username для обсуждения случаев, когда эта опция применима.
прокси
-
добавлен в 2.9
URL HTTP-прокси, который следует использовать для подключения. Также может быть указан через переменную окружения K8S_AUTH_PROXY.
Обратите внимание, что этот модуль не подхватывает типичные параметры прокси из среды (например, HTTP_PROXY).
определение_ресурса
словарь
Частичное YAML-определение объекта, создаваемого/обновляемого. Здесь вы можете определить параметры Kubernetes-ресурса, не охваченные параметрами этого модуля.
ПРИМЕЧАНИЕ: определение_ресурса имеет меньший приоритет, чем параметры модуля. Если вы попытаетесь определить, например, metadata.namespace здесь, это значение будет проигнорировано, и вместо него будет использовано namespace.

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

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

Примечания

Примечание

  • Клиентский модуль OpenShift для Python обертывает клиентский модуль K8s для Python, предоставляя полный доступ ко всем 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'
  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
      node_affinity:
        soft:
          - weight: 1
            term:
              match_expressions:
                - key: security
                  operator: In
                  values:
                    - S2

- name: Create virtual machine with datavolume and specify node affinity
  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'
  kubevirt_vm:
      state: absent
      name: myvm
      namespace: vms

Возвращаемые значения

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

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



Статус

  • Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
  • Этот модуль поддерживается сообществом Ansible. [сообщество]

Авторы

  • Команда 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.9/modules/kubevirt_vm_module.html

Spec-Zone.ru

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