Configurar credenciales SSH por entorno

10

Estoy tratando de descubrir cómo configurar las credenciales SSH por separado para un entorno de producción y preparación con Ansible. Entiendo que puede configurar las direcciones IP y los nombres de host del servidor por separado utilizando diferentes archivos de inventario pasando el argumento -io --inventory-fileal ansible-playbookcomando. Sin embargo, no veo esa opción para ansible.cfg. Actualmente, las credenciales viven /etc/ansible/ansible.cfgcomo:

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

¿Cómo puedo configurar múltiples credenciales SSH, una para producción y otra para puesta en escena?

usuario369450
fuente
¿Qué cambia entre sus entornos? ¿Solo el archivo de clave o también el user_user / sudo_user remoto?
tedder42
@ tedder42 La clave privada SSH y remote_user.
user369450
¿Por qué no cubre eso en su .ssh / config?
udondan
@udondan ¿Hay alguna forma de especificar una sola clave una vez para múltiples hosts en .ssh/config?
user369450
Si tu puedes hacerlo. Puede crear múltiples grupos con nombres de host o patrones explícitos. Permítanme publicar un ejemplo en una respuesta.
udondan

Respuestas:

16

Parece que mi primera respuesta no fue del todo correcta. Si bien, por supuesto, es posible resolverlo .ssh/configcomo se describe a continuación, también parece posible con los Parámetros de inventario de comportamiento de Ansibles .

Debe (según los documentos) poder definir el archivo de claves y el usuario en su inventario, ya sea por host o por grupo.

Definición por grupo:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

Definición por host:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

Pero puede definir varios grupos de hosts que ya están en su .ssh/configy cada grupo puede tener sus configuraciones separadas con respecto a la clave y el usuario.

Aquí hay un ejemplo rápido

#Example with a wildcard
Host *.foo.com
  user ubuntu
  IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
  user other_user
  IdentityFile /home/caleb/.ssh/production_key.pem

También podría definir un valor predeterminado y anularlo más tarde con configuraciones más detalladas.

Host *
  user defaut_username

Host somehost
  user special_username
udondan
fuente