Deseamos compartir contigo la mejor solución que descubrimos en internet. Nosotros queremos que te sirva de ayuda y si puedes aportar algo que nos pueda ayudar a mejorar siéntete libre de hacerlo..
Solución:
Debe crear algunos archivos de variables almacenados y luego incluirlos en sus libros de jugadas o en la línea de comando.
Si cambia su archivo de inventario para usar una variable para el pase convertido, esta variable se puede almacenar:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass=' sanfrancisco_become_pass '
san-diego ansible_host=san-diego ansible_ssh_user=user ansible_become_pass=' sandiego_become_pass '
Entonces usa ansible-vault create vaulted_vars.yml
para crear un archivo abovedado con el siguiente contenido:
sanfrancisco_become_pass:
sandiego_become_pass :
Luego incluya el archivo abovedado como variables adicionales como esta:
ansible-playbook -i ~/.ansible/inventory/hosts playbook.yml --ask-vault-pass [email protected]~/.ansible/inventory/vault_vars
O incluya el archivo vars en su libro de jugadas con una tarea include_vars:
- name : include vaulted variables
include_vars: ~/.ansible/inventory/vault_vars
Después de configurar un inventario con su propia configuración relevante. Estos ajustes suponen que ya ha configurado un rsa-key empareje para acceder a su servidor. Debería poder ingresar a su servidor con ssh [email protected]
[local]
localhost ansible_connection=local
[remote]
155.42.88.199 ansible_connection=ssh ansible_user=remoteuser ansible_become_user=root ansible_become=yes ansible_ssh_private_key_file=
Debe almacenar su contraseña de root en un archivo (llamé al mío ‘my_vault.yml’). Puedes hacer esto con el siguiente comando:
~/.ansible$ ansible-vault create my_vault.yml
Simplemente almacene la contraseña de su servidor remoto de la siguiente manera (no incluya las etiquetas ‘<>‘)
su_password:
La contraseña ahora estará encriptada por bóveda y la única forma de ver esto es ingresar el siguiente comando.
~/.ansible$ ansible-vault edit my_vault.yml
Ahora necesitamos incluir nuestro archivo ‘my_vault.yml’ en nuestro libro de jugadas. Podemos hacer esto usando vars-files
para obtener el valor de su-password
. Ahora podemos crear una var titulada ansible_become_pass
que será pasado el valor de nuestro my_vault.yml
archivo que permitirá a nuestro usuario remoto hacer su una vez en el servidor.
---
- name: My Awesome Playbook
hosts: remote
become: yes
vars_files:
- ~/.ansible/my_vault.yml
vars:
ansible_become_pass: ' su_password '
roles:
- some_awesome_role
Como estamos usando la bóveda cada vez que queremos ejecutar este libro de jugadas, necesitamos usar el siguiente comando.
ansible-playbook myawesome_playbook.yml --ask-vault-pass
La mejor manera de resolver este problema es usar host_vars. La configuración más fácil es simplemente poner el ansible_become_pass
en archivos cifrados de Vault en los directorios host_vars correspondientes como este:
myplaybook.yml
host_vars/onehost.com/crypted
host_vars/otherhost.com/crypted
En el crypted
archivos que coloca la asignación de la ansible_become_pass
variable:
ansible_become_pass: SuperSecre3t
Crea el archivo con ansible-vault create
edítalo con ansible-vault edit
.
Siguiendo los consejos de los documentos de Ansible, debe crear un archivo adicional por host que asigne el ansible_become_passwd
de la variable cifrada que tiene un nombre diferente. De esa manera es posible buscar el ansible_become_passwd
en los archivos del proyecto.
myplaybook.yml
host_vars/onehost.com/plain
host_vars/onehost.com/crypted
host_vars/otherhost.com/plain
host_vars/otherhost.com/crypted
donde un plain
archivo contiene algo como esto:
ansible_become_pass: " vaulted_become_pass "
y el crypted
archivo establece el vaulted_become_pass
como se muestra arriba.
Todos crypted
los archivos deben estar encriptados con el mismo key y ansible-playbook
hay que llamar con --ask-vault-pass
.
valoraciones y comentarios
Recuerda mostrar este tutorial si te ayudó.