Saltar al contenido

Ansible: ¿cómo ejecutar un juego con hosts con diferentes contraseñas?

Solución:

Normalmente, querrá pasar la contraseña de sudo en la línea de comando después de la solicitud de contraseña de Ansible después de usar el --ask-sudo-password o su alias corto -K cuando se ejecuta con un usuario que no tiene sudo sin contraseña. Esto tiene la ventaja de que luego no se registra en su base de código Ansible en ningún lugar y luego no termina en el control de fuente.

Sin embargo, este es un mensaje único y se aplicará a todos los hosts, por lo que realmente no se ajusta a su caso de uso.

los ansibe_sudo_pass En su lugar, la variable se puede usar para proporcionar la contraseña sudo para el usuario de cualquier host específico. Esta deberían solo se debe usar cuando se necesita una contraseña de sudo, por lo que si proporciona esta variable a un host con sudo sin contraseña, debe ignorarse.

Como su combinación de usuario / contraseña parece estar dividida completamente por grupo en lugar de por todos y cada uno de los hosts, entonces tiene sentido lógico poner las credenciales en vars de grupo.

Como lo señaló nikobelia, es posible que desee considerar cifrar estos datos confidenciales utilizando algo como Ansible’s Vault, credstash u otra cosa.

Bien, tienes dos preguntas aquí:

¿Cómo conectarse a diferentes hosts con diferentes claves SSH?

Cree un archivo group_vars diferente para cada conjunto de hosts y establezca las credenciales allí.

# group_vars/legacy
---
ansible_ssh_user: myuser
ansible_ssh_key: ~/.ssh/legacy_key.pem

Entonces Ansible aplicará una clave diferente según el grupo en el que se encuentre cada host, así de simple.

¿Cómo usar diferentes credenciales por host para la escalada de privilegios?

Una vez más, pégalos en diferentes archivos group_vars para cada conjunto de hosts:

# group_vars/legacy
---
ansible_become_user: root
ansible_become_pass: "{{ vaulted_legacy_password }}"

Entonces puedes usar la palabra clave become: yes para escalar privilegios, y Ansible aplicará las credenciales correctas para cada grupo. Si ya eres root, el become la palabra clave simplemente no tendrá ningún efecto.

Y luego … mira eso {{ vaulted_legacy_password }} variable allá arriba?

Mejores prácticas y única cosa sensata que hacer Si alguna vez comparte este código, debe crear un archivo de Ansible Vault y mantener sus contraseñas allí. La contraseña de Ansible Vault protege sus variables sensibles y le permite descifrarlas en el momento de la ejecución.

Puedes hacer tu todo group_vars/legacy archivo guardado (si las credenciales son la única información que contiene), o cree una carpeta group_vars / legacy, con un archivo de texto plano y un archivo encriptado. Todos los archivos de un subdirectorio de group_vars se obtendrán y se aplicarán al grupo con el nombre de la carpeta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *