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

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário