Skip to content

Configurando um ambiente Puppet-Server e Puppet-Agent no CentOS 6 e 7/Red Hat 6 e 7

Aviso:

Este tutorial foi atualizado para ensinar a montar o ambiente puppet usando o repositório da PuppetLabs para instalar pacotes do Puppet 4.x.

Se você ainda não sabe o que é Puppet, como funciona e para que serve, sugiro parar por aqui e começar a estudar os links que estão nesta página: http://blog.aeciopires.com/primeiros-passos-com-o-puppet/ ou se quiser instalar o Puppet-Server e o Puppet-Agent no Ubuntu Server 14.04/16.04 ou Debian 8, sugiro ler este tutorial: http://blog.aeciopires.com/configurando-um-ambiente-puppet/

Quando estiver se sentindo seguro no assunto, pode retomar a execução deste tutorial.

Entendendo o ambiente

Continuando… a figura abaixo mostra o ambiente usado para a execução deste tutorial.

arquitetura_puppet

O sistema operacional usado nas máquinas foram: CentOS 6 e 7 64 bits e Red Hat 6 e 7 64 bits. Os comandos mostrados a seguir funcionam nestas duas distribuições GNU/Linux.

Para a implementação do ambiente mostrado acima, foi configurado um servidor DHCP e um servidor DNS. Depois disso, foram criadas três máquinas virtuais para serem usadas pelo Puppet. As configurações de disco, memória e processador para as máquinas virtuais foram:

  • Memória: 768 MB
  • HD: 10 GB
  • Processador: 1 com clock de 2.0 GHz
  • 1 placa de rede

Preparando o ambiente

No servidor DHCP da sua rede, configure um IP e associe-o a cada endereço MAC da placa de rede de cada máquina que será usada.

Exemplos de configuração no arquivo do DHCP no GNU/Linux.

host puppetserver { 
  hardware ethernet 08:00:27:e7:09:48; 
  fixed-address 192.168.0.171; 
 } 
host puppet1 { 
  hardware ethernet 08:00:27:81:d7:5e; 
  fixed-address 192.168.0.172; 
 } 
host puppet2 { 
  hardware ethernet 08:00:27:d0:d9:66; 
  fixed-address 192.168.0.173; 
 }

Exemplos de configuração no arquivo de zona do domínio domain.com.br no Bind9 no GNU/Linux.

puppetserver    IN      A       192.168.0.171 
puppet1         IN      A       192.168.0.172 
puppet2         IN      A       192.168.0.173

Exemplos de configuração no arquivo de zona reversa do domínio domain.com.br no Bind9 no GNU/Linux.

171     IN      PTR     puppetserver.domain.com.br. 
172     IN      PTR     puppet1.domain.com.br. 
173     IN      PTR     puppet2.domain.com.br.

Em cada máquina, configure os nomes de host e de domínio editando os arquivos /etc/hosts, /etc/hostname e /etc/resolv.conf

Exemplos de configuração para cada arquivo

Puppet-Server

/etc/hostname 
 puppetserver.domain.com.br 
/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.171  puppetserver puppetserver.domain.com.br
192.168.0.172  puppet1 puppet1.domain.com.br
192.168.0.173  puppet2 puppet2.domain.com.br
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/resolv.conf 
 domain domain.com.br 
 search domain.com.br 
 nameserver IP-DNS-SERVER

Puppet-Agent 1

/etc/hostname 
 puppet1.domain.com.br
/etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.171  puppetserver puppetserver.domain.com.br
192.168.0.172  puppet1 puppet1.domain.com.br
192.168.0.173  puppet2 puppet2.domain.com.br
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/resolv.conf 
 domain domain.com.br 
 search domain.com.br 
 nameserver IP-DNS-SERVER

Puppet-Agent 2

/etc/hostname 
 puppet2.domain.com.br
/etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.171  puppetserver puppetserver.domain.com.br
192.168.0.172  puppet1 puppet1.domain.com.br
192.168.0.173  puppet2 puppet2.domain.com.br
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 /etc/resolv.conf 
 domain domain.com.br 
 search domain.com.br 
 nameserver IP-DNS-SERVER 

Aviso:
Procure manter a hora do sistema de cada máquina corretamente configurada utilizando NTP, para evitar problemas na assinatura de certificados, entre outros.

