Esta é uma resposta semelhante à do @Konstantin Suvorov, mas um pouco mais refinada, com algumas nuances claramente definidas e realmente testadas e em uso.
Usando o seguinte, você só precisa manter uma única lista de nomes de usuários que deseja acessar. Quaisquer adições ou remoções dessa lista serão refletidas no acesso ao host.
Dica útil opcional: na verdade, escolhemos usar nossos nomes de usuários do GitHub para essa lista, pois assim também podemos adicionar facilmente as chaves SSH. Veja o final para um exemplo.
Primeiro, em nosso group_vars
, definimos nossa lista de desenvolvedores que desejamos ter acesso (observe que isso pode ser definido de várias maneiras, não apenas group_vars
):
developers:
- user1
- user2
- etc...
Em segundo lugar, criamos um grupo para o qual atribuiremos nossos desenvolvedores a:
- name: Create "developers" group
group:
name: developers
state: present
Em terceiro lugar, adicionamos nossos desenvolvedores a esse grupo. OBSERVE que os adicionamos por meio da propriedade groups
e não group
. Isso o adiciona como um grupo secundário e garante que eles apareçam em /etc/group
. Isso é essencial porque, se você adicioná-los como um grupo principal, eles não aparecerão como membros desse grupo em /etc/group
:
- name: Add user accounts
user:
name: "{{ item }}"
shell: /bin/bash
groups: [developers]
state: present
with_items: "{{ developers }}"
Em quarto lugar, obtemos todos os usuários que atualmente pertencem ao grupo de desenvolvedores no host ( Observe que isso depende da suposição principal / secundária mencionada na etapa anterior ):
- name: Determine existing users
shell: 'grep developers /etc/group | cut -d: -f4 | tr "," "\n"'
changed_when: false
register: existing_users
Quinto, determine quais desses usuários devem ser removidos (por exemplo, aqueles que não estão definidos em nossa lista developers
group_vars):
- name: Determine removed users
set_fact:
removed_users: "{{ existing_users.stdout_lines | difference(developers) }}"
Em sexto e último lugar, remova-os:
- name: Delete removed user accounts
user:
name: "{{ item }}"
state: absent
with_items: "{{ removed_users }}"
Passo útil opcional - Se você adicionar usuários pelo nome de usuário do GitHub, você pode facilmente conceder-lhes acesso SSH a partir da chave pública que eles têm disponível no GitHub:
- name: Add public ssh keys of users
authorized_key:
user: "{{ item }}"
exclusive: yes
key: https://github.com/{{ item }}.keys
state: present
with_items: "{{ developers }}"