Ansible implanta várias authorized_keys em vários hosts

1

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
    
por artful 11.07.2016 / 20:44

1 resposta

0

Eu usaria uma variável de host "ssh_users", que informa os usuários que precisam de suas chaves de host adicionadas.

- ssh_users:
   - bob
   - root
   - alice

Em seguida, você tem um arquivo de variáveis separado que define o nome, a chave e o estado de cada usuário SSH. Importe esse arquivo variável e chame sua tarefa original praticamente como está.

    
por 19.07.2016 / 20:28