Puppet : Instalação do Servidor no RHEL 6 / 7

Puppet é um ferramenta podera para automação de aplicações e infraestrutura em apenas algumas linhas de código .

Podemos realizar diversas tarefas, sendo assim destanca as principais :

Gerência de configuração.
Automação na instalação de pacotes.
Estabelece e garante normas e facilidade de auditoria.

puppet-keynote-puppet-camp-london-17-638

Neste post apresentarei como dar o primeiro passo de forma prática e irei evoluindo em outros posts e falar sobre integração com o Jenkins.

1) Ambiente :

10.0.0.40 – puppet-01.example.com – Puppet Server
10.0.0.42 – client-01.example.com – Puppet Client

2) Baixando os repositórios :

RHEL 7

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

RHEL 6

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

3) Instalação do Servidor :

Instalando

yum install puppet-server -y

Fazendo upgrade para a última versão

puppet resource package puppet-server ensure=latest

Coloque o serviço para startar no boot da máquina

 puppet resource service puppetmaster ensure=running enable=true

Definindo a configuração do Nome do servidor no arquivo /etc/puppet/puppet.conf

dns_alt_names = puppet-01, puppet-01.example.com

Start o serviço

service puppetmaster start

Regras para FirewallD

firewall-cmd --permanent --zone=public --add-port=8140/tcp
firewall-cmd --reload 

Regras para Iptables

echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT" >> /etc/sysconfig/iptables
service iptables restart

4) Instalação do Agente :

Instalando agente

yum install puppet -y 

Atualizando para a última versão

 
puppet resource package puppet ensure=latest

Start o serviço

 
service puppet start

Definindo a configuração do Nome do servidor no arquivo /etc/puppet/puppet.conf

server = puppet-01.example.com

Para solicitar ao servidor autorização do cliente

puppet agent -t 

Captura de Tela 2015-11-06 às 18.35.43

5) Reconhecendo o agente no servidor :

Listando todas as requisições de clientes

puppet cert list

Listando todas as requisições de clientes

Aceitando a requisição do client-01.example.com

puppet cert sign client-01.example.com

Podemos aceitar todas diretamente

puppet cert sign --all

Captura de Tela 2015-11-06 às 18.37.23

6) Criando o primeiro Job como exemplo instalando o Httpd :

A configuração dos clientes são feitas baseadas em manifestos, no exemplo abaixo estou criando um arquivo para instalar o Apache no servidor Puppet.

vim /etc/puppet/manifests/site.pp

#Configuracao do Pacote
node 'client-01.example.com' {
                package { 'httpd':
                        ensure => installed,

                        }

                ->
#Iniciando o Servidor depois de instalar o Apache
                service { 'httpd' :
                        ensure => running,
                        enable => true,
                        }
#Definindo Index da Pagina
exec { 'echo "Criado pelo puppet no client-01" >> /var/www/html/index.html':
                cwd     => "/var/www/html",
                creates => "/var/www/html/index.html",
                path    => ["/usr/bin", "/usr/sbin"]
}
~  

Coloquei o símbolo “->” para que seja executado após a instalação do Apache e não antes .

Por padrão o Puppet atualiza de 30 em 30 minutos , estarei forçando a atualização no client-01.example.com .

puppet agent --test

Saída do console :

Captura de Tela 2015-11-06 às 19.35.42

7) Teste Final :

Captura de Tela 2015-11-06 às 19.37.20