As crônicas de Gerson – A lenda

Episódio 01: Como o Puppet – Ferramenta para gerenciamento de configuração – salvou uma empresa da calamidade e um estagiário de um colapso

Eu me lembro de uma vez em que a empresa em que trabalhei precisava de um cara que fosse muito bom em infraestrutura para dar conta dos servidores. Daí eles me contratam Gerson, o estagiário. Dizia ele “que manjava dos paranauê do linux”. Esse cara virou lenda na empresa, mas isso é uma outra história.

puppet_image13
(esse não é o Gerson, mas também manja dos paranauê)

A empresa estava crescendo rápido. Tinha por volta de 50 servidores virtualizados, em sua maioria Linux, mas tinha uns Windows perdidos também. Sempre tem…

Toda vez que precisava atualizar os servidores lá ia o Gerson, de máquina em máquina, igual um beija-flor, de flor em flor.

Entrava na primeira máquina, atualizava e testava.
Entrava na segunda máquina, atualizava e testava.
Entrava na terceira máquina, atualizava e não testava.
Entrava na quarta máquina, testava sem atualizar.
A quinta máquina ele entrava pra sair.
Na sexta máquina já tinha perdido as contas.
Na sétima estava pensando na terceira.
Na terceira (de novo) fazia um acesso remoto para a décima.

puppet_image17
Assim era o Gerson, A lenda.

Eu me lembro de um dia, já no final do expediente, onde ele ficou o dia todo atualizando os servidores, soltar a frase: “Se quer algo bem feito, faça você mesm..” Não deu nem tempo do coitado terminar a frase. Coitado…

O Gerente entrou na sala dos meninos da infra e falou: “Gersão, encontramos um bug, vai ter que atualizar tudo de novo”.

Eu lembrei da frase “Não há nada tão inútil quanto fazer com eficiência algo que não deveria ser feito”Os outros meninos da infra ficaram se olhando compadecendo-se do Gerson.

puppet_image12
(os meninos da infra se solidarizando com Gerson)

 

A cara do Gerson aquele dia… deu dó.

puppet_image3
(Gersão atualizando todos o servidores novamente)

Se o cachorro dele tivesse morrido ele não teria feito uma cara tão triste. Logo aquele dia em que ele tinha feito tudo certinho, colocado em uma planilha todos os servidores que entrou, o que instalou em cada servidor, se o teste tinha passado… Acontece…

Gerson aquela noite não ficou em paz, ele precisava fazer alguma coisa drástica, alguma coisa que mostrasse para a empresa que não podia fazer aquilo com ele. Aquilo não ia ficar assim:

puppet_image14
(A lenda não deixando barato..)

As 3 da manhã Gersão dá aquela paradinha marota para conferir se alguém deu reply no tweet dele. Eis que ele vê:

puppet_image11

seguido do link: https://puppet.com/product/how-puppet-works 

Para o espanto de Gerson, alguém tinha respondido.
Na verdade ele não tinha certeza se estavam tentando ajudá-lo ou simplesmente sacanear com a cara dele, mas foi procurar mais a respeito desse tal de puppet:

“Puppet é uma ferramenta e plataforma Open Source para automação e gerenciamento de configuração de servidores e infraestrutura.”

Gerson não entendeu muito bem o que significava gerenciamento de configuração (na verdade ele não sabia mesmo) e foi procurar entender o que é isso primeiro para depois voltar pro Puppet:

“Grande parte de problemas de disponibilidade em serviços de missão crítica na área de TI são causados por falhas humanas e gestão de processos. Parte significativa destes problemas poderia ser evitada se fosse feita uma melhor coordenação na gerência de mudanças e de configuração.” *

“Tem potencial isso, deixa eu continuar” – pensou A lenda:

“Muitas organizações de TI utilizam processos manuais, scripts customizados, imagens de sistema e outras técnicas rudimentares para execução de tarefas repetitivas. Em grandes ambientes ou nos que possuem diversas equipes, esses métodos rudimentares não são escaláveis, são difíceis de manter e podem causar diversos problemas, como: divergências entre a configuração de fato e a documentação, não cumprimento de normas e perda de produtividade e agilidade.” *

