Ich habe eine Umgebung, in der das sudo-Passwort eines Benutzers auf mehreren Servern nicht identisch ist. Dies kann als ein Sicherheitsmerkmal zu sehen :-DIst eine dynamische Suche möglich?
Ich wollte das sudo Passwort (Tresor/Sicherheit beiseite zu einem Zeitpunkt) in einer Datei speichern:
- host1.sudopwd
- host2.sudopwd
- ...
- hostn.sudopwd
in meinem ansible Textbuch, ich bin mit so etwas wie die:
---
- hosts: all
tasks:
- include: '{{ inventory_hostname }}'
vars:
ansible_become: true
ansible_become_user: root
ansible_become_pass: "{{ lookup('file','{{ inventory_hostname }}.sudopwd') }}"
Und es funktioniert gut, wenn ich eine Datei pro Hosts habe. Nun, wie kann ich es dynamischer machen?
Lassen Sie uns sagen, dass ich ein Skript habe, das searchsudopwd
genannt wird, das ein einfaches Bash-Skript ist (könnte irgendeine Sprache tatsächlich sein).
#!/usr/bin/env bash
if [[ "$1" == "host1" ]]; then
echo "pwd1"
elif [[ "$1" == "host2" ]]; then
echo "pwd2"
else
echo "default pwd"
fi
Wie kann ich es mit ansible verwenden? Was muss in meinem Spielbuch geändert werden, damit es funktioniert?
Ich habe versucht, so etwas wie:
---
- hosts: all
tasks:
- include: '{{ inventory_hostname }}'
vars:
ansible_become: true
ansible_become_user: root
ansible_become_pass: "{{ item }}"
with_lines: searchsudopwd '{{ inventory_hostname }}'
Aber es funktioniert nicht ...
Wenn meine Idee nicht funktioniert, ist es eine Möglichkeit, wie ein „default“ Passwort haben und nur das Passwort für bestimmte Hosts erhalten?
Vielen Dank für Ihre Hilfe und Zeit!
Danke :-) das ich nicht über die "host_vars" wusste! Ich habe es getestet und es funktioniert so, wie ich es erwartet hatte! Ich habe nicht den anderen Teil Ihrer Antwort überprüft, aber es scheint zu "zu kompliziert" im Vergleich zu der host_vars/group_vars Lösung –
Sobald ich genug Ruf habe, werde ich +1 Ihre Antwort! –