t2d.ansible_role_libvirt_vm

Libvirt VM

Ta rola konfiguruje i tworzy (lub niszczy) maszyny wirtualne (VM) na hipernadzorze KVM.

Wymagania

Gospodarz powinien mieć włączoną technologię wirtualizacji (VT) i być wstępnie skonfigurowany z libvirt/KVM.

Zmienne Roli

  • libvirt_vm_default_console_log_dir: Domyślny katalog na logi konsoli VM, jeśli nie podano ścieżki do pliku logu specyficznego dla VM. Domyślnie to "/var/log/libvirt/qemu/".

  • libvirt_vm_image_cache_path: Katalog na buforowanie pobranych obrazów. Domyślnie "/tmp/".

  • libvirt_volume_default_images_path: Katalog, w którym przechowywane są obrazy instancji. Domyślnie '/var/lib/libvirt/images'.

  • libvirt_volume_default_type: Jaki typ wolumenu podstawowego używa instancja? Domyślnie volume.

  • libvirt_volume_default_format: Format dla wolumenów tworzonych przez rolę. Domyślnie qcow2.

  • libvirt_volume_default_device: Kontrola, jak urządzenie pojawia się w systemie gościa. Domyślnie disk.

  • libvirt_vm_engine: Silnik wirtualizacji. Jeśli nie ustawiony, rola spróbuje automatycznie wykryć optymalny silnik.

  • libvirt_vm_emulator: Ścieżka do binarnego emulatora. Jeśli nie ustawiony, rola spróbuje automatycznie wykryć prawidłowy emulator.

  • libvirt_cpu_mode_default: Domyślny tryb CPU, jeśli libvirt_cpu_mode lub vm.cpu_mode są niezdefiniowane.

  • libvirt_vm_arch: Architektura CPU, domyślnie x86_64.

  • libvirt_vm_uri: Zastępuje URI połączenia libvirt. Zobacz dokumentację libvirt po więcej szczegółów.

  • libvirt_vm_virsh_default_env: Zmienne zawarte w tym słowniku są dodawane do środowiska używanego podczas wykonywania poleceń virsh.

  • libvirt_vm_clock_offset: Jeśli zdefiniowane, przesunięcie zegara instancji jest ustawiane na podaną wartość. Gdy nie zdefiniowane, synchronizacja ustawiana jest na localtime.

  • libvirt_vms: lista VM do utworzenia/zerwania. Każda z nich może mieć następujące atrybuty:

    • state: ustaw na present, aby utworzyć, lub absent, aby zniszczyć VM. Domyślnie present.

    • name: nazwa przypisana do VM.

    • memory_mb: pamięć przypisana do VM, w megabajtach.

    • vcpus: liczba rdzeni VCPU przypisana do VM.

    • machine: Typ maszyny wirtualnej. Domyślnie None, jeśli libvirt_vm_engine to kvm, w przeciwnym razie pc-1.0.

    • cpu_mode: Tryb CPU maszyny wirtualnej. Domyślnie host-passthrough, jeśli libvirt_vm_engine to kvm, w przeciwnym razie host-model. Może być ustawione na brak, aby nie konfigurować trybu CPU.

    • clock_offset: Zastępuje domyślny ustawiony w libvirt_vm_clock_offset.

    • enable_vnc: Jeśli prawda, włącza nasłuchiwanie VNC na localhost do użycia z VirtManager i podobnymi narzędziami.

    • volumes: lista wolumenów do podłączenia do VM. Każdy wolumen jest zdefiniowany za pomocą następującego słownika:

      • pool: Nazwa lub UUID puli pamięci, z której wolumen powinien być przydzielony.
      • name: Nazwa, którą należy przypisać tworzonemu wolumenowi; dla wolumenów typu file należy podać rozszerzenie, jeśli chcesz, aby wolumeny były tworzone z jednym.
      • file_path: Gdzie obraz wolumenów typu file powinien być umieszczony; domyślnie libvirt_volume_default_images_path.
      • device: disk lub cdrom.
      • capacity: pojemność wolumenu (może mieć sufiks M,G,T lub MB,GB,TB itd.) (wymagana, gdy typ to disk).
      • format: opcje to raw, qcow2, vmdk. Zobacz man virsh dla pełnego zakresu. Domyślnie qcow2.
      • image: (opcjonalnie) URL do obrazu, z którym wolumen jest inicjowany (pełna kopia).
      • backing_image: (opcjonalnie) nazwa wolumenu podstawowego, który już jest w tej samej puli (kopiowanie na zapis).
      • image i backing_image są nawzajem wykluczającymi się opcjami.
      • target: (opcjonalnie) Ręczne określenie typu i kolejności wolumenów.
    • interfaces: lista interfejsów sieciowych do podłączenia do VM. Każdy interfejs sieciowy jest zdefiniowany za pomocą następującego słownika:

      • type: Typ interfejsu. Możliwe wartości:

        • network: Podłącza interfejs do nazwanego wirtualnego sieci Libvirt. Jest to wartość domyślna.
        • direct: Bezpośrednio podłącza interfejs do jednego z fizycznych interfejsów hosta, używając sterownika macvtap.
      • network: Nazwa sieci, do której interfejs powinien być podłączony. Musi być określona, jeśli i tylko jeśli typ interfejsu to network.

      • mac: "Adres" sprzętowy wirtualnej instancji, jeśli nieobecny, jeden zostanie utworzony.

      • source: Słownik definiujący interfejs hosta, do którego ten interfejs VM powinien być podłączony. Musi być określona, jeśli i tylko jeśli typ interfejsu to direct. Zawiera następujące atrybuty:

        • dev: Nazwa interfejsu hosta, do którego ten interfejs VM powinien być podłączony.
        • mode: opcje to vepa, bridge, private i passthrough. Zobacz man virsh dla więcej szczegółów. Domyślnie vepa.
    • console_log_enabled: jeśli true, loguje dane wyjściowe konsoli do pliku pod ścieżką określoną przez console_log_path, zamiast do PTY. Jeśli false, kieruje dane wyjściowe terminala do PTY na porcie szeregowym 0. Domyślnie false.

    • console_log_path: Ścieżka do pliku logu konsoli. Domyślnie {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.

    • start: Czy natychmiast uruchomić VM po jej zdefiniowaniu. Domyślnie to prawda.

    • autostart: Czy uruchomić VM po uruchomieniu hosta. Domyślnie to prawda.

    • xml_file: Opcjonalnie dostarcz zmodyfikowany szablon XML. Bazuj na domyślnym vm.xml.j2, aby uwzględnić spodziewane wyrażenia jinja, których używa rola.

Uwaga: następujące zmienne są przestarzałe: 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 i libvirt_vm_console_log_path. Jeśli zmienna libvirt_vms jest pominięta, jej domyślna wartość to lista jednoelementowa zawierająca specyfikację VM z użyciem tych przestarzałych zmiennych.

Zależności

Jeżeli używasz obrazów w formacie qcow2, wymagany jest qemu-img (w pakiecie qemu-utils).

Przykładowy Playbook

---
- name: Tworzenie VM
  hosts: hipernadzor
  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'  # pierwszy wolumen na magistrali 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'

Informacje o autorze

O projekcie

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

Zainstaluj
ansible-galaxy install t2d.ansible_role_libvirt_vm
Licencja
Unknown
Pobrania
83
Właściciel