Note

Ce plugin fait partie de la collection community.kubevirt (version 1.0.0).

Pour l'installer, utilisez : ansible-galaxy collection install community.kubevirt.

Pour l'utiliser dans un playbook, spécifiez : community.kubevirt.kubevirt_vm.

  • Synopsis
  • Exigences
  • Paramètres
  • Notes
  • Exemples
  • Valeurs de retour

Synopsis

  • Utilisez le SDK Python d'Openshift pour gérer l'état des machines virtuelles KubeVirt.

Exigences

Les exigences ci-dessous sont nécessaires sur l'hôte qui exécute ce module.

  • openshift >= 0.8.2
  • python >= 2.7

Paramètres

Paramètre Choix/par défaut Commentaires
affinitédictionnaire Décrit les règles d'ordonnancement de l'affinité des nœuds pour le vm.
durdictionnaire Si les exigences d'affinité spécifiées par ce champ ne sont pas satisfaites au moment de l'ordonnancement, la vm ne sera pas ordonnancée sur le nœud. Si les exigences d'affinité spécifiées par ce champ cessent d'être satisfaites à un moment donné pendant l'exécution du vm (par exemple, en raison d'une mise à jour de l'étiquette du vm), le système peut ou non essayer d'expulser éventuellement le vm de son nœud. Lorsqu'il y a plusieurs éléments, les listes de nœuds correspondant à chaque élément term sont intersectées, c'est-à-dire que tous les termes doivent être satisfaits.
softdictionnaire L'ordonnanceur préférera ordonnancer les vms vers les nœuds qui satisfont aux expressions d'affinité spécifiées par ce champ, mais il peut choisir un nœud qui viole une ou plusieurs de ces expressions. Le nœud préféré est celui qui a la plus grande somme de poids, c'est-à-dire que pour chaque nœud qui satisfait à toutes les exigences d'ordonnancement (demande de ressources, expressions d'affinité requiredDuringScheduling, etc.), calculez une somme en itérant à travers les éléments de ce champ et en additionnant weight à la somme si le noeud a des vms qui correspondent à l'expression d'affinité correspondante. term; les nœuds avec la somme la plus élevée sont les plus préférés.
anti_affinitédictionnaire Décrit les règles d'ordonnancement anti-affinité des vm, par exemple, éviter de mettre ce vm dans le même nœud, la même zone, etc. que certains autres vms.
durdictionnaire Si les exigences d'anti-affinité spécifiées par ce champ ne sont pas respectées au moment de l'ordonnancement, la vm ne sera pas ordonnancée sur le nœud. Si les exigences d'anti-affinité spécifiées par ce champ cessent d'être satisfaites à un moment donné pendant l'exécution du vm (par exemple, en raison d'une mise à jour de l'étiquette du vm), le système peut ou non essayer d'expulser éventuellement le vm de son nœud. Lorsqu'il y a plusieurs éléments, les listes de nœuds correspondant à chaque élément term sont intersectées, c'est-à-dire que tous les termes doivent être satisfaits.
softdictionnaire L'ordonnanceur préférera ordonnancer les vms vers les nœuds qui satisfont aux expressions d'anti-affinité spécifiées par ce champ, mais il peut choisir un nœud qui viole une ou plusieurs de ces expressions. Le nœud le plus préféré est celui qui a la plus grande somme de poids, c'est-à-dire que pour chaque nœud qui satisfait à toutes les exigences d'ordonnancement (demande de ressources, expressions d'anti-affinité requiredDuringScheduling, etc.), calculez une somme en itérant à travers les éléments de ce champ et en additionnant weight à la somme si le nœud a des vms qui correspondent à l'expression correspondante term; les noeuds avec la somme la plus élevée sont les plus préférés.
api_keychaîne de caractères Token utilisé pour s'authentifier auprès de l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_API_KEY.
chargeur de démarragechaîne de caractères Spécifiez le chargeur de démarrage de la machine virtuelle.Toutes les machines virtuelles utilisent le BIOS par défaut pour le démarrage.
ca_certchemin Chemin d'accès à un certificat d'autorité de certification utilisé pour s'authentifier auprès de l'API. La chaîne complète du certificat doit être fournie pour éviter les erreurs de validation du certificat. Peut également être spécifié via la variable d'environnement K8S_AUTH_SSL_CA_CERT.
alias : ssl_ca_cert
client_certchemin d'accès Chemin vers un certificat utilisé pour s'authentifier avec l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_CERT_FILE.
alias : cert_file
clé_clientchemin Chemin d'accès à un fichier de clé utilisé pour s'authentifier auprès de l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_KEY_FILE.
alias : key_file
cloud_init_noclouddictionnaire Représente une source de données utilisateur NoCloud de cloud-init. Les données NoCloud seront ajoutées en tant que disque à la machine virtuelle. Une installation cloud-init correcte est requise à l'intérieur de l'invité. Plus d'informations https://kubevirt.io/api-reference/master/definitions.html#_v1_cloudinitnocloudsource
contextechaîne de caractères Le nom d'un contexte trouvé dans le fichier de configuration. Peut également être spécifié via la variable d'environnement K8S_AUTH_CONTEXT.
cpu_coresnombre entier Nombre de cœurs de processeur.
cpu_featuresliste / elements=chaîne Liste de dictionnaire permettant d'affiner les fonctionnalités fournies par le modèle de CPU sélectionné.Note: L'attribut de politique peut soit être omis, soit contenir l'une des politiques suivantes : force, require, optional, disable, forbid.Note: Dans le cas où une politique est omise pour une fonctionnalité, elle sera par défaut requise.Plus d'informations sur les politiques : https://libvirt.org/formatdomain.html#elementsCPU
cpu_limitnombre entier Est converti en sa valeur en millicore et multiplié par 100. La valeur résultante est la quantité totale de temps CPU qu'un conteneur peut utiliser toutes les 100 ms. Une machine virtuelle ne peut pas utiliser plus que sa part de temps CPU pendant cet intervalle.
cpu_modelchaîne de caractères Modèle de CPU.Vous pouvez vérifier la liste des modèles disponibles ici : https://github.com/libvirt/libvirt/blob/master/src/cpu_map/index.xml.Note : L'utilisateur peut définir le modèle de CPU par défaut via comme default-cpu-model dans kubevirt-configConfigMap, si elle n'est pas définie modèle d'hôte est utilisé.Note : Assurez-vous que le modèle de CPU de nœud où vous exécutez une VM, a la même famille de CPU ou une famille supérieure.Note : Si le modèle de CPU n'a pas été défini, la VM aura le modèle de CPU le plus proche de celui qui est utilisé sur le nœud où la VM est exécutée.
cpu_sharesnombre entier Spécifier les parts de l'unité centrale.
volumes de donnéesliste / elements=chaîne Les DataVolumes sont un moyen d'automatiser l'importation de disques de machines virtuelles sur des pvcs pendant le flux de lancement de la machine virtuelle. Sans utiliser un DataVolume, les utilisateurs doivent préparer un pvc avec une image disque avant de l'affecter à une VM ou à un manifeste VMI. Avec un DataVolume, la création et l'importation du pvc sont toutes deux automatisées pour le compte de l'utilisateur.
disquesliste / éléments=chaîne Liste de dictionnaires qui spécifient les disques de la machine virtuelle.Un disque peut être rendu accessible via quatre types différents : disque, lun, cdrom, disquette Toutes les options de configuration possibles sont disponibles dans https://kubevirt.io/api-reference/master/definitions.html#_v1_disk Chaque disque doit avoir spécifié un volume qui déclare quel type de volume du disque Toutes les options de configuration possibles du volume sont disponibles dans la section https://kubevirt.io/api-reference/master/definitions.html#_v1_volume.
éphémèrebooléen
    Choix :

  • pas de
  • oui
Si (true) une machine virtuelle éphémère sera créée. Lorsqu'elle sera détruite, elle ne sera plus accessible à nouveau.Ne fonctionne qu'avec stateprésent et absent.
forcebooléen
    Choix :

  • pas de
  • oui
Si la valeur est fixée à noet état est present, un objet existant sera remplacé.
sans têtechaîne de caractères Indiquez si la machine virtuelle doit avoir attaché une configuration minimale de périphérique vidéo et graphique.Par défaut, une configuration minimale de périphérique vidéo et graphique sera appliquée à la VirtualMachineInstance. Le périphérique vidéo est compatible vga et est livré avec une taille de mémoire de 16 Mo.
hôtechaîne de caractères Fournir une URL pour accéder à l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_HOST.
nom d'hôtechaîne de caractères Spécifie le nom d'hôte de la machine virtuelle. Le nom d'hôte sera défini soit par dhcp, cloud-init si configuré ou le nom de la machine virtuelle sera utilisé.
hugepage_sizechaîne de caractères Spécifier la taille de la page énorme.
interfacesliste / elements=chaîne Une interface définit une interface réseau virtuelle d'une machine virtuelle (également appelée frontend).Toutes les options de configuration possibles interfaces sont disponibles en https://kubevirt.io/api-reference/master/definitions.html#_v1_interface Chaque interface doit avoir spécifié une réseau qui déclare à quel périphérique logique ou physique elle est connectée (également appelé backend). Toutes les options de configuration possibles du réseau sont disponibles dans https://kubevirt.io/api-reference/master/definitions.html#_v1_network.
kubeconfigchemin Chemin d'accès à un fichier de configuration Kubernetes existant. S'il n'est pas fourni, et qu'aucune autre option de connexion n'est fournie, le client openshift tentera de charger le fichier de configuration par défaut à partir de ~/.kube/config.json. Peut également être spécifié via la variable d'environnement K8S_AUTH_KUBECONFIG.
étiquettesdictionnaire Les étiquettes sont des paires clé/valeur qui sont attachées aux machines virtuelles. Les étiquettes sont destinées à être utilisées pour spécifier les attributs d'identification des machines virtuelles qui sont significatifs et pertinents pour les utilisateurs, mais n'impliquent pas directement la sémantique du système central. Les étiquettes peuvent être utilisées pour organiser et sélectionner des sous-ensembles de machines virtuelles. Les étiquettes peuvent être attachées aux machines virtuelles au moment de la création, puis ajoutées et modifiées à tout moment.Plus sur les étiquettes qui sont utilisées pour la mise en œuvre interne. https://kubevirt.io/user-guide/#/misc/annotations_and_labels
type_machinechaîne de caractères Le type de machine QEMU correspond au chipset réel de la machine virtuelle.
mémoirechaîne de caractères La quantité de mémoire à demander par la machine virtuelle.Par exemple 1024Mi.
limite_mémoirechaîne de caractères La mémoire maximale à utiliser par la machine virtuelle.Par exemple 1024Mi.
merge_typeliste / elements=string
    Choix :

  • json
  • fusionner
  • fusion stratégique
Si l'on veut remplacer l'approche de fusion de patchs par défaut par un type spécifique.Si plus d'un type de fusion est donné, les types de fusion seront essayés dans l'ordre.La valeur par défaut est ['strategic-merge', 'merge'], ce qui est idéal pour utiliser les mêmes paramètres sur les types de ressources qui combinent des ressources personnalisées et des ressources intégrées, car les définitions de ressources personnalisées ne sont généralement pas actualisables par la fusion stratégique habituelle.Voir https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment
nomchaîne de caractères / obligatoire Nom de la machine virtuelle.
espace de nomschaîne de caractères / obligatoire Espace de nom où existe la machine virtuelle.
affinité_noeuddictionnaire Décrit les règles de planification de l'affinité vm, par exemple, colocaliser ce vm dans le même nœud, la même zone, etc. que certains autres vms.
durdictionnaire Si les exigences d'affinité spécifiées par ce champ ne sont pas satisfaites au moment de la programmation, la vm ne sera pas programmée sur le nœud. Si les exigences d'affinité spécifiées par ce champ cessent d'être satisfaites à un moment donné pendant l'exécution du vm (par exemple, en raison d'une mise à jour), le système peut ou non essayer d'expulser éventuellement le vm de son nœud.
softdictionnaire L'ordonnanceur préférera ordonnancer les vms vers les nœuds qui satisfont aux expressions d'affinité spécifiées par ce champ, mais il peut choisir un nœud qui viole une ou plusieurs de ces expressions. Le nœud préféré est celui qui a la plus grande somme de poids, c'est-à-dire que pour chaque nœud qui satisfait à toutes les exigences d'ordonnancement (demande de ressources, expressions d'affinité requiredDuringScheduling, etc.), calculez une somme en itérant à travers les éléments de ce champ et en additionnant weight à la somme si le nœud correspond aux expressions d'affinité correspondantes ; les nœuds avec la somme la plus élevée sont les plus préférés.
mot de passechaîne de caractères Fournir un mot de passe pour l'authentification avec l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_PASSWORD.Veuillez lire la description de l'élément username pour une discussion sur les cas où cette option est applicable.
persist_configbooléen
    Choix :

  • pas de
  • oui
Enregistrer ou non les jetons de rafraîchissement de la configuration kube. Peut également être spécifié via la variable d'environnement K8S_AUTH_PERSIST_CONFIG.Lorsque le contexte k8s utilise des informations d'identification de l'utilisateur avec des jetons de rafraîchissement (comme oidc ou gke/gcloud auth), le jeton est rafraîchi par la bibliothèque client python k8s mais n'est pas sauvegardé par défaut. Ainsi, l'ancien jeton de rafraîchissement peut expirer et la prochaine authentification peut échouer. Mettre ce drapeau à true indiquera au client python k8s de sauvegarder le nouveau jeton de rafraîchissement dans le fichier de configuration kube.Default to false.Veuillez noter que la version actuelle de la bibliothèque client python k8s ne supporte pas encore la mise en place de ce drapeau à True.Le correctif pour cette bibliothèque python k8s est ici : https://github.com/kubernetes-client/python-base/pull/169.
proxychaîne de caractères L'URL d'un proxy HTTP à utiliser pour la connexion. Peut également être spécifié via la variable d'environnement K8S_AUTH_PROXY.Veuillez noter que ce module ne reprend pas les paramètres de proxy typiques de l'environnement (par exemple HTTP_PROXY).
définition_des_ressourcesdictionnaire Une définition YAML partielle de l'objet en cours de création/mise à jour. Vous pouvez définir ici les paramètres des ressources Kubernetes qui ne sont pas couverts par les paramètres de ce module.NOTE : définition_ressource a une priorité inférieure aux paramètres du module. Si vous essayez de définir par ex. métadonnées.espace-nom ici, cette valeur sera ignorée et espace de noms utilisé à la place.
alias : définition, en ligne
smbios_uuidchaîne de caractères Afin de fournir une vue cohérente sur le matériel virtualisé pour le système d'exploitation invité, l'UUID SMBIOS peut être défini.
étatchaîne de caractères
    Choix :

  • présent
  • absent
  • en cours d'exécution
  • arrêté
Configurez la machine virtuelle soit présent, absente, en cours d'exécution ou arrêté.présent - Créer ou mettre à jour une machine virtuelle. (Et l'exécuter si elle est éphémère).absent - Supprimez une machine virtuelle.en cours d'exécution - Créer ou mettre à jour une machine virtuelle et l'exécuter.arrêté - Arrêtez une machine virtuelle. (Cela supprime les machines virtuelles éphémères).
sous-domainechaîne de caractères S'il est spécifié, le nom d'hôte de la machine virtuelle entièrement qualifié sera hostname.subdomain.namespace.svc.cluster_domain. Si elle n'est pas spécifiée, la machine virtuelle n'aura pas du tout de nom de domaine. L'entrée DNS se résoudra à la machine virtuelle, peu importe si la machine virtuelle elle-même peut capter un nom d'hôte.
tablettesliste / éléments=chaîne Spécifier les tablettes à utiliser comme périphériques d'entrée
modèlechaîne de caractères Nom du modèle à utiliser pour la création d'une machine virtuelle.
paramètres_du_modèledictionnaire Nouvelles valeurs des paramètres du modèle.
nom d'utilisateurchaîne de caractères Fournir un nom d'utilisateur pour s'authentifier avec l'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_USERNAME.Veuillez noter que cela fonctionne uniquement avec les clusters configurés pour utiliser HTTP Basic Auth. Si votre cluster dispose d'une forme d'authentification différente (par exemple, OAuth2 dans OpenShift), cette option ne fonctionnera pas comme prévu et vous devriez vous pencher sur l'option... k8s_auth car cela pourrait faire ce dont vous avez besoin.
valider_certsbooléen
    Choix :

  • pas de
  • oui
Vérification ou non des certificats SSL du serveur d'API. Peut également être spécifié via la variable d'environnement K8S_AUTH_VERIFY_SSL.
alias : verify_ssl
attendrebooléen
    Choix :

  • pas de
  • oui
Vrai si le module doit attendre que la ressource se mette dans l'état souhaité.
wait_sleepchaîne de caractères Par défaut :
5
Nombre de secondes de sommeil entre les vérifications.
wait_timeoutnombre entier Par défaut :
120
La quantité de temps en secondes que le module doit attendre pour que la ressource se mette dans l'état désiré.

Notes

Note

  • Le client OpenShift Python enveloppe le client K8s Python, offrant un accès complet à tous les APIS et modèles disponibles sur les deux plateformes. Pour les détails de la version de l'API et des informations supplémentaires, visitez le site https://github.com/openshift/openshift-restclient-python
  • Pour éviter les erreurs de validation des certificats SSL lorsque validate_certs est Vrai, la chaîne de certificats complète pour le serveur API doit être fournie via ca_cert ou dans le fichier kubeconfig.
  • Afin d'utiliser ce module, vous devez installer le SDK Python d'Openshift. Pour vous assurer qu'il est installé avec la bonne version, vous pouvez créer la tâche suivante : pip : name=openshift>=0.8.2

Exemples

-name: Start virtual machine 'myvm'
  community.kubevirt.kubevirt_vm:state: running
      name: myvm
      namespace: vms

-name: Create virtual machine 'myvm' and start it
  community.kubevirt.kubevirt_vm:state: running
      name: myvm
      namespace: vms
      memory: 64Mi
      cpu_cores:1bootloader: efi
      smbios_uuid: 5d307ca9-b3ef-428c-8861-06e72d69f223
      cpu_model: Conroe
      headless:truehugepage_size: 2Mi
      tablets:-bus: virtio
          name: tablet1
      cpu_limit:3cpu_shares:2disks:-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
  community.kubevirt.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
  community.kubevirt.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
  community.kubevirt.kubevirt_vm:ephemeral:truestate: running
      wait:truewait_timeout:180name: 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
  community.kubevirt.kubevirt_vm:state: running
      wait:truename: myvm
      namespace: vms
      memory: 1024M
      cloud_init_nocloud:userData:|-#cloud-configpassword: 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:1term:match_expressions:-key: security
                  operator: In
                  values:- S2

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

Valeurs de retour

Les valeurs de retour courantes sont documentées ici, les champs suivants sont uniques à ce module :

Clé Renvoyé Description
kubevirt_vmcomplexe succès La spécification du dictionnaire de la machine virtuelle retournée par l'API.Ce dictionnaire contient toutes les valeurs retournées par l'API KubeVirt toutes les options sont décrites ici. https://kubevirt.io/api-reference/master/definitions.html#_v1_virtualmachine

Auteurs

  • Équipe KubeVirt (@kubevirt)