ANSIBLE SERIES: YML … shutting down an employee >> removing linux credentials
Pessoas vem e vão… Entram e saem… Mudam constantemente… Se casam e tem filhos… Ou simplesmente se afastam e continuam com suas respectivas vidas. Não é uma crítica e sim o curso natural das coisas, e está tudo bem quanto a isso! No âmbito de uma empresa não poderia ser diferente… Funcionários são promovidos, transferidos geograficamente, almejam novos horizontes e desafios e portanto saem, recebem uma proposta melhor e vão embora… Ou talvez não se adaptaram tão bem e sendo assim são desligados (ou demitidos, em linguagem popular)
Para três desses cinco cenários hipotéticos, a melhor saída é remover/excluir permanentemente as credencias dos envolvidos. Seguro, rápido e indolor. Nada mais, simples assim! Então vamos direto ao nosso playbook 🙃
Se por acaso ainda não ouviu falar do AWX, ou não sabe como utilizá-lo, nada temam! Dois posts ficaram elencados aqui para consulta e instalação:
https://automatesmachines.org/2020/12/11/ansible-series-hands-on-02-modo-gui-web-console-awx-tower/
https://automatesmachines.org/2021/11/02/ansible-series-yml-ask-before-run-awx-e-o-recurso-survey/
Desde os últimos YAML apresentados nessa série, gosto e acabei optando pela didática de “quebrá-lo” em partes e percorrer linha por linha, explicando o que cada uma faz ou pelo menos de que se trata. Logicamente que haverão trechos de código comuns a esse e tantos outros futuros, sendo apenas resgatados por mim e expostos novamente. Portanto, nem sempre, ou necessariamente os mesmos terão uma explanação repetida. Ganho de tempo e otimização do espaço!
Bem, agora sim, e sem mais delongas … Começando os trabalhos:
---
Um arquivo .yaml pode conter várias, o que chamamos de, seções de documentos. Para cada novo documento, dentro da mesma seção, é preciso sinalizar tanto o início quanto o fim deste. Convencionalmente, o início será caracterizado por três hífens (traços) seguidos, não havendo nenhum espaço entre eles. Em contrapartida, o final é sempre caracterizado por três pontos igualmente seguidos e sem espaço entre si. Por questões práticas, dificilmente veremos um playbook .yml com mais de uma seção de documento. Tudo se resume entre um único — e …
- hosts: all
O ansible é capaz de executar tarefas de N formas: (a) localmente; (b) unicamente; (c) amplamente; (d) especificamente. Na prática, o equivalente seria: (a) localhost; (b) host; (c) all; (d) grupo.
become: yes
Informe aqui se pretende usar algum método de escalonamento pré-existente na máquina alvo. Trocando em miúdos, estamos falando dos privilégios, ex: su, sudo, runas, e afins. O padrão become: yes implicitamente quer dizer que o usuário utilizado será root.
tasks:
Conjunto de tarefas a serem executadas logo abaixo desta linha e sinalizadas individualmente por um hífen (-) + espaço ( ) + nome da tarefa (string).
- name: USERDEL <> Removendo o(s) gerente(s) informado(s) e que foi(ram) desligado(s) ...
Nome dado a tarefa específica a seguir. Parênteses: como eu (Victor) gosto de padronizar as coisas, sempre nomeio assim: serviço/comando/aplicação < > Fazendo_determinada_ação …
ansible.builtin.user:
Módulo nativo utilizado para cumprir a tarefa.
name: "{{ item }}"
Parâmetro name do módulo user para informar o login de usuário.
state: absent
Parâmetro que remove (absent) ou adiciona (present) o login anterior.
loop:
Laço simples para varrer cada nome informado via recurso survey do AWX (prompt questions)
- "{{ user1 }}"
Variável/argumento de número um.
- "{{ user2 }}"
Variável/argumento de número dois.
- debug:
msg: 'INFO <> a pasta /HOME/FUNCIONARIO nao foi apagada ... Fique tranquilo!!!'
Mensagem para deixar bem claro que a pasta HOME não foi deletada e portanto está preservada. Para fins de auditoria, resgate de informações, etc.
https://raw.githubusercontent.com/vicrlda/awx-tower/main/playbooks/delete-linux-user.yml
---
- hosts: all
become: yes
tasks:
- name: Removendo funcionario(s) informado(s) e que foi(ram) desligado(s) ...
ansible.builtin.user:
name: "{{ item }}"
state: absent
loop:
- "{{ user1 }}"
- "{{ user2 }}"
- debug:
msg: 'INFO <> a pasta /HOME/FUNCIONARIO nao foi apagada ... Fique tranquilo !!!'
...



