Presta atención porque en este post encontrarás el arreglo que buscas.
Solución:
los documentos fuertemente recomienda no establecer la contraseña de sudo en texto sin formato y, en su lugar, usar --ask-sudo-pass
en la línea de comando cuando se ejecuta ansible-playbook
Actualización de 2016:
Ansible 2.0 (no 100% cuando) marcado --ask-sudo-pass
como obsoleto. Los documentos ahora recomiendan usar --ask-become-pass
en cambio, al mismo tiempo que intercambia el uso de sudo
a lo largo de sus libros de jugadas con become
.
Puede pasar variable en la línea de comando a través de --extra-vars "name=value"
. La variable de contraseña de Sudo es ansible_sudo_pass
. Entonces su comando se vería así:
ansible-playbook playbook.yml -i inventory.ini --user=username
--extra-vars "ansible_sudo_pass=yourPassword"
Actualización 2017: Ansible 2.2.1.0 ahora usa var ansible_become_pass
. Cualquiera parece funcionar.
Probablemente la mejor manera de hacer esto, suponiendo que no pueda usar la solución NOPASSWD proporcionada por scottod, es usar la solución de Mircea Vutcovici en combinación con la bóveda de Ansible.
Por ejemplo, podría tener un libro de jugadas como este:
- hosts: all
vars_files:
- secret
tasks:
- name: Do something as sudo
service: name=nginx state=restarted
sudo: yes
Aquí estamos incluyendo un archivo llamado secret
que contendrá nuestra contraseña sudo.
Usaremos ansible-vault para crear una versión cifrada de este archivo:
ansible-vault create secret
Esto le pedirá una contraseña, luego abra su editor predeterminado para editar el archivo. Puedes poner tu ansible_sudo_pass
aquí
p.ej: secret
:
ansible_sudo_pass: mysudopassword
Guarde y salga, ahora tiene un cifrado secret
archivo que Ansible puede descifrar cuando ejecuta su libro de jugadas. Nota: puede editar el archivo con ansible-vault edit secret
(e ingrese la contraseña que utilizó al crear el archivo)
La pieza final del rompecabezas es proporcionar a Ansible una --vault-password-file
que utilizará para descifrar su secret
expediente.
Crea un archivo llamado vault.txt
y en eso pon la contraseña que usaste al crear tu secret
expediente. La contraseña debe ser un string almacenado como una sola línea en el archivo.
De los documentos de Ansible:
.. asegúrese de que los permisos en el archivo sean tales que nadie más pueda acceder a su key y no agregues tu key al control de fuente
Finalmente: ahora puede ejecutar su libro de jugadas con algo como
ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt
Lo anterior supone el siguiente diseño de directorio:
.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt
Puede leer más sobre Ansible Vault aquí: https://docs.ansible.com/playbooks_vault.html
Si te animas, tienes el poder dejar una crónica acerca de qué le añadirías a esta crónica.