Existe-t-il un moyen de détruire la variable dans Ansible?
En fait, j'ai une variable {{version}} utilisée dans tous mes rôles pour les packages respectifs. Lorsque j'exécute plusieurs rôles, la valeur de version d'un rôle est transmise à un autre - cela est dû au fait que pour certains rôles, je ne donne pas de valeur de version afin qu'il puisse installer la version par défaut de ce package disponible pour les m/c respectifs comme ubuntu/redhat etc.
Voici mon modèle de rôle. La valeur de {{version}} de mysql est passée à rabbitmq.
roles:
- { role: mysql }
- { role: rabbitmq}
Si je peux destory/supprimer la valeur de la version dans chaque rôle, cela devrait résoudre le problème, je crois.
Comme déjà souligné, il n'est pas possible de désactiver une variable dans Ansible.
Évitez cette situation en ajoutant un préfixe à vos noms de variables comme rabbitmq_version
etc. À mon humble avis, c'est une meilleure pratique.
En plus d'éviter la situation dans laquelle vous êtes tombé, cela ajoutera de la clarté à votre Host_vars
et group_vars
.
Pour annuler la définition d'une variable, essayez d'exécuter une tâche set_fact en définissant la variable sur null, comme:
- name: Unset variables
set_fact:
version:
other_var:
Si vous avez un dictionnaire complet qui pourrait simplement remplacer le dict par null
, comme:
- name: Set dict
set_fact:
dict:
rabbitmq_version: 1
other_version: 2
- name: override dict to null
set_fact:
dict:
Quelque chose comme other_var:
est juste "other_var": null
en JSON. C'est ainsi que vous pouvez annuler les variables dans Ansible. Bonne journée.
Non, il n'y a aucun moyen de désactiver une variable (niveau supérieur) dans Ansible.
La seule chose que vous pouvez faire est de créer un dictionnaire et de stocker la variable comme clé dans ce dictionnaire. L'effacement du dictionnaire "parent" fera essentiellement le dictionary.key is defined
travail d'expression conditionnelle.
vous devez plutôt utiliser une variable par rôle:
roles:
- role: mysql
version: mysql_version
- role: rabbitmq
version: rabbitmq_version
ou
roles:
- { role: mysql, version: mysql_version }
- { role: rabbitmq, version: rabbitmq_version }