ovirt.vm-infra

Infrastructure des Machines Virtuelles oVirt

Ce rôle a été migré vers oVirt Ansible Collection, veuillez utiliser la dernière version à partir de là. Ce dépôt est maintenant en lecture seule et n'est plus utilisé pour le développement actif.

Le rôle ovirt.vm-infra gère l'infrastructure des machines virtuelles dans oVirt. Ce rôle crée également un inventaire des machines virtuelles créées si wait_for_ip est défini sur true et que l'état de la machine virtuelle est running. Toutes les machines virtuelles définies font partie du groupe d'inventaire ovirt_vm. Le rôle crée également des groupes ovirt_tag_{tag_name} s'il y a des tags assignés à une machine virtuelle et place toutes les machines virtuelles avec ce tag dans ce groupe d'inventaire.

Considérez la structure de variables suivante :

vms:
  - name: myvm1
    tag: mytag1
    profile: myprofile

  - name: myvm2
    tag: mytag2
    profile: myprofile

Le rôle créera le groupe d'inventaire ovirt_vm avec les deux machines virtuelles - myvm1 et myvm2. Le rôle crée également le groupe d'inventaire ovirt_tag_mytag1 avec la machine virtuelle myvm1 et le groupe d'inventaire ovirt_tag_mytag2 avec la machine virtuelle myvm2.

Remarque

Veuillez noter que lors de l'installation de ce rôle depuis Ansible Galaxy, vous devez exécuter la commande suivante :

$ ansible-galaxy install ovirt.vm-infra

Cela téléchargera le rôle dans le répertoire avec le même nom que celui que vous avez spécifié en ligne de commande, dans ce cas ovirt.vm-infra. Mais notez qu'il est sensible à la casse, donc si vous spécifiez par exemple OVIRT.vm-infra, cela téléchargera le même rôle, mais l'ajoutera dans un répertoire nommé OVIRT.vm-infra. Dans ce cas, vous devrez faire référence à ce rôle avec un préfixe en majuscules à l’avenir. Soyez donc prudent sur la façon dont vous spécifiez le nom du rôle en ligne de commande.

Concernant l'installation RPM, nous prenons en charge trois noms hérités - ovirt.vm-infra, oVirt.vm-infra et ovirt-vm-infra. Vous pouvez utiliser l'un de ces noms. Cette documentation et les exemples dans ce dépôt utilisent le nom ovirt.vm-infra. Les noms de rôle oVirt.vm-infra et ovirt-vm-infra sont obsolètes.

Exigences

  • Version d’Ansible 2.9 ou supérieure
  • Version du SDK Python 4.3 ou supérieure
  • python3-jmespath ou python2-jmespath

Limitations

  • Ne prend pas en charge le mode de vérification d’Ansible (exécution à sec).

Variables de Rôle

Nom Valeur par défaut
vms UNDEF Liste de dictionnaires avec les spécifications des machines virtuelles.
affinity_groups UNDEF Liste de dictionnaires avec les spécifications des groupes d'affinité.
wait_for_ip false Si vrai, le playbook doit attendre l'IP de la machine virtuelle rapportée par l'agent invité.
wait_for_ip_version v4 Spécifiez quelle version d'IP doit être attendue. Soit v4 soit v6.
wait_for_ip_range 0.0.0.0/0 Spécifiez le CIDR de l'IP de la machine virtuelle qui doit être rapportée. Fonctionne uniquement pour IPv4.
debug_vm_create false Si vrai, enregistre les tâches de création de la machine virtuelle. Le log peut contenir des mots de passe.
vm_infra_create_single_timeout 180 Temps en secondes à attendre pour que la VM soit créée et démarrée (si l'état est en cours d'exécution).
vm_infra_create_poll_interval 15 Intervalle de vérification. Temps en secondes à attendre entre la vérification de l'état de la VM.
vm_infra_create_all_timeout vm_infra_create_single_timeout * (vms.length) Temps total à attendre pour que toutes les VMs soient créées/démarrées.
vm_infra_wait_for_ip_retries 5 Nombre de tentatives pour vérifier si la VM rapporte son adresse IP.
vm_infra_wait_for_ip_delay 5 Intervalle de vérification de l'adresse IP. Temps en secondes à attendre entre les vérifications de l'IP de la VM.

