Bonne façon de concaténer des chaînes de variables
J'ai besoin de créer une nouvelle variable à partir du contenu des autres variables. Actuellement, je suis en utilisant quelque chose comme ceci:
- command: echo "{{ var1 }}-{{ var2 }}-{{ var3 }}"
register: newvar
Le problème est:
- Utilisation de
{{ var1 }}...{{ varN }}
apporte trop longues chaînes et très laid code. - Utilisation de
{{ newvar.stdout }}
un peu mieux, mais déroutant. - Utilisation de
set_fact
module caches fait entre les courses. Il n'est pas approprié pour moi.
Est-il une autre solution?
Vous devez vous connecter pour publier un commentaire.
Bonne question. Mais je pense qu'il n'y a pas de bonne réponse qui répond à vos critères. Le mieux je pense est d'utiliser un supplément de vars fichier.
Une tâche comme ceci:
Et dans
concat.yml
vous avez votre définition:Depuis les chaînes de caractères sont des listes de caractères en Python, on peut concaténer des chaînes de la même façon, nous concaténer des listes (avec le signe+):
Si vous voulez pipe à la chaîne résultante à certains filtres, assurez-vous de placer les bits entre parenthèses:
par exemple, Pour concaténer nos 3 vars, et obtenir une sha512 hash:
Remarque: cela fonctionne sur Ansible 2.3. Je ne l'ai pas testé sur les versions antérieures.
Aussi simple que de rejoindre les listes en python lui-même.
Fonctionne de la même manière à l'aide de variables:
ansible -m debug -a msg="title {{ '-'.join((var1, var2, var3)) }}" localhost
pas de travail?