Automatizando ambientes usando Puppet – Parte 01

Como vimos o artigo do Emilson sobre AS QUEBRAS DE PARADIGMA DA CLOUD COMPUTING, estamos vivendo um novo paradigma, mas cada vez mais as necessidades de ambientes sempre diferentes com diferentes configurações expõe muitas vezes a dificuldade da infraestrutura em liberar novas máquinas para atender as demandas.

Com esse novo cenário, torna-se cada vez mais necessário automatizar as tarefas que a equipe de infraestrutura realizava manualmente, pois a mesma pode ser pequena e não conseguir dar vazão para as demandas que aparecem.

Se pensarmos bem, até as ferramentas de Cloud necessitam de uma ferramenta que realiza o processo de baixar pacote, atualizar, configurar, etc…

Neste novo cenário temos duas ferramentas que saíram na frente o Puppet (mantido pela PuppetLabs) e o Chef (mantido pela Chef).

Vamos aqui abordar a automação de ambientes utilizando a ferramenta Puppet em sua versão Free.

Legal, até aqui tudo bem, mas afinal:

O que é o puppet?

O Puppet é uma ferramenta para gerenciamento de configuração. Ele é utilizado por diversas empresas, que precisam gerenciar milhares de máquinas físicas e virtuais ao redor do mundo. Podemos destacar dentre os usuários do Puppet a Cisco, at&t, PayPal e muitas outras organizações.

O Puppet foi criado em 2005 como uma ferramenta de gerenciamento de configuração open source e está disponível para download gratuito sob a licença Apache 2.0. Existe também o Puppet Enterprise que trata-se do produto comercializado pela Puppet Labs.

Ele é composto por uma linguagem declarativa que nos permite expressar as configurações que nossos servidores devem ter, fazendo isto através de uma sintaxe simples e prática.

Ele nos oferece um cliente (agente) e um servidor (master) para distribuir estas configurações em nosso parque.

No puppet essencialmente tudo é MODELADO e tratado como se fossem DADOS.

O estado atual do node (servidor), a configuração desejada, as ações tomadas durante as configurações são representados como ‘dados’ e inseridos em um catálogo.

Ele pode funcionar de duas formas, você pode criar configurações e aplicar localmente usando o recurso APPLY, ou você pode trabalhar em modo AGENTE/MESTRE (cliente/servidor).

Como o puppet funciona?

Uma vez que você instala o puppet, cada nó (servidor físico, dispositivo ou máquina virtual) em sua infraestrutura tem um agente instalado nele. Você também pode ter um servidor designado como o mestre. A execução do puppet seguem os passos abaixo:

  • Fact collection – Em cada nó o agente do puppet envia informações (ou facts) sobre configuração do nó — detalhando o seu hardware, sistema operacional, as versões dos pacotes e demais informações — para o puppet master;
  • Catalog compilation – O puppet master usa o Fact Collection fornecidos pelo agente para compilar as informações sobre como cada nó deve ser configurado — chamando o catálogo (lista de pacotes ou configurações que são controladas pelo puppet) — e o envia para o agente;
  • Enforcement – O agente realiza as alterações necessárias para que o nó esteja em conformidade com o catalogo.

Observação: Se você optar por executar no modo no-op (simulação), o agente simplesmente simulará as alterações;

  • Report – Cada agente envia um relatório para o puppet master, indicando todas as alterações que foram efetivadas para a deixar o no em conformidade com seu catálogo;
  • Report sharing – A API aberta do puppet pode enviar dados para outras ferramentas, permitindo a você poder compartilhar informações de infraestrutura com outras equipes.

Principais vantagens:

  • Redução de custos de manutenção de computadores – equipe pequena gerenciando um grande parque;
  • Diminuição da sobrecarga em sua equipe – menos horas extras no trabalho, mais horas dos seus admins com suas famílias. Isto significa menor estresse para toda equipe e maior produtividade e criatividade;
  • Diminuição do downtime de seu ambiente – padronização significa maior controle e eficiência;
  • Maior facilidade para executar atualização de sistemas e serviços de forma controlada;
  • Maior facilidade e flexibilidade para distribuir configurações para todo o parque de forma controlada;
  • Maior facilidade e flexibilidade para implantar novas soluções com menor trauma e consequentemente menor custo, fazendo isto em todo o parque de uma vez – imagine, por exemplo, implantar um novo agente de monitoramento em centenas de servidores;
  • Retorno de uma configuração ou de arquivos modificados de forma fácil e simplificada através do filebucket;
  • Excelentes ferramentas em linha de comando que nos permitem usá-lo de forma fácil;
  • Acelerar a criação de novos servidores;
  • Acelerar a criação de novos serviços;

Fiquem atentos ao próximo post que sairá no dia 05/03/2015, onde apresentarei de uma forma prática e simples o uso dessa ferramenta.

Links Externos:

[1] http://puppetlabs.com/

[2] http://docs.puppetlabs.com/

[3] http://planeta.puppet-br.org/

[4] http://gutocarvalho.net/octopress/

Por CESAR FERNANDO STURION

Postado em: 19 de fevereiro de 2015

Confira outros artigos do nosso blog

Do Monolítico aos agregados de Kubernetes

16 de julho de 2019

James de Souza

Aplicações mobile multiplataforma com React Native e Expo

25 de março de 2019

Anderson Silva

Indicações de leitura para começar 2019 no “mundo Devops”

15 de março de 2019

André Jesus

Como ter previsibilidade no método Kanban

12 de março de 2019

Ricardo Augusto Shikota

Deixe seu comentário