Les variables vms et profile peuvent contenir les attributs suivants, notez que si vous définissez la même variable dans les deux, la valeur dans vms a la priorité :

Nom Valeur par défaut
name UNDEF Nom de la machine virtuelle à créer.
tag UNDEF Nom du tag à attribuer à la machine virtuelle. Seuls les utilisateurs administrateurs peuvent utiliser cet attribut.
cloud_init UNDEF Dictionnaire avec des valeurs pour l'initialisation des machines virtuelles de type Unix via cloud init. Voir la section cloud_init ci-dessous pour une description plus détaillée.
cloud_init_nics UNDEF Liste de dictionnaires représentant les interfaces réseau à configurer via cloud init. Voir la section cloud_init_nics ci-dessous pour plus de détails.
sysprep UNDEF Dictionnaire avec des valeurs pour l'initialisation des machines virtuelles Windows en utilisant sysprep. Voir la section sysprep ci-dessous pour plus de détails.
profile UNDEF Dictionnaire spécifiant le matériel de la machine virtuelle. Voir le tableau ci-dessous.
state present La machine virtuelle doit-elle être arrêtée, présente ou en cours d'exécution. Prend la priorité sur la valeur d'état dans le profil.
nics UNDEF Liste de dictionnaires spécifiant les NICs de la machine virtuelle. Voir ci-dessous pour plus de détails.
cluster UNDEF Nom du cluster où la machine virtuelle sera créée.
clone No Si oui, les disques de la machine virtuelle créée seront clonés et indépendants du modèle. Ce paramètre est utilisé uniquement lorsque l'état est en cours d'exécution ou présent et que la VM n'existait pas auparavant.
template Vide Nom du modèle dont la machine virtuelle doit être basée.
template_version UNDEF Numéro de version du modèle à utiliser pour la VM. Par défaut, la dernière version disponible du modèle est utilisée.
memory UNDEF Montant de mémoire de la machine virtuelle.
memory_max UNDEF Limite supérieure de la mémoire de la machine virtuelle jusqu'à laquelle une extension de mémoire à chaud peut être effectuée.
memory_guaranteed UNDEF Montant de mémoire minimale garantie de la machine virtuelle. Le préfixe utilise la norme IEC 60027-2 (par exemple 1GiB, 1024MiB). Le paramètre memory_guaranteed ne peut pas être inférieur au paramètre memory.
cores UNDEF Nombre de cœurs CPU utilisés par la machine virtuelle.
sockets UNDEF Nombre de sockets de CPU virtuels de la machine virtuelle.
cpu_shares UNDEF Définit des parts CPU pour cette machine virtuelle.
cpu_threads UNDEF Définit des threads CPU pour cette machine virtuelle.
disks UNDEF Liste de dictionnaires spécifiant les disques supplémentaires de la machine virtuelle. Voir ci-dessous pour plus de détails.
nics UNDEF Liste de dictionnaires spécifiant les NICs de la machine virtuelle. Voir ci-dessous pour plus de détails.
custom_properties UNDEF Propriétés envoyées à VDSM pour configurer divers hooks.
Les propriétés personnalisées sont une liste de dictionnaires qui peuvent avoir les valeurs suivantes :
name - Nom de la propriété personnalisée. Par exemple : hugepages, vhost, sap_agent, etc.
regexp - Expression régulière à définir pour la propriété personnalisée.
value - Valeur à définir pour la propriété personnalisée.
high_availability UNDEF Indique si le nœud doit être configuré pour une haute disponibilité.
high_availability_priority UNDEF Indique la priorité de la machine virtuelle à l'intérieur des files d'attente d'exécution et de migration. Les machines virtuelles avec des priorités plus élevées seront démarrées et migrées avant les machines virtuelles avec des priorités plus basses. La valeur est un entier entre 0 et 100. Plus la valeur est élevée, plus la priorité est élevée. Si aucune valeur n'est passée, la valeur par défaut est définie par le moteur oVirt/RHV.
io_threads UNDEF Nombre de threads IO utilisés par la machine virtuelle. 0 signifie que le multithreading IO est désactivé.
description UNDEF Description de la machine virtuelle.
operating_system UNDEF Système d'exploitation de la machine virtuelle. Par exemple : rhel_7x64
type UNDEF Type de la machine virtuelle. Valeurs possibles : desktop, server ou high_performance
graphical_console UNDEF Attribuer un console graphique à la machine virtuelle.
La console graphique est un dictionnaire qui peut avoir les valeurs suivantes :
headless_mode - Si vrai, désactiver le console graphique pour cette machine virtuelle.
protocol - 'VNC', 'Spice' ou les deux.
storage_domain UNDEF Nom du domaine de stockage où tous les disques de la machine virtuelle doivent être créés. Considéré uniquement lorsque le modèle est fourni.
state present La machine virtuelle doit-elle être arrêtée, présente ou en cours d'exécution.
ssh_key UNDEF Clé SSH à déployer sur la machine virtuelle. Ce paramètre est conservé pour des raisons de compatibilité et a priorité sur authorized_ssh_keys dans le dictionnaire cloud_init.
domain UNDEF Le domaine de la machine virtuelle. Ce paramètre est conservé pour des raisons de compatibilité et a priorité sur host_name dans le dictionnaire cloud_init ou sysprep.
lease UNDEF Nom du domaine de stockage sur lequel cette machine virtuelle réside.
root_password UNDEF Le mot de passe root de la machine virtuelle. Ce paramètre est conservé pour des raisons de compatibilité et a priorité sur root_password dans le dictionnaire cloud_init ou sysprep.
host UNDEF Si vous devez définir cpu_mode comme host_passthrough, vous devez utiliser ce paramètre pour définir l'hôte à utiliser avec le placement_policy défini sur pinned.
cpu_mode UNDEF Mode CPU de la machine virtuelle. Cela peut être l'un des suivants : host_passthrough, host_model ou custom.
placement_policy UNDEF La configuration de la politique de placement de la machine virtuelle.
boot_devices UNDEF Liste des dispositifs de démarrage qui doivent être utilisés pour démarrer. Les entrées valides sont cdrom, hd, network.
serial_console UNDEF True activer le console série VirtIO, False pour le désactiver. Par défaut, cela est choisi par le moteur oVirt/RHV.
serial_policy UNDEF Spécifiez une politique de numéro de série pour la machine virtuelle. Les options suivantes sont prises en charge.
vm - Définit l'UUID de la machine virtuelle comme son numéro de série.
host - Définit l'UUID de l'hôte comme numéro de série de la machine virtuelle.
custom - Vous permet de spécifier un numéro de série personnalisé dans serial_policy_value.
serial_policy_value UNDEF Vous permet de spécifier un numéro de série personnalisé. Ce paramètre est utilisé uniquement lorsque serial_policy est personnalisé.
comment UNDEF Commentaire de la machine virtuelle.