A porta 8140/TCP do servidor PuppetServer precisa estar acessível para as demais máquinas.

Para a execução deste tutorial, o firewall foi parado em todas as máquinas com os comandos abaixo.

No CentOS/Red Hat 6:

# service iptables save
# service ip6tables save
# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off

No CentOS/Red Hat 7:

systemctl stop firewalld
systemctl disable firewalld

Instalando os pacotes

   Adicionando o repositório da PuppetLabs no CentOS 6/Red Hat 6:

su -
yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm
    Adicionando o repositório da PuppetLabs no CentOS 7/Red Hat 7:
su -
yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
 Na máquina que terá o Puppet-Server, instale os pacotes abaixo.
 
yum install -y puppet-agent puppetserver
export PATH=/opt/puppetlabs/bin:$PATH

  Nas máquinas que terá o Puppet-Agent, instale o pacote abaixo.

yum -y install puppet-agent
export PATH=/opt/puppetlabs/bin:$PATH

Verifique a versão do Puppet com o comando abaixo.

puppet --version

 

Aviso:

Os binários e libs do Puppet 4.x ficam, por padrão, dentro do diretório /opt/puppetlabs/bin.

Os arquivos de configuração ficam, por padrão, dentro do diretório /etc/puppetlabs/.

Configurando os serviços

  No arquivo /etc/puppetlabs/puppet/puppet.conf de cada máquina (Puppet-Agent), adicione as linhas abaixo e mude o intervalo de tempo (em segundos), que o agente se conectará ao server para atualização do catálogo de manifestos.

Exemplo para a máquina puppet1:

[main]
certname = puppet1.domain.com.br
server = puppetserver.domain.com.br
# intervalo em segundos
runinterval = 60 

Exemplo para a máquina puppet2:

[main]
certname = puppet2.domain.com.br
server = puppetserver.domain.com.br
# intervalo em segundos
runinterval = 60

No arquivo /etc/puppetlabs/puppet/puppet.conf da máquina (Puppet-Server), adicione as linhas abaixo.

Exemplo para a máquina puppetserver:

