En función del número de servidores donde tengamos que copiar nuestra clave pública, puede ser una tarea sencilla o convertirse en algo tedioso. Ansible nos proporciona una manera rápida de hacerlo en tantos servidores como necesitemos con el módulo authorized_key.
El único requisito es que el usuario con el que vamos a conectar por SSH exista en la máquina remota y tenga en todas la misma contraseña.
En el directorio de nuestro playbook creamos el fichero ansible.cfg con el siguiente contenido:
[defaults] host_key_checking = false
Esto es necesario para que Ansible no compruebe el fingerprint al conectar por SSH con los servidores remotos.
En el fichero de hosts ponemos los servidores donde vamos a copiar nuestra clave pública:
[docker] worker1 worker2 worker3
En el fichero main.yml indicamos las instrucciones:
- hosts: all tasks: - authorized_key: user: jota state: present key: "{{ lookup('file', '/home/jota/.ssh/id_rsa.pub') }}"
Ahora lanzamos el playbook con:
ansible-playbook -i hosts -u jota -k main.yml
La contraseña SSH sólo debería pedirla una vez, siempre y cuando sea la misma en todos los servidores. Si todo va bien veremos:
Y ya tendremos nuestra clave pública añadida en /home/jota/.ssh/authorized_keys
de nuestros servidores remotos, que para el ejemplo son 3 pero podrían ser más.