L'élément de la liste disks du dictionnaire profile peut contenir les attributs suivants :

Nom Valeur par défaut
size UNDEF Taille du disque supplémentaire.
name UNDEF Nom du disque supplémentaire.
id UNDEF ID du disque. Si vous passez l'ID du disque et le nom, le disque sera recherché par ID et son nom sera mis à jour s'il diffère du nom passé dans le paramètre nom.
storage_domain UNDEF Nom du domaine de stockage où le disque doit être créé.
interface UNDEF L'interface du disque.
name_prefix True Si vrai, le nom de la VM sera utilisé comme préfixe du nom du disque. Si faux, seul le nom du disque sera utilisé en tant que nom de disque - peut être utile lors de la création d'une VM à partir d'un modèle avec une taille de disque personnalisée.
format UNDEF Spécifiez le format du disque.
  • cow - Si défini, le disque sera créé en tant que disque sparse, donc l'espace sera alloué pour le volume selon les besoins. Ce format est également connu sous le nom de disques provisionnés finement.
  • raw - Si défini, l'espace disque sera alloué immédiatement. Ce format est également connu sous le nom de disques pré-alloués.
bootable UNDEF Vrai si le disque doit être bootable.
activate UNDEF Vrai si le disque doit être activé.

L'élément de la liste nics du dictionnaire profile peut contenir les attributs suivants :

Nom Valeur par défaut
name UNDEF Nom de l'interface réseau.
interface UNDEF Type de l'interface réseau.
mac_address UNDEF Adresse MAC personnalisée de l'interface réseau, par défaut, elle est obtenue à partir de la piscine MAC.
network UNDEF Réseau logique que l'interface réseau de la VM doit utiliser. Si le réseau n'est pas spécifié, le réseau vide est utilisé.
profile UNDEF Profil de l'interface réseau virtuelle à attacher à l'interface réseau de la VM.

