Je configure certaines machines avec Ansible et je dois activer les connexions sans mot de passe entre elles. J'ai un maître de base de données et plusieurs esclaves. Pour la réplication initiale, les esclaves doivent ssh dans le maître et obtenir une copie de la base de données. Je ne sais pas quelle est la meilleure façon d'ajouter dynamiquement toutes les clés publiques d'esclaves au authorized_keys
fichier master .
J'ai déjà pensé à fournir les clés publiques des esclaves en tant que variables, puis à les ajouter via le authorized_key
module. Mais alors je dois maintenir la liste des clés. Je cherche une approche où j'ajoute juste un autre hôte le groupe des esclaves et le reste fonctionnera automatiquement.
Des idées?
Mettre à jour:
Jusqu'à présent, j'ai obtenu le pseudo-code suivant:
# 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
La boucle avec le {% %}
seul fonctionne dans les fichiers modèles et pas directement dans les playbooks. Y a-t-il un moyen de le faire dans mon playbook?
la source