ansible: pourquoi le module de fichiers saute-t-il?


8

J'ai un playbook ansible 1.1 où je fais quelque chose comme ceci:

- name: copy files
  sudo: True                                                                                                             
  shell: cp /from/* /to/

- name: change owner
  sudo: True
  file: path=$item owner=newuser group=newgroup
  with_fileglob: /to/*

La deuxième tâche, "changer de propriétaire" est toujours ignorée. quelqu'un peut-il m'aider à découvrir pourquoi? le module de fichiers est-il ignoré parce que les fichiers existent? Je suis coincé :)


Je ne savais pas si cela permettait $ item ... Je pensais que c'était {{item}}
Arun Sangal

Réponses:


16

De la documentation :

N'oubliez pas que les plugins de recherche sont exécutés sur la machine "de contrôle":

with_fileglob est un plugin de recherche, il recherche donc les fichiers sur le serveur local, celui à partir duquel vous exécutez ansible-playbook.

Voici ce que vous pouvez faire:

- name: list files 
  action: command ls -1 /to/* 
  register: dumpfiles 

- name: change ownership 
  action: file path=$item owner=newuser group=newgroup
  with_items: ${dumpfiles.stdout_lines}

cela a tellement de sens maintenant que vous le dites. BTW, j'ai résolu cela en utilisant [shell: chown -R newuser: newgroup / to]
deadsven

3
Dans ce cas, l'utilisation de shell n'est pas préférable car vous perdez l'idempotence. Vous devriez plutôt utiliser le module de fichiers et with_items
Tom Aac

oui, j'aimerais utiliser le module de fichiers, mais with_items ne prend pas en charge les globs, n'est-ce pas? lister chaque fichier dans une liste with_items n'est pas vraiment ce que je veux
deadsven

Voir ma réponse, il y a ce dont vous avez besoin
Tom Aac

2
Chaque fois que vous exécutez chown, vous modifiez l'horodatage du fichier. En particulier ctime. Cela pourrait être un problème pour certains logiciels de sauvegarde par exemple.
Tom Aac

5

Ansible 1.1 a ajouté le paramètre recurse au module de fichiers, donc tout ce que vous devez faire pour votre tâche de changement de propriétaire est le suivant:

- name: change ownership 
  action: file state=directory recurse=yes path=/to/ owner=newuser group=newgroup

Cela le rendra plus apparent lorsque les choses changeront; l'utilisation du shell ou des modules de commande retournera toujours un état modifié, même si rien n'a réellement été changé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.