W ansible mogę to zrobić:
file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes
I rekurencyjnie ustawia właściciela, grupę i uprawnienia na 0775 we wszystkich katalogach i plikach na tej ścieżce. Ale chcę ustawić katalogi na 0775, a pliki na 0664. Czy jest jakiś sposób, aby zrobić to w ansible?
file-permissions
ansible
Edward Ned Harvey
źródło
źródło
Odpowiedzi:
ustawi katalogi na 755, a pliki na 644.
źródło
X
dotyczyx
katalogów, a nic nie dotyczy plików. I w ten sposóbchmod
nieansible
traktuje ciągu trybu. ŻyczęS
będą traktowane podobnie.Źródło: https://stackoverflow.com/a/28782805/1306186
źródło
recurse
opcję, ale nie drugą.Jeśli chcesz użyć pliku modułu w ansible, możesz:
Za pomocą tej metody najpierw ustawiasz cały plik (recurse = yes) na „644”, a następnie ustawiasz / foo / bar / somedir na „775”.
Nie jest to idealne, ponieważ spowoduje zmianę uprawnień do katalogu za każdym razem, gdy grasz w playbook. Ale przynajmniej jest idempotentny, nie tak jak polecenie modułu.
Jeśli nie chcesz mieć statusu „zmienionego”, możesz użyć statystyki modułu. Wyświetli listę wszystkich plików i katalogu w / foo / bar / somedir, więc zarejestrujesz odpowiedź, a następnie utworzysz pętlę tylko na tych plikach.
źródło
Nie jestem pewien, jaki sens miałoby ustawienie katalogów na 0775 (
rwxrwxr-x
) i plików na 0644 (rw-r--r--
): katalogi do zapisu w grupie, ale nie pliki?Jeśli chciałeś ustawić pliki na 0664 (
rw-rw-r--
), aby upewnić się, że pliki nie są wykonywalne, podczas gdy katalogi są przeszukiwane, istnieje eleganckie rozwiązanie obejmujące tylko jednochmod
polecenie:Oto, jak można go użyć w Ansible :
chmod -c
wypisuje wszystkie zmiany, których możemy wygodnie użyć do wypełnienia statusu „zmieniono” w Ansible . Mam nadzieję, że to ma sens.źródło
Aby zmieniać mody tylko w razie potrzeby:
źródło