Precisamos implantar chaves nos servidores, mas o truque é que as chaves são muitas e nem todas devem ser implantadas em todos os servidores. Agora fazemos isso segue:
em vars roles / 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
na tarefa: 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
no playbook: authorized_keys.yml
---
- hosts: '{{ hosts }}'
vars_files:
- '{{ vars }}'
roles:
- { role: authorized_keys }
Antes de iniciar o playbook, altere roles / authorized_keys / vars / main.yml (presente ou ausente).
Quando começar a apostar, adicione o grupo hosts e hosts:
ansible-playbook -i production --extra-vars "hosts=web:pg:1.2.3.4" authorized_keys.yml
Anteriormente, tudo estava bem, mas agora aumentava o número de chaves e servidores. E agora eu não me lembro de quem é a chave para estar em qual servidor.
Diga-me, por favor, como posso configurar a lista de hosts para cada chave?
Por exemplo, algo assim:
- 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