Déploiement de multiples permissions autorisées sur plusieurs hôtes

Nous avons besoin de déployer des keys sur les servers, mais l'erreur est que les keys sont nombreuses et qu'elles ne doivent pas toutes être déployées sur tous les servers. Maintenant, nous le faisons suit:

dans plusieurs rôles / authorized_keys / vars / main.yml

ssh_users: - name: bob key: "{{ lookup('file', 'roles/authorized_keys/vars/bob.pub') }}" state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/guru.pub') }}" state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/user.pub') }}" state: absent 

dans la tâche: roles / authorized_keys / tasks / main.yml

 - name: Add ssh key. authorized_key: user={{ item.name }} key="{{ item.key }}" state={{ item.state }} with_items: ssh_users 

dans playbook: authorized_keys.yml

 --- - hosts: '{{ hosts }}' vars_files: - '{{ vars }}' roles: - { role: authorized_keys } 

Avant de commencer les rôles de modification du jeu de lecture / authorized_keys / vars / main.yml (présent ou absent). Lors du lancement de Playbook, ajoutez les hôtes et le groupe d'hôtes:

 ansible-playbook -i production --extra-vars "hosts=web:pg:1.2.3.4" authorized_keys.yml 

Auparavant, tout était bon, mais maintenant augmenté le nombre de keys et de servers. Et maintenant, je ne me souviens pas de qui doit être sur quel server.

Dites-moi s'il vous plaît comment je peux configurer la list des hôtes pour chaque key? Par exemple, quelque chose comme ceci:

 - name: bob key: "{{ lookup('file', 'roles/authorized_keys/vars/bob.pub') }}" servers: web,database,12.12.12.12 state: present - name: root key: "{{ lookup('file', 'roles/authorized_keys/vars/guru.pub') }}" servers: api,pg,30.30.30.30 state: present 

J'utiliserais une variable hôte "ssh_users", qui indique les users qui ont besoin de leurs keys d'hôte ajoutées.

 - ssh_users: - bob - root - alice 

Ensuite, vous avez un file variable séparé qui définit le nom, la key et l'état pour chaque user SSH. Importez ce file variable, puis appelez votre tâche originale à peu près tel quel.