puppet_image5
(that’s my life..)

“Diante disso, gerenciamento de configuração é o processo de absorção controlada de mudanças, padronizando a aplicação de configurações em infraestrutura de TI de uma forma automatizada e ágil, sendo fundamental para o sucesso de diversos processos, como provisionamento de novos sistemas, aplicação de patches e cumprimento de normas de segurança.” *

puppet_image20
(give-me more…)

Depois que Gerson entendeu o que é Gerenciamento de Configuração (precisou ler umas 3 vezes, mas entendeu), voltou para o assunto principal:

O Puppet é geralmente usado como cliente/servidor.
O ciclo de operação nesses casos é o seguinte:

  1. Os clientes (chamados de nó, ou node) possuem um agente instalado que permanece em execução e se conecta a um servidor central (chamado tipicamente de master) periodicamente;
  2. O node solicita a sua configuração (chamada de catálogo);
  3. O agente aplica o catálogo no node. (instala, atualiza ou remove os programas);
  4. O resultado da aplicação do catálogo é reportado ao master, havendo divergências ou não.

Gerson ficou incrédulo, quer dizer que é só isso:

  • Instalar o puppet-master em um servidor.
  • Instalar o puppet-agent nas máquinas clientes.

Daí pra frente é com o Puppet:

  • Ele verifica se tem algo novo pra instalar.
  • Ele verifica se algum arquivo foi modificado por fora e o substitui.
  • Basta colocar um novo arquivo (catálogo) no Puppet Master e todo o resto acontece automagicamente sozinho.
puppet_image16
(obs: o puppet é de graça.)

Gerson ainda não estava convencido. Duvidava que alguma empresa grande usasse isso. E foi pesquisar:

puppet_image4
(Algumas empresas que utilizam o puppet)

“É.. se é bom pra NASA é bom pra mim também”.

Aproveitou que já estava ferrado mesmo e decidiu dar uma chance.

  1. Subiu uma VM Ubuntu rapidinho.
  2. Instalou o puppet-server rapidinho:

puppet_image2

  1. Iniciou o puppet-server rapidinho:

puppet_image10

  1. Em uma outra VM instalou o puppet-agent rapidinho:

puppet_image8

  1. Iniciou o puppet-agent rapidinho também:

puppet_image7

  1. Voltou pro puppet-server copiou da internet rapidinho um código para instalar o apache e o mysql:

puppet_image19

  1. Voltou pra VM do puppet-agent e executou o comando rapidinho para instalar as atualizações:

puppet_image6

Gerson não acreditou que era só isso.
Basta ele instalar o puppet-agent nos outros 49 servidores e eles vão se atualizar sozinhos a cada 30 minutos (tempo padrão de verificação dos nós).
De repente Gerson teve uma epifania:
“Quer dizer que eu não preciso de interface gráfica para gerenciar servidores. Consigo fazer tudo via linha de comando…”

puppet_image1

Naquela mesma madrugada Gerson instalou e configurou o puppet-agent nas outras máquinas. Não pediu permissão pra ninguém. Foi fazendo, afinal, era um estagiário.

No início da manhã, Gerson já se sentia assim:

puppet_image9

Mostrou a solução para seu gerente que não entendeu muita coisa mas fez cara que entendeu tudo. Como recompensa ganhou um “parabéns” bem murcho e três palmas.

puppet_image18
(Parabéns, clap, clap, clap…)

Gerson foi pra casa tranquilo aquela manhã, pois talvez ele não fosse o profissional que a empresa merece, mas é a que ela precisa.

Esse dia só não foi mais engraçado do que o dia em que ele ganhou o apelido de A lenda.
Mas isso é uma outra história.
つづく

Epílogo:
Na história de hoje aprendemos como era a vida antes do gerenciamento de configuração, o que é o gerenciamento de configuração, o que é o puppet, uma versão resumida de como instala e usa o mesmo.

Para saber mais sobre como o puppet funciona recomendo assistir o vídeo:
How Puppet works

* Os textos precedidos de asteriscos sobre o que é gerenciamento de configuração e o que é o puppet foram retirados da seguinte apostila:
https://github.com/puppet-br/apostila-puppet/releases

puppet_image15