Comment puis-je copier plus d'un seul fichier dans des nœuds distants par Ansible dans une tâche ?
J'ai essayé de dupliquer la ligne du module de copie dans ma tâche pour définir les fichiers mais elle ne copie que le premier fichier.
Comment puis-je copier plus d'un seul fichier dans des nœuds distants par Ansible dans une tâche ?
J'ai essayé de dupliquer la ligne du module de copie dans ma tâche pour définir les fichiers mais elle ne copie que le premier fichier.
Cette approche pourrait m'aider si j'ai placé tous mes fichiers dans le même Root pour les copier sur la machine distante, mais qu'en est-il d'avoir certains fichiers dans différents répertoires ? Par exemple, je veux copier 3 fichiers de 3 répertoires différents
Hé, j'essaie de déplacer tous les fichiers de mon /roles/db/files
mais je n'arrive pas à le faire fonctionner avec cette méthode. J'ai essayé with_fileglob: - /roles/db/file/*
mais il ne trouvera pas le chemin
Si vous avez besoin de plus d'un emplacement, vous avez besoin de plus d'une tâche. Une tâche de copie ne peut copier que d'un emplacement (y compris plusieurs fichiers) vers un autre sur le nœud.
- copy: src=/file1 dest=/destination/file1
- copy: src=/file2 dest=/destination/file2
# copy each file over that matches the given pattern
- copy: src={{ item }} dest=/destination/
with_fileglob:
- /files/*
- nom : copie fichier1 copie : src=/file1 dest=/destination/file1 - nom : copie fichier2 copie : src=/file2 dest=/destination/file2
Ça dépend. Plus simple et probablement plus propre, mais peut être fait en utilisant des structures de données plus complexes, comme une liste de dictionnaires anonymes avec des données source et cible, bouclée avec_items. C'est la même chose dans n'importe quel langage - vous devez faire un choix. Il y a des cas où une fonction de délégation est plus efficace et plus facile à maintenir qu'une longue série d'instructions if copiées/collées. Je suis ce monstre qui préfère maintenir un bout de code concis et bien structuré plutôt qu'une longue et fastidieuse liste de directives presque identiques, mais je ne suppose pas que tout le monde soit d'accord. Faites ce qui est maintenable pour vous.
Juste une note complémentaire que find
le module ne fonctionne que pour ansible 2.x mais pas pour ansible 1.x
J'ai corrigé votre réponse parce que vous avez mentionné la stdout_lines
dans la valeur de retour mais n'est pas applicable pour find
module. Il n'a que files
, examined
et matched
comme valeurs de retour. J'espère que cela aidera d'autres personnes
Quelqu'un a-t-il réussi à faire fonctionner ce système pour copier des fichiers vers des nœuds distants ? find
semble seulement regarder le système distant, ne permettant pas de saisir quoi que ce soit du nœud de gestion. Ces réponses, utilisant with_fileglob
semble être plus approprié : stackoverflow.com/a/42290160/272387 , stackoverflow.com/a/36720342/272387 .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.