Ansible, set_fact à l'aide de if then else
Je suis en train de mettre une variable dans Ansible avec set_fact au moment de l'exécution basé sur une autre variable. Si les utilisations de la première valeur, peu importe ce que la valeur réelle est. Voici mon exemple de code:
- name: Global_vars - get date info
set_fact:
jm_env: "{{lookup('env', 'Environment')}}"
l_env: "{% if '{{jm_env}}==Develop' %}d{% elif '{{jm_env}}==Staging'%}s{% else %}p{% endif %}"
l_env
est d
n'importe quel jm_env
est réglé.
OriginalL'auteur thepod71 | 2017-03-21
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, les dictionnaires en YAML ne sont pas commandés (et la syntaxe utilisée par Ansible ici est un YAML dictionnaire), de sorte que vous n'avez aucune garantie Ansible faudrait d'abord définir
jm_env
avant de procéder àl_env
-- vous avez besoin de partager la cession en deux tâches.Deuxièmement, votre test expressions sont incorrectes --
'{{jm_env}}==Develop'
est une chaîne, car il est cité; et testif 'string'
toujours évaluer àtrue
(c'est la raison pour laquelle vous obtenez toujoursd
dans la sortie).Utilisation:
Veuillez consulter le Centre d'Aide: ne pas ajouter un commentaire à votre question ou sur une réponse de dire "Merci"..
OriginalL'auteur techraf
L'un de la manière la plus simple pour définir les fait en fonction de la condition exemple comme suit:
Remarque: Supposons que op_result est un dict & déjà défini.
Code a été testé et fonctionne bien.
OriginalL'auteur S.K. Venkat