Ich verwende das Raw-Modul von AnsibleVerwendung eines Nicht-Root-Benutzersund möchte einen Befehl angeben, der bestimmte Bedingungen überprüft. Beispielsweise möchte ich vor dem Löschen prüfen, ob ein Verzeichnis vorhanden ist oder nicht. Wie der folgende Befehl.
[ -d "$DIR" ] && echo "Yes"
Jetzt möchte ich dem Nicht-Root-Benutzer die Berechtigung erteilen, diesen Befehl in der Sudoers-Datei auszuführen.
xyzUser ALL = (ALL) NOPASSWD: 'something/that/lets/me/run/that/command'
Ich möchte also wissen, was ich in die Sudoers schreiben kann, damit ich diesen Befehl und alle anderen zustandsbasierten Befehle ausführen kann.
Antwort1
Ich möchte beispielsweise prüfen, ob ein Verzeichnis existiert oder nicht, bevor ich es lösche.
- name: Example playbook to make sure a dir is absent
hosts: my_host_group
# Connect with a non-root user
remote_user: my_remote_user
# Use sudo, as you say you need it. Configure it on the relevant host
become: true
vars:
dir_to_remove: /path/to/dir/on/host
tasks:
- name: "remove {{ dir_to_remove }} if exists. Do nothing otherwise"
file:
path: "{{ dir_to_remove }}"
state: absent