ansible_role_libvirt_vm

Libvirt VM

Эта роль настраивает и создаёт (или удаляет) виртуальные машины (VM) на гипервизоре KVM.

Требования

На хосте должна быть включена технология виртуализации (VT), и он должен быть предварительно настроен с libvirt/KVM.

Переменные роли

  • libvirt_vm_default_console_log_dir: Директория по умолчанию для хранения логов консоли VM, если не указан путь к файлу логов для конкретной VM. По умолчанию "/var/log/libvirt/qemu/".

  • libvirt_vm_image_cache_path: Директория для кэша загруженных образов. По умолчанию "/tmp/".

  • libvirt_volume_default_images_path: Директория, в которой хранятся образы экземпляров. По умолчанию '/var/lib/libvirt/images'.

  • libvirt_volume_default_type: Какой тип вспомогательного тома использует экземпляр? По умолчанию volume.

  • libvirt_volume_default_format: Формат для томов, создаваемых ролью. По умолчанию qcow2.

  • libvirt_volume_default_device: Как устройство отображается в гостевой ОС. По умолчанию disk.

  • libvirt_vm_engine: Движок виртуализации. Если не установлен, роль попытается автоматически определить оптимальный движок для использования.

  • libvirt_vm_emulator: Путь к бинарному файлу эмулятора. Если не установлен, роль попытается автоматически определить правильный эмулятор.

  • libvirt_cpu_mode_default: Режим ЦП по умолчанию, если libvirt_cpu_mode или vm.cpu_mode не определены.

  • libvirt_vm_arch: Архитектура ЦП, по умолчанию x86_64.

  • libvirt_vm_uri: Переопределяет URI подключения libvirt. Дополнительные подробности смотрите в документации libvirt.

  • libvirt_vm_virsh_default_env: Переменные, содержащиеся в этом словаре, добавляются в окружение, используемое при выполнении команд virsh.

  • libvirt_vm_clock_offset: Если определён, смещение часов экземпляра устанавливается на указанное значение. Если не определён, синхронизация установлена на localtime.

  • libvirt_vms: Список VMs для создания/уничтожения. Каждая из них может иметь следующие атрибуты:

    • state: Устанавливается в present для создания или absent для удаления VM. По умолчанию present.

    • name: Имя, которое будет присвоено VM.

    • memory_mb: Объём памяти, который будет присвоен VM, в мегабайтах.

    • vcpus: Количество вычислительных ядер VCPU, которые будут присвоены VM.

    • machine: Тип виртуальной машины. По умолчанию None, если libvirt_vm_engine - kvm, в противном случае pc-1.0.

    • cpu_mode: Режим ЦП для виртуальной машины. По умолчанию host-passthrough, если libvirt_vm_engine - kvm, в противном случае host-model. Может быть установлен в none, чтобы не настраивать режим ЦП.

    • clock_offset: Переопределяет значение по умолчанию, установленное в libvirt_vm_clock_offset.

    • enable_vnc: Если true, включает VNC для прослушивания на localhost для использования с VirtManager и подобными инструментами.

    • volumes: Список томов для подключения к VM. Каждый том определяется следующим словарём:

      • pool: Имя или UUID пула хранения, из которого должен быть выделен том.
      • name: Имя, которое будет связано с создаваемым томом; для томов типа file включите расширение, если хотите создавать тома с ним.
      • file_path: Где следует разместить образ для томов типа file; по умолчанию libvirt_volume_default_images_path.
      • device: disk или cdrom.
      • capacity: ёмкость тома (может иметь суффиксы M,G,T или MB,GB,TB и т.д.) (обязательно, когда тип disk).
      • format: включенные варианты - raw, qcow2, vmdk. Смотрите man virsh для полного списка. По умолчанию qcow2.
      • image: (опционально) URL для образа, с которым будет инициализирован том (полная копия).
      • backing_image: (опционально) имя вспомогательного тома, который предполагается уже находящимся в том же пуле (копирование по записи).
      • image и backing_image - взаимоисключающие варианты.
      • target: (опционально) Ручное влияние на тип и порядок томов.
    • interfaces: Список сетевых интерфейсов для подключения к VM. Каждый сетевой интерфейс определяется следующим словарём:

      • type: Тип интерфейса. Возможные значения:

        • network: Подключает интерфейс к именованной виртуальной сети Libvirt. Это значение по умолчанию.
        • direct: Прямое подключение интерфейса к одному из физических интерфейсов хоста, используя драйвер macvtap.
      • network: Имя сети, к которой должен быть подключён интерфейс. Должно быть указано, если и только если тип интерфейса - network.

      • mac: "Аппаратный" адрес виртуального экземпляра, если отсутствует - создаётся.

      • source: Словарь, определяющий интерфейс хоста, к которому должен быть подключен этот интерфейс VM. Должно быть указано, если и только если тип интерфейса - direct. Включает следующие атрибуты:

        • dev: Имя интерфейса хоста, к которому должен быть подключен этот интерфейс VM.
        • mode: Опции включают vepa, bridge, private и passthrough. Смотрите man virsh для дополнительных подробностей. По умолчанию vepa.
    • console_log_enabled: Если true, вывод консоли записывается в файл по пути, указанному в console_log_path, вместо PTY. Если false, вывод терминала направляется в PTY на последовательном порту 0. По умолчанию false.

    • console_log_path: Путь к файлу лога консоли. По умолчанию {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.

    • start: Нужно ли сразу запускать VM после её определения. По умолчанию true.

    • autostart: Необходимо ли запускать VM при старте хоста. По умолчанию true.

    • xml_file: Опционально предоставить изменённый XML-шаблон. Основная настройка базируется на стандартном шаблоне vm.xml.j2, чтобы включить ожидаемые выражения jinja, которые использует роль.

Примечание: следующие переменные устарели: libvirt_vm_state, libvirt_vm_name, libvirt_vm_memory_mb, libvirt_vm_vcpus, libvirt_vm_engine, libvirt_vm_machine, libvirt_vm_cpu_mode, libvirt_vm_volumes, libvirt_vm_interfaces и libvirt_vm_console_log_path. Если переменная libvirt_vms не установлена, её значение по умолчанию будет одиночным списком, содержащим спецификацию VM с использованием этих устаревших переменных.

Зависимости

Если используются диски формата qcow2, требуется qemu-img (в пакете qemu-utils).

Пример плейбука

---
- name: Создание VMs
  hosts: hypervisor
  roles:
    - role: stackhpc.libvirt-vm
      libvirt_vms:
        - state: present
          name: 'vm1'
          memory_mb: 512
          vcpus: 2
          volumes:
            - name: 'data1'
              device: 'disk'
              format: 'qcow2'
              capacity: '400GB'
              pool: 'my-pool'
            - name: 'debian-10.2.0-amd64-netinst.iso'
              type: 'file'
              device: 'cdrom'
              format: 'raw'
              target: 'hda'  # первое устройство на шине ide
          interfaces:
            - network: 'br-datacentre'

        - state: present
          name: 'vm2'
          memory_mb: 1024
          vcpus: 1
          volumes:
            - name: 'data2'
              device: 'disk'
              format: 'qcow2'
              capacity: '200GB'
              pool: 'my-pool'
            - name: 'filestore'
              type: 'file'
              file_path: '/srv/cloud/images'
              capacity: '900GB'
          interfaces:
            - type: 'direct'
              source:
                dev: 'eth123'
                mode: 'private'
            - type: 'bridge'
              source:
                dev: 'br-datacentre'

Информация об авторе

О проекте

Role to configure and create VMs on a Libvirt/KVM hypervisor

Установить
ansible-galaxy install t2d/ansible-role-libvirt-vm
Лицензия
Unknown
Загрузки
71
Владелец