Estoy configurando algunas máquinas con Ansible y necesito habilitar conexiones sin contraseña entre ellas. Tengo un maestro de base de datos y varios esclavos. Para la replicación inicial, los esclavos necesitan ingresar al maestro y obtener una copia de la base de datos. No estoy seguro de cuál es la mejor manera de agregar dinámicamente todas las claves públicas esclavas al authorized_keys
archivo maestro .
Ya pensé en proporcionar las claves públicas esclavas como variables y luego agregarlas a través del authorized_key
módulo. Pero luego debo mantener la lista de claves. Estoy buscando un enfoque en el que simplemente agregue otro host al grupo de esclavos y el resto funcionará automáticamente.
¿Algunas ideas?
Actualizar:
Hasta ahora obtuve el siguiente pseudocódigo:
# collect public keys from slave machines
- name: collect slave keys
{% for host in groups['databases_slave'] %}
shell: /bin/cat /var/lib/postgresql/.ssh/id_rsa.pub
register: slave_keys #how to add to an array here?
{% endfor %}
# Tasks for PostgreSQL master
- name: add slave public key
sudo: yes
authorized_key: user=postgres state=present key={{ item }}
with_items: slave_keys
El bucle con el {% %}
solo funciona en archivos de plantilla y no en libros de jugadas directamente. ¿Alguna forma de hacer esto en mi libro de jugadas?
fuente