Prawdopodobnie najlepszym sposobem na zrobienie tego - zakładając, że nie możesz użyć rozwiązania NOPASSWD dostarczonego przez scottod, jest użycie rozwiązania Mircea Vutcovici w połączeniu z Vault Ansible .
Na przykład możesz mieć taki poradnik:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Dołączamy tutaj plik o nazwie, secret
który będzie zawierał nasze hasło sudo.
Użyjemy ansible-vault, aby utworzyć zaszyfrowaną wersję tego pliku:
ansible-vault create secret
Poprosi Cię o hasło, a następnie otwórz domyślny edytor, aby edytować plik. Możesz umieścić ansible_sudo_pass
tutaj.
np . secret
:
ansible_sudo_pass: mysudopassword
Zapisz i wyjdź, teraz masz zaszyfrowany secret
plik, który Ansible jest w stanie odszyfrować po uruchomieniu twojego playbooka. Uwaga: możesz edytować plik za pomocą ansible-vault edit secret
(i wprowadzić hasło, którego użyłeś podczas tworzenia pliku)
Ostatnim elementem układanki jest zapewnienie Ansible narzędzia, --vault-password-file
które wykorzysta do odszyfrowania secret
pliku.
Utwórz plik o nazwie vault.txt
i wpisz hasło użyte podczas tworzenia secret
pliku. Hasło powinno być ciągiem przechowywanym jako pojedynczy wiersz w pliku.
Z Ansible Docs:
.. upewnij się, że uprawnienia do pliku są takie, że nikt inny nie może uzyskać dostępu do Twojego klucza i nie dodawać klucza do kontroli źródła
Wreszcie: możesz teraz uruchomić swój podręcznik z czymś takim
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Powyższe zakłada następujący układ katalogów:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Możesz przeczytać więcej o Ansible Vault tutaj: https://docs.ansible.com/playbooks_vault.html