Probablement la meilleure façon de le faire - en supposant que vous ne pouvez pas utiliser la solution NOPASSWD fournie par scottod est d'utiliser la solution de Mircea Vutcovici en combinaison avec Ansible vault .
Par exemple, vous pourriez avoir un playbook quelque chose comme ceci:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Ici, nous incluons un fichier appelé secret
qui contiendra notre mot de passe sudo.
Nous utiliserons ansible-vault pour créer une version chiffrée de ce fichier:
ansible-vault create secret
Cela vous demandera un mot de passe, puis ouvrez votre éditeur par défaut pour modifier le fichier. Vous pouvez mettre votre ansible_sudo_pass
ici.
par exemple secret
::
ansible_sudo_pass: mysudopassword
Enregistrez et quittez, vous avez maintenant un secret
fichier crypté qu'Ansible est capable de décrypter lorsque vous exécutez votre playbook. Remarque: vous pouvez modifier le fichier avec ansible-vault edit secret
(et saisir le mot de passe que vous avez utilisé lors de la création du fichier)
La dernière pièce du puzzle est de fournir à Ansible un fichier --vault-password-file
qu'il utilisera pour décrypter votre secret
fichier.
Créez un fichier appelé vault.txt
et entrez le mot de passe que vous avez utilisé lors de la création de votre secret
fichier. Le mot de passe doit être une chaîne stockée sur une seule ligne dans le fichier.
Depuis les documents Ansible:
.. assurez-vous que les autorisations sur le fichier sont telles que personne d'autre ne peut accéder à votre clé et n'ajoutez pas votre clé au contrôle de code source
Enfin: vous pouvez maintenant exécuter votre playbook avec quelque chose comme
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Ce qui précède suppose la disposition de répertoire suivante:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Vous pouvez en savoir plus sur Ansible Vault ici: https://docs.ansible.com/playbooks_vault.html