La liste affinity_groups peut contenir les attributs suivants :

Nom Valeur par défaut
cluster UNDEF (Requis) Nom du cluster du groupe d'affinité.
description UNDEF Description lisible pour l'homme.
host_enforcing false
  • true - La VM ne peut pas démarrer sur l'hôte si cela ne satisfait pas la host_rule.
  • false - La VM suivra host_rule avec une application souple.
host_rule UNDEF
  • positive - Les VM de ce groupe doivent s'exécuter sur cet hôte.
  • negative - Les VM de ce groupe ne doivent pas s'exécuter sur cet hôte.
hosts UNDEF Liste des noms d'hôtes assignés à ce groupe.
name UNDEF (Requis) Nom du groupe d'affinité.
state UNDEF Indique si le groupe doit être présent ou absent.
vm_enforcing false
  • true - La VM ne peut pas démarrer si elle ne peut pas satisfaire le vm_rule.
  • false - La VM suivra vm_rule avec une application souple.
vm_rule UNDEF
  • positive - toutes les VMs de ce groupe essaient de s'exécuter sur le même hôte.
  • negative - toutes les VMs de ce groupe essaient de s'exécuter sur des hôtes séparés.
  • disabled - ce groupe d'affinité n'a pas d'effet.
vms UNDEF Liste des VMs à assigner à ce groupe d'affinité.
wait true Si vrai, le module attendra l'état souhaité.

La liste affinity_labels peut contenir les attributs suivants :

Nom Valeur par défaut
cluster UNDEF (Requis) Nom du cluster du groupe d'étiquettes d'affinité.
hosts UNDEF Liste des noms d'hôtes assignés à cette étiquette.
name UNDEF (Requis) Nom de l'étiquette d'affinité.
state UNDEF Indique si l'étiquette doit être présente ou absente.
vms UNDEF Liste des VMs à assigner à cette étiquette d'affinité.

Le dictionnaire cloud_init peut contenir les attributs suivants :

Nom Description
host_name Nom d'hôte à définir pour la machine virtuelle lors du déploiement.
timezone Fuseau horaire à définir pour la machine virtuelle lors du déploiement.
user_name Nom d'utilisateur pour définir le mot de passe de la machine virtuelle lors du déploiement.
root_password Mot de passe à définir pour l'utilisateur spécifié par le paramètre user_name. Par défaut, c'est défini pour l'utilisateur root.
authorized_ssh_keys Utiliser ces clés SSH pour se connecter à la machine virtuelle.
regenerate_ssh_keys Si vrai, les clés SSH seront régénérées sur la machine virtuelle.
custom_script Script cloud-init qui sera exécuté sur la machine virtuelle lors du déploiement. Cela est ajouté à la fin du script cloud-init généré par d'autres options.
dns_servers Serveurs DNS à configurer sur la machine virtuelle.
dns_search Domaines de recherche DNS à configurer sur la machine virtuelle.
nic_boot_protocol Définir le protocole de démarrage de l'interface réseau de la machine virtuelle. Peut être l'un de none, dhcp ou static.
nic_ip_address Si le protocole de démarrage est statique, définir cette adresse IP pour l'interface réseau de la machine virtuelle.
nic_netmask Si le protocole de démarrage est statique, définir ce masque de sous-réseau pour l'interface réseau de la machine virtuelle.
nic_gateway Si le protocole de démarrage est statique, définir cette passerelle pour l'interface réseau de la machine virtuelle.
nic_name Définir le nom pour l'interface réseau de la machine virtuelle.
nic_on_boot Si vrai, l'interface réseau sera configurée pour démarrer au démarrage.

Le dictionnaire sysprep peut contenir les attributs suivants :

Nom Description
host_name Nom d'hôte à définir pour la machine virtuelle lors du déploiement.
active_directory_ou Unité organisationnelle Active Directory, utilisée pour le login de l'utilisateur.
org_name Nom de l'organisation à définir pour la machine virtuelle Windows.
user_name Nom d'utilisateur pour définir le mot de passe pour la machine virtuelle Windows.
root_password Mot de passe à définir pour l'utilisateur spécifié par le paramètre user_name. Par défaut, c'est défini pour l'utilisateur root.
windows_license_key Clé de licence à définir pour la machine virtuelle Windows.
input_locale Localisation d'entrée de la machine virtuelle Windows.
system_locale Localisation système de la machine virtuelle Windows.
ui_language Langue de l'interface utilisateur de la machine virtuelle Windows.
domain Domaine à définir pour la machine virtuelle Windows.
timezone Fuseau horaire à définir pour la machine virtuelle Windows.

