Der wahrscheinlich beste Weg, dies zu tun - vorausgesetzt, Sie können die von scottod bereitgestellte NOPASSWD-Lösung nicht verwenden, ist die Verwendung der Lösung von Mircea Vutcovici in Kombination mit Ansible Vault .
Zum Beispiel könnten Sie ein Spielbuch wie das folgende haben:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Hier fügen wir eine Datei mit dem Namen secret
sudo hinzu, die unser sudo-Passwort enthält.
Wir werden ansible-vault verwenden, um eine verschlüsselte Version dieser Datei zu erstellen:
ansible-vault create secret
Sie werden nach einem Kennwort gefragt und öffnen dann Ihren Standardeditor, um die Datei zu bearbeiten. Sie können Ihre ansible_sudo_pass
hier setzen.
zB secret
::
ansible_sudo_pass: mysudopassword
Speichern und beenden, jetzt haben Sie eine verschlüsselte secret
Datei, die Ansible entschlüsseln kann, wenn Sie Ihr Playbook ausführen. Hinweis: Sie können die Datei mit bearbeiten ansible-vault edit secret
(und das Kennwort eingeben, das Sie beim Erstellen der Datei verwendet haben).
Das letzte Puzzleteil besteht darin, Ansible eine zu geben, mit --vault-password-file
der es Ihre secret
Datei entschlüsseln kann.
Erstellen Sie eine Datei mit dem Namen vault.txt
und geben Sie das Kennwort ein, das Sie beim Erstellen Ihrer Datei verwendet habensecret
Datei verwendet haben. Das Kennwort sollte eine Zeichenfolge sein, die als einzelne Zeile in der Datei gespeichert ist.
Aus den Ansible Docs:
.. Stellen Sie sicher, dass die Berechtigungen für die Datei so sind, dass niemand sonst auf Ihren Schlüssel zugreifen kann, und fügen Sie Ihren Schlüssel nicht der Quellcodeverwaltung hinzu
Endlich: Sie können Ihr Playbook jetzt mit so etwas wie ausführen
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Das Obige setzt das folgende Verzeichnislayout voraus:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Weitere Informationen zu Ansible Vault finden Sie hier: https://docs.ansible.com/playbooks_vault.html