Note

Ce plugin fait partie de la collection community.general (version 2.0.1).

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

Pour l'utiliser dans un playbook, spécifiez : community.general.one_vm.

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

Synopsis

  • Gère les instances OpenNebula

Exigences

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

  • pyone

Paramètres

Paramètre Choix/par défaut Commentaires
api_passwordchaîne de caractères Mot de passe de l'utilisateur pour se connecter au serveur RPC d'OpenNebula. S'il n'est pas défini, la valeur de l'option ONE_PASSWORD variable d'environnement est utilisée.Si les deux api_username ou api_mot de passe ne sont pas définis, alors il essaiera de s'authentifier avec le fichier ONE auth. Le chemin par défaut est "~/.one/one_auth".Définir la variable d'environnement ONE_AUTH pour remplacer ce chemin.
api_urlchaîne de caractères URL du serveur RPC d'OpenNebula.Il est recommandé d'utiliser HTTPS afin que le nom d'utilisateur/mot de passe ne soit pas transféré sur le réseau en clair.Si elle n'est pas définie, alors la valeur de l'attribut ONE_URL est utilisée.
api_usernamechaîne de caractères Nom de l'utilisateur pour se connecter au serveur RPC d'OpenNebula. Si ce n'est pas le cas, la valeur de la propriété ONE_USERNAME variable d'environnement est utilisée.
attributsdictionnaire Par défaut :
{}
Un dictionnaire d'attributs clé/valeur à ajouter aux nouvelles instances, ou forsetting. state d'instances avec ces attributs.Les clés ne sont pas sensibles à la casse et OpenNebula les convertit automatiquement en majuscules.Attention NAME est un attribut spécial qui définit le nom de la VM lorsqu'elle est déployée.# peuvent être ajoutés à l'attribut NAME et le module ajoutera automatiquement des index aux noms des VM.par exemple ':'. NAME':' foo-### créerait des VMs avec des noms foo-000, foo-001,...Lorsqu'il est utilisé avec count_attributes et exact_count le module correspondra au nom de base sans la partie index.
comptenombre entier Par défaut :
1
Nombre d'instances à lancer
count_attributesdictionnaire Un dictionnaire d'attributs clé/valeur qui ne peut être utilisé qu'avec.exact_count pour déterminer combien de nœuds basés sur un critère d'attributs spécifiques doivent être déployés. Ceci peut être exprimé de plusieurs façons et est montré dans la section EXEMPLES.
count_labelsliste / elements=chaîne Une liste d'étiquettes qui ne peuvent être utilisées qu'avec les éléments suivants exact_count pour déterminer combien de nœuds basés sur un critère d'étiquettes spécifique doivent être déployés.Cela peut être exprimé de plusieurs façons et est montré dans la section EXEMPLES.
cpufloat Pourcentage du processeur divisé par 100 requis pour la nouvelle instance. La moitié de l'aprocesseur est écrite 0,5.
datastore_idnombre entier ajouté dans la version 0.2.0 de community.general Nom du Datastore à utiliser pour créer un nouvel instace.
nom_datastorechaîne de caractères ajouté dans la version 0.2.0 de community.general Nom du Datastore à utiliser pour créer un nouvel instace.
disk_saveasdictionnaire Crée une image à partir d'un disque VM.C'est un dictionnaire où vous devez spécifier name de la nouvelle image.En option, vous pouvez spécifier disk_id du disque que vous voulez sauvegarder. Par défaut disk_id est égal à 0.NOTE':' Cette opération ne sera effectuée que sur la première VM (si plus d'une ID de VM est passée)et la VM doit se trouver dans la zone poweredoff De même, cette opération échouera si une image avec l'état spécifié name spécifiée existe déjà.
taille_du_disqueliste / elements=string La taille du disque créé pour les nouvelles instances (en Mo, Go, TB,...).NOTE':' Si le modèle chapeaute plusieurs disques, l'ordre des tailles est comparé à l'ordre spécifié en template_id/template_name.
exact_countnombre entier Indique le nombre d'instances qui correspondent count_attributes et count_labels doivent être déployées. Les instances sont soit créées soit terminées en fonction de cette valeur.NOTE':' Les instances ayant le moins d'ID seront terminées en premier.
group_idnombre entier ID du groupe qui sera défini comme le groupe de l'instance.
durbooléen
    Choix :

  • pas de
  • oui
Redémarrer, mettre hors tension ou mettre fin aux instances. hard
instance_idsliste / elements=string Une liste d'identifiants d'instance utilisés pour les états':' absent, running, rebooted, poweredoff
alias : ids
étiquettesliste / elements=string Par défaut :
[]
Une liste d'étiquettes à associer aux nouvelles instances, ou pour le paramétrage.state d'instances avec ces labels.
mémoirechaîne de caractères La taille de la mémoire pour les nouvelles instances (en MB, GB, ...)
modechaîne de caractères Définir le mode de permission de l'instance au format octet, par exemple. 600 pour donner au propriétaire use et manage et rien au groupe et aux autres.
réseauxliste / elements=chaîne Par défaut :
[]
Une liste de dictionnaires avec des paramètres de réseau. Voir les exemples pour plus de détails.
propriétaire_idnombre entier ID de l'utilisateur qui sera défini comme le propriétaire de l'instance.
persistantbooléen ajouté dans la version 0.2.0 de community.general
    Choix :

  • pas de
  • oui
Crée une copie persistante privée du modèle plus toute image définie dans DISK, et instancie cette copie.
étatchaîne de caractères
    Choix :

  • présent
  • absent
  • en cours d'exécution
  • redémarré
  • mise hors tension
present - créer des instances à partir d'un modèle spécifié avec template_id/template_name.running - exécuter des instances poweredoff - mise hors tension des instances rebooted - redémarrage des instances absent - instances de terminaison
modèle_identier ID d'un modèle de VM à utiliser pour créer une nouvelle instance.
nom_du_modèlechaîne de caractères Nom du modèle de VM à utiliser pour créer un nouvel instace.
vcpunombre entier Nombre de processeurs (cœurs) dont disposera la nouvelle VM.
vm_start_on_holdbooléen
    Choix :

  • pas de
  • oui
Défini à true pour mettre la vm en attente pendant la création.
attentebooléen
    Choix :

  • pas de
  • oui
Attendez que l'instance atteigne l'état souhaité avant de revenir. Gardez à l'esprit que si vous attendez que l'instance soit en état d'exécution, cela ne signifie pas que vous serez en mesure de SSH sur cette machine, seulement que le processus de démarrage a commencé sur cette instance, voir l'exemple 'wait_for' pour plus de détails.
wait_timeoutentier Par défaut :
300
Combien de temps avant que l'attente n'abandonne, en secondes.

Exemples

-name: Create a new instance
  community.general.one_vm:template_id:90register: result

-name: Print VM properties
  ansible.builtin.debug:msg: result

-name: Deploy a new VM on hold
  community.general.one_vm:template_name:'app1_template'vm_start_on_hold:'True'-name: Deploy a new VM and set its name to 'foo'
  community.general.one_vm:template_name:'app1_template'attributes:name: foo

-name: Deploy a new VM and set its group_id and mode
  community.general.one_vm:template_id:90group_id:16mode:660-name: Deploy a new VM  as persistent
  community.general.one_vm:template_id:90persistent: yes

-name: Change VM's permissions to 640
  community.general.one_vm:instance_ids:5mode:640-name: Deploy 2 new instances and set memory, vcpu, disk_size and 3 networks
  community.general.one_vm:template_id:15disk_size: 35.2 GB
    memory: 4 GB
    vcpu:4count:2networks:-NETWORK_ID:27-NETWORK:"default-network"NETWORK_UNAME:"app-user"SECURITY_GROUPS:"120,124"-NETWORK_ID:27SECURITY_GROUPS:"10"-name: Deploy a new instance which uses a Template with two Disks
  community.general.one_vm:template_id:42disk_size:- 35.2 GB
      - 50 GB
    memory: 4 GB
    vcpu:4count:1networks:-NETWORK_ID:27-name:"Deploy an new instance with attribute 'bar: bar1' and set its name to 'foo'"community.general.one_vm:template_id:53attributes:name: foo
      bar: bar1

-name:"Enforce that 2 instances with attributes 'foo1: app1' and 'foo2: app2' are deployed"community.general.one_vm:template_id:53attributes:foo1: app1
      foo2: app2
    exact_count:2count_attributes:foo1: app1
      foo2: app2

-name: Enforce that 4 instances with an attribute 'bar' are deployed
  community.general.one_vm:template_id:53attributes:name: app
      bar: bar2
    exact_count:4count_attributes:bar:# Deploy 2 new instances with attribute 'foo: bar' and labels 'app1' and 'app2' and names in format 'fooapp-##'# Names will be: fooapp-00 and fooapp-01-name: Deploy 2 new instances
  community.general.one_vm:template_id:53attributes:name: fooapp-##foo: bar
    labels:- app1
      - app2
    count:2# Deploy 2 new instances with attribute 'app: app1' and names in format 'fooapp-###'# Names will be: fooapp-002 and fooapp-003-name: Deploy 2 new instances
  community.general.one_vm:template_id:53attributes:name: fooapp-###app: app1
    count:2# Reboot all instances with name in format 'fooapp-#'# Instances 'fooapp-00', 'fooapp-01', 'fooapp-002' and 'fooapp-003' will be rebooted-name: Reboot all instances with names in a certain format
  community.general.one_vm:attributes:name: fooapp-#state: rebooted

# Enforce that only 1 instance with name in format 'fooapp-#' is deployed# The task will delete oldest instances, so only the 'fooapp-003' will remain-name: Enforce that only 1 instance with name in a certain format is deployed
  community.general.one_vm:template_id:53exact_count:1count_attributes:name: fooapp-#-name: Deploy an new instance with a network
  community.general.one_vm:template_id:53networks:-NETWORK_ID:27register: vm

-name: Wait for SSH to come up
  ansible.builtin.wait_for_connection:delegate_to:'{{ vm.instances[0].networks[0].ip }}'-name: Terminate VMs by ids
  community.general.one_vm:instance_ids:-153-160state: absent

-name: Reboot all VMs that have labels 'foo' and 'app1'
  community.general.one_vm:labels:- foo
      - app1
    state: rebooted

-name:"Fetch all VMs that have name 'foo' and attribute 'app: bar'"community.general.one_vm:attributes:name: foo
      app: bar
  register: results

-name: Deploy 2 new instances with labels 'foo1' and 'foo2'
  community.general.one_vm:template_name: app_template
    labels:- foo1
      - foo2
    count:2-name: Enforce that only 1 instance with label 'foo1' will be running
  community.general.one_vm:template_name: app_template
    labels:- foo1
    exact_count:1count_labels:- foo1

-name: Terminate all instances that have attribute foo
  community.general.one_vm:template_id:53exact_count:0count_attributes:foo:-name:"Power-off the VM and save VM's disk with id=0 to the image with name 'foo-image'"community.general.one_vm:instance_ids:351state: poweredoff
    disk_saveas:name: foo-image

-name:"Save VM's disk with id=1 to the image with name 'bar-image'"community.general.one_vm:instance_ids:351disk_saveas:name: bar-image
      disk_id:1

Valeurs de retour

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

Clé Retourné Description
instancescomplexe succès une liste d'instances info dont l'état est modifié ou qui sont récupérées avec... instance_ids option.
attributsdictionnaire succès Un dictionnaire d'attributs clés/valeurs qui sont associés à l'instance.
Exemple :{'HYPERVISOR' : 'kvm', 'LOGO' : 'images/logos/centos.png', 'TE_GALAXY' : 'bar', 'USER_INPUTS' : None}
cpufloat succès Pourcentage de l'unité centrale divisé par 100
Echantillon : 0.2
taille du disquechaîne de caractères succès La taille du disque en Mo
Echantillon : 20480 MO
groupe_idnombre entier succès ID du groupe du vm
Echantillon : 1
nom_du_groupechaîne de caractères succès nom du groupe du vm
Echantillon : un-users
étiquettesliste / elements=string succès Une liste d'étiquettes de chaîne qui sont associées à l'instance.
Exemple :['foo', 'spec-label']
lcm_statechaîne de caractères succès État lcm d'une instance qui n'est pertinent que lorsque l'état est ACTIF.
Exemple : RUNNING
mémoirechaîne de caractères succès La taille de la mémoire en Mo
Echantillon : 4096 MO
modechaîne de caractères succès mode de la vm
Echantillon : 660
réseauxliste / elements=chaîne succès une liste de dictionnaires avec des informations sur IP, NAME, MAC, SECURITY_GROUPS pour chaque NIC.
Exemple :[{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}]
propriétaire_idnombre entier succès ID du propriétaire du vm
Echantillon : 143
nom_du_propriétairechaîne de caractères succès nom du propriétaire de la vm
Echantillon : utilisateur de l'application
étatchaîne de caractères succès état d'une instance
Exemple : ACTIF
modèle_identier succès ID du modèle du vm
Echantillon : 153
uptime_hnombre entier succès Temps de fonctionnement de l'instance en heures
Exemple : 35
vcpuentier succès Nombre de processeurs (cœurs)
Echantillon : 2
vm_identier succès id vm
Echantillon : 153
vm_namechaîne de caractères succès nom du vm
Echantillon : foo
instances_idsliste / elements=string succès une liste d'ids d'instances dont l'état est modifié ou qui sont récupérées avec la fonction instance_ids option.
Echantillon :[1234, 1235]
tagged_instancescomplexe succès Une liste d'instances info basée sur un attribut spécifique et/ou des labels qui sont spécifiés avec count_attributes et count_labelsoptions.
attributsdictionnaire succès Un dictionnaire d'attributs clés/valeurs qui sont associés à l'instance.
Exemple :{'HYPERVISOR' : 'kvm', 'LOGO' : 'images/logos/centos.png', 'TE_GALAXY' : 'bar', 'USER_INPUTS' : None}
cpufloat succès Pourcentage de l'unité centrale divisé par 100
Echantillon : 0.2
taille du disqueliste / elements=string succès La taille du disque en Mo
Echantillon :['20480 MB', '10240 MB']
groupe_idnombre entier succès ID du groupe du vm
Echantillon : 1
nom_du_groupechaîne de caractères succès nom du groupe du vm
Echantillon : un-users
étiquettesliste / elements=string succès Une liste d'étiquettes de chaîne qui sont associées à l'instance.
Exemple :['foo', 'spec-label']
lcm_statechaîne de caractères succès État lcm d'une instance qui n'est pertinent que lorsque l'état est ACTIF.
Exemple : RUNNING
mémoirechaîne de caractères succès La taille de la mémoire en Mo
Echantillon : 4096 MO
modechaîne de caractères succès mode de la vm
Echantillon : 660
réseauxliste / elements=chaîne succès une liste de dictionnaires avec des informations sur IP, NAME, MAC, SECURITY_GROUPS pour chaque NIC.
Exemple :[{'ip': '10.120.5.33', 'mac': '02:00:0a:78:05:21', 'name': 'default-test-private', 'security_groups': '0,10'}, {'ip': '10.120.5.34', 'mac': '02:00:0a:78:05:22', 'name': 'default-test-private', 'security_groups': '0'}]
propriétaire_idnombre entier succès ID utilisateur du vm
Echantillon : 143
nom_du_propriétairechaîne de caractères succès nom d'utilisateur de la vm
Echantillon : app-user
étatchaîne de caractères succès état d'une instance
Exemple : ACTIF
modèle_identier succès ID du modèle du vm
Echantillon : 153
uptime_hnombre entier succès Temps de fonctionnement de l'instance en heures
Exemple : 35
vcpuentier succès Nombre de processeurs (cœurs)
Echantillon : 2
vm_identier succès id vm
Echantillon : 153
vm_namechaîne de caractères succès nom du vm
Echantillon : foo

Auteurs

  • Milan Ilic (@ilicmilan)
  • Jan Meerkamp (@meerkampdvv)