La liste cloud_init_nics représente les interfaces réseau à configurer par cloud init. Cette option est utilisée, lorsque l'utilisateur a besoin de configurer plusieurs interfaces réseau via cloud init. Si une interface réseau est suffisante, l'utilisateur doit utiliser les paramètres cloud_init nic_*. Les paramètres nic_* sont fusionnés avec les paramètres cloud_init_nics. Le dictionnaire peut contenir les valeurs suivantes.

Nom Description
nic_boot_protocol Définir le protocole de démarrage de l'interface réseau de la machine virtuelle. Peut être l'un de none, dhcp ou static.
nic_ip_address Si le protocole de démarrage est statique, définir cette adresse IP pour l'interface réseau de la machine virtuelle.
nic_netmask Si le protocole de démarrage est statique, définir ce masque de sous-réseau pour l'interface réseau de la machine virtuelle.
nic_gateway Si le protocole de démarrage est statique, définir cette passerelle pour l'interface réseau de la machine virtuelle.
nic_name Définir le nom pour l'interface réseau de la machine virtuelle.
nic_on_boot Si vrai, l'interface réseau sera configurée pour démarrer au démarrage.

Dépendances

Aucune.

Exemple de Playbook

---
- name: Infra oVirt
  hosts: localhost
  connection: local
  gather_facts: false

  vars_files:
    # Contient la variable `engine_password` cryptée utilisant ansible-vault
    - passwords.yml

  vars:
    engine_fqdn: ovirt-engine.example.com
    engine_user: admin@internal
    engine_cafile: /etc/pki/ovirt-engine/ca.pem

    httpd_vm:
      cluster: production
      domain: example.com
      template: rhel7
      memory: 2GiB
      cores: 2
      ssh_key: ssh-rsa AAA...LGx user@fqdn
      disks:
        - size: 10GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio

    db_vm:
      cluster: production
      domain: example.com
      template: rhel7
      memory: 4GiB
      cores: 1
      ssh_key: ssh-rsa AAA...LGx user@fqdn
      disks:
        - size: 50GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio
      nics:
        - name: ovirtmgmt
          network: ovirtmgmt
          profile: ovirtmgmt

    vms:
      - name: postgresql-vm-0
        tag: postgresql_vm
        profile: "{{ db_vm }}"
      - name: postgresql-vm-1
        tag: postgresql_vm
        profile: "{{ db_vm }}"
      - name: apache-vm
        tag: httpd_vm
        profile: "{{ httpd_vm }}"

    affinity_groups:
      - name: db-ag
        cluster: production
        vm_enforcing: true
        vm_rule: negative
        vms:
          - postgresql-vm-0
          - postgresql-vm-1

  roles:
    - ovirt.vm-infra

L'exemple ci-dessous montre comment utiliser l'inventaire créé par le rôle ovirt.vm-infra dans un play suivant.

---
- name: Déployer la VM apache
  hosts: localhost
  connection: local
  gather_facts: false

  vars_files:
    # Contient la variable `engine_password` cryptée utilisant ansible-vault
    - passwords.yml

  vars:
    wait_for_ip: true

    httpd_vm:
      cluster: production
      state: running
      domain: example.com
      template: rhel7
      memory: 2GiB
      cores: 2
      ssh_key: ssh-rsa AAA...LGx user@fqdn
      disks:
        - size: 10GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio

    vms:
      - name: apache-vm
        tag: apache
        profile: "{{ httpd_vm }}"

  roles:
    - ovirt.vm-infra

- name: Déployer apache sur la VM
  hosts: ovirt_tag_apache

  vars_files:
    - apache_vars.yml

  roles:
    - geerlingguy.apache

asciicast

Licence

Licence Apache 2.0

À propos du projet

Role to manage virtual machine infrastructure in oVirt.

Installer
ansible-galaxy install ovirt.vm-infra
Licence
apache-2.0
Téléchargements
65.4k
Propriétaire
Open Virtual Datacenter