Wie führe ich einen Test in einer Ansible-Raw-Modulanweisung aus?

Wie führe ich einen Test in einer Ansible-Raw-Modulanweisung aus?

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

verwandte Informationen