Automatizando ambientes usando Puppet – Parte 02

Como vimos no primeiro post Automatizando ambientes usando Puppet – Parte 01, conhecemos o Puppet, como ele funciona e a sua importância.

Neste post vamos, instalar o agente em uma máquina e utilizar um exemplo simples e prático em que vamos entender um pouco mais de como a ferramente auxilia o nosso dia a dia.

A proposta inicial é mostrar o seu funcionamento no modo standalone, isto é, aplicando o exemplo na própria máquina. Mas lembrando que o mesmo pode trabalhar com servidor Mestre onde esse é responsável em manter os nodes em sincronia.

Instalando o puppet (agente):

Habilitando o repositório da Puppet Labs

Antes de realizar a instalação precisamos habilitar o repositório da Puppet Labs. O Puppet pode ser instalado nas mais diversas plataformas como as plataformas da “Família” Fedora (Red Hat, Centos, Oracle Enterprise Linux, etc) ou da “Família” Debian (Ubuntu, Debian, etc) ou na plataforma Windows.

Nota 01: Neste post vamos usar a versão do Oracle Enterprise Linux 6.5.

Legal, mas como habilitamos o repositório então?

Para as versões da plataforma Fedora execute o comando abaixo que corresponde com a sua versão de Sistema Operacional:

Versão 7.XX

$ rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

Versão 6.XX

$ rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm

Versão 5.XX

$ rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-5.noarch.rpm

Nota 02: Em nosso exemplo vamos usar o comando compatível com a versão 6.XX

Depois de habilitar os repositórios basta executar:

$ yum install puppet
Screen_Shot_02-28-15_at_05.58 PM
Figura 01 – Mostra o comando que habilita o repositório da PuppetLabs
Screen_Shot_02-28-15_at_06.01 PM 001
Figura 02 – Mostra o comando de instalação do agente do puppet

Mas caso você queira realizar um teste com a plataforma Debian, segue abaixo algumas considerações sobre a instalação nesse ambiente:

Oficialmente são suportadas as versões abaixo:

  • Debian 6 “Squeeze”
  • Debian 7 “Wheezy”
  • Ubuntu 14.04 LTS “Trusty Tahr”
  • Ubuntu 12.04 LTS “Precise Pangolin”
  • Ubuntu 10.04 LTS “Lucid Lynx”

Para habilitar o repositório, faça:

  1. Realize o download da package “puppetlabs-release” compatível com a versão do sistema operacional.
    Você poderá ver a lista completa acessando a url https://apt.puppetlabs.com/. Eles estão todos por default com os nomes puppetlabs-release-<CODE NAME>.deb;
    Arquitetura é manipulada automaticamente;
    Há apenas um pacote por versão do sistema operacional;
  2. Instale a package executando o comando dpkg -i <PACKAGE NAME>;
  3. Execute o comando apt-get update para atualizar a lista de packages disponível.

Por exemplo se temos a versão Ubuntu 14.04 que recebe o apelido de “Trusty Tahr”, devemos executar os comandos abaixo:

$ sudo wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
$ sudo dpkg -i puppetlabs-release-trusty.deb
$ sudo apt-get update

Depois de habilitar os repositórios basta executar:

$ sudo apt-get install puppet

Muito bem, já temos o puppet instalado se executarmos o comando puppet –-version, vamos ter a certeza que o mesmo está funcionando e pode visualizar a versão instalada, como mostra a figura abaixo:

Screen_Shot_03-01-15_at_10.20 AM
Figura 03 – Mostra a execução do comando puppet –-version

 

O puppet trabalha com o conceito de módulos para realizar a automação das tarefas, mas afinal:

O que é um modulo?

Módulos são pacotes self-contained de códigos e dados, resumindo, são conjuntos de operações agrupadas para modelar e configurar diferentes serviços. Para mais detalhes acesse o link Module Fundamentals.

Procure sempre usar os módulos prontos do  Puppet Forge, além da quantidade, na maioria das vezes eles não precisam de adequação nenhuma para ser executado. Mas caso a sua necessidade seja muito específica você mesmo pode desenvolver um módulo do zero.

Em nosso exemplo vamos usar o módulo de NTP, criado e mantido pela PuppetLabs.

Instalando o módulo NTP

Como destaquei acima vamos usar um modulo, criado e mantido pela PuppetLabs que pode ser usado gratuitamente.

Se acessarmos o link da página do módulo NTP no PuppetForge vermos a seguinte página conforme a imagem abaixo:

Figura 05 - Página de Readme do puppetforge mostrando como instalar o módulo
Figura 05 – Página PuppetForge mostrando como instalar o módulo

A documentação utiliza sempre o mesmo padrão para todos os módulos no PuppetForge, sempre temos o comando de como instalar o módulo e depois um readme com as principais funcionalidade e como utilizar o módulo.

Screen_Shot_03-01-15_at_10.32 AM
Figura 06 – Readme do modulo

Então vamos utilizar o comando que instala o modulo ntp:

$ puppet module install puppetlabs-ntp
Screen_Shot_03-01-15_at_10.38 AM
Figura 07 – Instalando o módulo NTP

Como podemos ver na figura acima o puppet baixa o módulo e se houver algum outro módulo ou biblioteca dependente, o mesmo fica responsável em garantir a integridade do módulo.

Agora podemos fazer uso do módulo NTP que está instalado em /etc/puppet/modules, conforme a figura:

Screen_Shot_03-01-15_at_10.42 AM
figura 08 – Módulo NTP que está instalado em /etc/puppet/modules

Antes de executar o modulo ntp precisamos criar um arquivo para podermos usar as funcionalidades do módulo, para isso vamos criar em /etc/puppet/modules/ntp/manifests/ o arquivo ntp.pp como abaixo:

node default {
  include '::ntp'
}
Screen_Shot_03-01-15_at_11.36 AM
Figura 09 – Arquivo ntp.pp

Pronto, agora podemos executar o modulo e ver como ele funciona, para isso vamos executar:

$ puppet apply /etc/puppet/modules/ntp/manifests/ntp.pp
Screen_Shot_03-01-15_at_12.01 PM
Figura 10 – Execução do comando puppet apply /etc/puppet/modules/ntp/manifests/ntp.pp

A execução foi realizada com sucesso. O puppet validou se existe o pacote do ntp, se o mesmo está instalado e se o serviço está em execução. Não vimos nada acontecer, por que quando o puppet analisou o catálogo tudo estava em conformidade.

Agora vamos imaginar que alguém acessou a máquina e parou o serviço ntpd, involuntariamente o que acontece se executarmos o mesmo comando?

Screen_Shot_03-01-15_at_12.06 PM
Figura 11 – Execução do comando puppet apply, após parada do serviço

Reparem que paramos o serviço ntpd e executamos novamente o comando puppet apply do modulo ntp e o puppet analisando o catálogo analisa que o serviço deve estar em execução e assim o puppet envia a instrução para que o serviço seja executado novamente.

Então é isso pessoal, espero que eu tenha conseguido mostrar o funcionamento básico do puppet e seus módulos. Poderiamos mostrar algumas funcionalidades a mais, mas o post ficaria muito grande e cansativo.

Caso tenham dúvidas ou sugestões, não deixem de comentar o post e quem sabe não podemos em breve mostrar mais um pouco dessa ferramenta ?

Por CESAR FERNANDO STURION

Postado em: 05 de março 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