Мабуть, найкращий спосіб зробити це - якщо припустити, що ви не можете використовувати рішення NOPASSWD, яке надає скоттод, - використовувати рішення Мірчі Вутковичів у поєднанні з ансамблем Ansible .
Наприклад, у вас може бути така книга, як-от така:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Тут ми включаємо файл, secret
який називається, який буде містити наш пароль sudo.
Ми будемо використовувати ansible-treult для створення зашифрованої версії цього файлу:
ansible-vault create secret
Це попросить вас ввести пароль, а потім відкрийте редактор за замовчуванням, щоб відредагувати файл. Ви можете помістити свої ansible_sudo_pass
сюди.
наприклад secret
:
ansible_sudo_pass: mysudopassword
Збережіть і вийдіть, тепер у вас є зашифрований secret
файл, який Ansible може розшифрувати під час запуску вашої книги. Примітка. Ви можете редагувати файл за допомогою ansible-vault edit secret
(і ввести пароль, який ви використовували під час створення файлу)
Заключний фрагмент головоломки - це надати Ansible те, за допомогою --vault-password-file
якого він розшифрує ваш secret
файл.
Створіть файл, який називається, vault.txt
і введіть пароль, який ви використовували під час створення secret
файлу. Пароль повинен бути рядком, який зберігається у файлі як один рядок.
З Довідкових Документів:
.. переконайтеся, що дозволи на файл такі, що ніхто більше не може отримати доступ до вашого ключа та не додавати ваш ключ до керування джерелом
Нарешті: тепер ви можете запустити свою книжку з чимось подібним
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Вищенаведене передбачає наступний макет каталогу:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Більше про Ansible Vault ви можете прочитати тут: https://docs.ansible.com/playbooks_vault.html