J'essaie la concaténation multiple en préformant with_items
pour la section de destination.
En ce moment, cela ressemble à ceci:
- name: create app except+lookup
copy: content="" dest="{{ dir.comp ~ '/config/con2dd/' ~ item.name ~ 'File.txt' }}" force=no group=devops owner=devops mode: 0755
with_items:
...
Je reçois:
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
J'ai essayé plusieurs approches mais aucune n'a abouti à quelque chose qui fonctionne.
Est-il possible de concaténer les variables avec les chaînes?
Ne mélangez pas les syntaxes YAML pures et clé = valeur pour les paramètres. Et utilisez toujours la syntaxe YAML pour les arguments complexes:
- name: create app except+lookup
copy:
content: ""
dest: "{{ dir.comp }}/config/con2dd/{{ item.name }}File.txt"
force: no
group: devops
owner: devops
mode: 0755
with_items:
...
Vous ne citez pas la valeur associée à la clé copy
. Pour que cela se produise, le caractère first doit être une citation double (ou simple). L'exemple donné dans les commentaires le fait correctement, mais n'est pas explicite à ce sujet. Une fois qu'un scalaire commence par un non guillemet (les vôtres commencent par les guillemets c
de content
apparaissant dans le scalaire n'auront plus aucune signification particulière.
En raison d'un bogue dans l'analyseur utilisé par Ansible, le :
(espace de deux-points) dans ce scalaire (mode: 0755
) pose problème, vous devez mettre entre guillemets tout le scalaire et échapper aux guillemets qui s'y trouvent:
copy: "content=\"\" dest=\"{{ dir.comp ~ '/config/con2dd/' ~ item.name ~ 'File.txt' }}\" force=no group=devops owner=devops mode: 0755"
ou bien utilisez des guillemets simples (qui ont des règles d'échappement différentes:
copy: 'content="" dest="{{ dir.comp ~ ''/config/con2dd/'' ~ item.name ~ ''File.txt'' }}" force=no group=devops owner=devops mode: 0755'
Vous pouvez tester vous-même les scalaires sur this l'analyseur YAML en ligne, il a le même bogue que ce qui empêche Ansible de ne pas analyser votre YAML correctement.
This parser, gère le :
dans scalaire correctement et ne produira pas d'erreur avec votre entrée (mais il a d'autres problèmes).