[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code

[main]
certname = puppetserver.domain.com.br
server = puppetserver.domain.com.br
#intervalo em segundos
runinterval = 60
strict_variables = true
Altere as configurações de memória do Java a ser usado pelo PuppetServer. Edite o arquivo /etc/sysconfig/puppetserver.
JAVA_ARGS="-Xms256m -Xmx512m"
Com esta configuração, será alocado  512 MB (no máximo) e 256 MB (no mínimo) para  uso exclusivo da JVM (Java Virtual Machine) usada pelo PuppetServer.

Gerando certificados e reiniciando os serviços

Na máquina PuppetServer, gere um certificado e reinicie os serviço com os comandos abaixo.

puppet cert generate puppetserver.domain.com.br
puppet resource service puppetserver ensure=running enable=true

Nas máquinas que possuem o puppet-agent, gere uma solicitação de assinatura de certificado com o comando abaixo.

puppet agent -t

    No servidor Puppet-Server aparecerá a solicitação de assinatura para cada máquina que tem apenas o Puppet-Agent.

puppet cert list 
   "puppet1.domain.com.br" (SHA256) C7:EC:72:6F:82:56:9E:15:C8:42:2D:A7:07:07:B7:B6:AC:41:45:DC:33:BA:09:B5:1A:3D:2C:14:31:32:D7:D4 
   "puppet2.domain.com.br" (SHA256) 49:0D:A2:2B:7E:4B:EE:2E:85:CC:B4:16:F9:C1:56:C8:75:63:0C:EF:C4:0E:96:FA:42:4E:09:32:CB:B2:E1:FF

    Assine cada certificado usando os comandos abaixo.

puppet cert sign puppet1.domain.com.br
puppet cert sign puppet2.domain.com.br

   

Aviso:
As solicitações de assinatura de certificados no Puppet-Server ficam em: /etc/puppetlabs/puppet/ssl/ca/requests/
No Puppet-Agent, os certificados assinados ficam em: /etc/puppetlabs/puppet/ssl/
Se precisar refazer a assinatura de certificados do host puppet-agent é só apagar os arquivos e sub-diretórios que ficam em: /etc/puppetlabs/puppet/ssl/.
Se precisar revogar os certificados assinados de um host cliente (puppet1, por exemplo) no Puppet-Server é só usar o comando: puppet cert clean puppet1.domain.com.br (por exemplo).
O log do puppetserver fica em /var/log/puppetlabs/puppetserver/puppetserver.log e /var/log/puppetlabs/puppetserver/puppetserver-daemon.log
O log do puppet-agent fica em /var/log/messages e /var/log/puppetlabs/puppet

  Agora execute o comando abaixo, em cada máquina (Puppet-Server e Puppet-Agent). Este comando irá iniciar o puppet-agent e habilitá-lo para ser executado após o boot do sistema operacional.

puppet resource service puppet ensure=running enable=true

 

Testando o funcionamento do ambiente

    No servidor PuppetServer, crie o arquivo /etc/puppetlabs/code/environments/production/manifests/site.pp com o conteúdo abaixo.

node "puppet1.domain.com.br" {
  package { 'nmap':
    ensure => present,
  }
}
node "puppet2.domain.com.br" {
  package { 'elinks':
    ensure => present,
  }
}
node "puppetserver.domain.com.br" {
  package { 'tcpdump':
    ensure => present,
  }
}

   Salve o arquivo e execute em todas as máquinas o comando abaixo.

puppet agent -t

  Verifique se pacotes foram realmente instalados conforme a configuração especificada no arquivo site.pp.

  • Na máquina puppet1 deve ser instalado o pacote “nmap”
  • Na máquina puppet2 deve ser instalado o pacote “elinks”
  • Na máquina puppetserver deve ser instalado o pacote “tcpdump”.

Pronto! O ambiente está configurado. Agora é só instalar os módulos e manifestos que você precisa.

Bons estudos!

Fonte:

http://gutocarvalho.net/octopress/2015/08/18/instalando-puppet-4-agent-and-master/

http://blog.aeciopires.com/configurando-um-ambiente-puppet/

http://instruct.com.br/static/apostila-puppet.pdf

http://techarena51.com/index.php/a-simple-way-to-install-and-configure-a-puppet-server-on-linux/

https://puppetlabs.com/blog/puppet-server-bringing-soa-to-a-puppet-master-near-you

https://github.com/puppetlabs/puppet-server/blob/master/documentation/install_from_packages.markdown

https://docs.puppetlabs.com/puppet/latest/reference/config_file_main.html

https://docs.puppetlabs.com/puppet/4.2/reference/install_pre.html

https://docs.puppetlabs.com/puppetserver/2.1/install_from_packages.html

https://docs.puppetlabs.com/puppetdb/latest/connect_puppet_master.html

https://docs.puppetlabs.com/puppet/4.2/reference/install_linux.html

https://docs.puppetlabs.com/puppetserver/2.1/configuration.html

6 thoughts on “Configurando um ambiente Puppet-Server e Puppet-Agent no CentOS 6 e 7/Red Hat 6 e 7

  1. Pingback: Configurando um ambiente Puppet-Master e Puppet-Agent no CentOS/Red Hat 7 - Peguei do

  2. Pingback: Primeiros passos com o Puppet | Aécio Pires

  3. Cassio says:

    Aécio,

    Como comentei no Grupo do Google, o seu tutorial é excelente e me ajudou bastante.

    Para finalizar eu gostaria de instalar uma ferramenta WEB, como tem no Puppet Enterprise. Me indicaram o Puppet Explorer e Puppet Board, porem, como não tenho intimidade com o Puppet ainda estou apanhando bastante para instalar.

    Você já instalou algumas destas ferramentas? Se sim teria um passo a passo para indicar?

     

    Forte abraço

  4. Aécio Pires says:

    Boa noite, Cássio!

    Infelizmente, não tenho um tutorial de instalação do Puppet Explorer. Ainda não instalei nem testei ele. Atualmente não uso nenhuma interface web para gerenciamento de Puppet.

    Abraço.

  5. Pingback: Configurando um ambiente Puppet-Server e Puppet-Agent no Debian 8 e Ubuntu Server 14.04/16.04 – Aécio Pires

  6. Pingback: Instalando o PuppetDB e integrando ao PuppetMaster e ao PuppetExplorer e PuppetBoard no Ubuntu Server 14.04/16.04, Debian 8, Red Hat 6 e 7 e CentOS 6 e 7 – Aécio Pires

Leave a Reply

Your email address will not be published. Required fields are marked *