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.
|
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 |
|
host_rule | UNDEF |
|
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 |
|
vm_rule | UNDEF |
|
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
Licence
Licence Apache 2.0
Role to manage virtual machine infrastructure in oVirt.
ansible-galaxy install ovirt.vm-infra