web-dev-qa-db-fra.com

Ansible - Mode 755 pour les répertoires et 644 pour les fichiers de manière récursive

J'aimerais permettre à quiconque de répertorier et de lire tous les fichiers de mon arborescence de répertoires, mais je ne souhaite 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 rend également tous les fichiers exécutables:

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

Par contre, si je choisis le mode 0644, tous mes fichiers ne sont pas exécutables, mais je ne peux pas 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'une arborescence de répertoires?

Merci.

61
mykola

Depuis la version 1.8, Ansible supporte les modes symboliques. Ainsi, les tâches suivantes exécuteraient la tâche souhaitée:

- 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 x bit défini.

91
Adrien Clerc

Les modules fichier/copie Ansible ne vous donnent pas la granularité de spécifier des autorisations en fonction du type de fichier. Vous devrez probablement le faire manuellement en procédant comme suit:

- 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 != \"\""

Celles-ci auraient pour effet de récurser à travers {{ path }} et modifier les autorisations de chaque fichier ou répertoire en fonction des autorisations spécifiées.

25
Bruce P