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 !!!'

...
Figura 01. ANTES
Figura 02. DURANTE
Figura 03. DURANTE
Figura 04. DEPOIS

CONTINUA …

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.