Dans mon playbook Ansible plusieurs fois, j'ai besoin de créer un fichier là-bas
- name: Copy file
template:
src: code.conf.j2
dest: "{{project_root}}/conf/code.conf"
maintenant plusieurs fois conf
dir n'est pas là. Ensuite, je dois créer plus de tâches pour créer ce répertoire en premier.
Existe-t-il un moyen facile de créer automatiquement un répertoire s'il n'existe pas avec une option
Réponses:
En ce moment, c'est le seul moyen
la source
recurse=yes
à l'file
appel pour obtenir lemkdir -p
comportement de typedirname
à ansible pour obtenir le répertoire qui contient un fichier.Pour garantir le succès avec un chemin complet, utilisez recurse = yes
la source
recurse=yes
n'appliquent les autorisations que de manière récursive. Cependant, la documentation indique que cela se produit automatiquement depuis la v1.7, doncrecurse
pourrait bien être obsolète.Si vous exécutez Ansible> = 2.0, vous pouvez également utiliser le filtre de nom de répertoire pour extraire la partie répertoire d'un chemin. De cette façon, vous pouvez simplement utiliser une variable pour contenir le chemin complet afin de vous assurer que les deux tâches ne se désynchronisent jamais.
Donc, par exemple, si vous avez un playbook avec
dest_path
défini dans une variable comme celle-ci, vous pouvez réutiliser la même variable:la source
Autant que je sache, la seule façon pourrait être fait est en utilisant l'
state=directory
option. Bien que letemplate
module prenne en charge la plupart descopy
options, qui à leur tour prennent en charge la plupart desfile
options, vous ne pouvez pas utiliser quelque chose commestate=directory
avec lui. De plus, ce serait assez déroutant (cela signifierait-il qu'il{{project_root}}/conf/code.conf
s'agit d'un répertoire? Ou cela signifierait-il qu'il{{project_root}}/conf/
devrait être créé en premier.Je ne pense donc pas que cela soit possible pour le moment sans ajouter une
file
tâche précédente .la source
Selon le dernier document lorsque l'état est défini sur répertoire, vous n'avez pas besoin d'utiliser le paramètre recurse pour créer des répertoires parents, le module de fichiers s'en chargera.
c'est assez pour créer les données des répertoires parents et tester avec foo
veuillez vous référer à la description des paramètres - " state " http://docs.ansible.com/ansible/latest/modules/file_module.html
la source
vous pouvez créer le dossier en utilisant ce qui suit en fonction de votre version ansible.
Dernière version 2 <
Ancienne version:
Consulter - http://docs.ansible.com/ansible/latest/file_module.html
la source
Le module de copie crée le répertoire s'il n'y est pas. Dans ce cas, il a créé le répertoire résolu.conf.d
la source