Ich habe eine Playbook, die einige Prechecks auf der Datenbank als Oracle-Benutzer ausführt. Der Remote-Knoten ist ein AIX-Server und deshalb habe ich ein Shell-Skript erstellt, das über das Playbook ausgeführt wird.Beschränken Anssible-Skript-Modul mit sudoers auf dem Remote-Knoten
---
- hosts: db
var_files:
- ansible_var.yml
tasks:
- name: "DB Checks"
become: True
become_user: oracle
script: "{ db_prechk }"
Auf der AIX-Server, habe ich die folgenden Eintrag in die sudoers
Dateiansible ALL=(oracle) NOPASSWD: /tmp/ansible-tmp-*/db_prechecks.sh
Aber das Textbuch nicht mit dem Fehler, dass sie für das Privileg Eskalation Prompt wartet.
Dies läuft gut, wenn es als root ausgeführt wird. Wir wollen jedoch keine passwortlose Wurzel zwischen dem Ansible-Controller und den entfernten Knoten. Also haben wir einen Benutzer auf dem Controller und den entfernten Knoten erstellt und die SSH-Schlüssel ausgetauscht.
Dies läuft auch, wenn der sudoers Eintrag ist nur
ansible ALL=(oracle) NOPASSWD: ALL
Wir wollen nicht zu vollem Zugriff auf den oracle
Benutzer-ID über die ansible
Benutzer-ID zur Verfügung zu stellen.
Ich habe das Playbook im ausführlichen Modus ausgeführt und kann sehen, dass Ansible das Skript in das Verzeichnis remote_tmp
kopiert und es als oracle
userid ausführt. In diesem Fall hätte die sudoers-Zeile das Ausführen zulassen sollen?
testen/tmp mit noexec montiert ist. Sehen Sie sich/etc/fstab an – bodo
@bodo Das würde nicht erklären, warum es mit 'NOPASSWD: ALL' funktioniert hat. – techraf