Konfiguruję niektóre maszyny z Ansible i muszę włączyć między nimi połączenia bez hasła. Mam administratora bazy danych i kilku niewolników. W celu wstępnej replikacji urządzenia podrzędne muszą ssh połączyć się z serwerem głównym i uzyskać kopię bazy danych. Nie jestem pewien, jaki jest najlepszy sposób na dynamiczne dodawanie wszystkich kluczy publicznych slave do authorized_keys
pliku masters .
Już myślałem o podaniu niewolnikom kluczy publicznych jako zmiennych, a następnie dodaniu ich za pośrednictwem authorized_key
modułu. Ale potem muszę zachować listę kluczy. Szukam podejścia, w którym po prostu dodam innego hosta do grupy niewolników, a reszta będzie działać automatycznie.
Jakieś pomysły?
Aktualizacja:
Do tej pory otrzymałem następujący pseudo kod:
# 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
Pętla z {% %}
jedynymi działa w plikach szablonów, a nie bezpośrednio w playbookach. Jakiś sposób to zrobić w moim poradniku?