Ansible-mode 755 pour les répertoires et 644 pour les fichiers récursivement

Je voudrais permettre à quiconque de lister et de lire tous les fichiers de mon arborescence de répertoires, mais je ne veux pas rendre les fichiers exécutables:

dir
  subdir1
      file1
  subdir2
      file2
  ...
  subdirX
      fileX

La tâche suivante rend mes répertoires et fichiers lisibles, mais elle rend également tous les fichiers exécutables:

- name: Make my directory tree readable
  file:
    path: dir
    mode: 0755
    recurse: yes

D'un autre côté, si je choisis le mode 0644, alors tous mes fichiers ne sont pas exécutables, mais je ne suis pas en mesure de lister mes répertoires.

Est-il possible de définir le mode 755 pour tous les répertoires et 644 pour tous les fichiers d'un répertoire l'arbre?

Je vous Remercie.

57
demandé sur udondan 2015-02-28 09:05:07

2 réponses

Depuis la version 1.8, Ansible supporte les modes symboliques. Ainsi, ce qui suit effectuerait la tâche que vous voulez:

- name: Make my directory tree readable
  file:
    path: dir
    mode: u=rwX,g=rX,o=rX
    recurse: yes

Parce que X (au lieu de x) ne s'applique qu'aux répertoires ou fichiers avec au moins un jeu de bits X.

87
répondu Adrien Clerc 2015-04-22 09:52:21

Les modules fichier / copie Ansible ne vous donnent pas la granularité de spécifier des autorisations en fonction du type de fichier, donc vous devrez probablement le faire manuellement en faisant quelque chose comme ceci:

- name: Ensure directories are 0755
  command: find {{ path }} -type d -exec chmod -c 0755 {} \;
  register: chmod_result
  changed_when: "chmod_result.stdout != \"\""

- name: Ensure files are 0644
  command: find {{ path }} -type f -exec chmod -c 0644 {} \;
  register: chmod_result
  changed_when: "chmod_result.stdout != \"\""

Ceux-ci auraient pour effet de se reproduire à travers {{ path }} et de changer les autorisations de chaque fichier ou Répertoire aux autorisations spécifiées.

22
répondu Bruce P 2016-05-26 17:04:22