Puppet Agent e Server

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Atualmente na área de T.I. tudo é DevOps e ferramentas de gerência de configuração são um pré-requisito para quem quer entrar para esse mundo, sendo assim nas linhas abaixo vou mostrar como é possível criar um servidor puppet master e um servidor node com o puppet agent para fazer a gerência de configuração.

A primeira coisa a se fazer é a instalação do puppet master, o meu servidor master possui a seguinte configuração:

root@puppetmaster:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.4 LTS
Release:	14.04
Codename:	trusty

Não esquece que o puppet precisa estar com os dns configurados, no meu caso vou configurar através do /etc/hosts, sendo assim ficará da seguinte maneira:

vim /etc/hosts
 
10.100.0.147 puppetmaster.alissonmachado.com.br
10.100.0.132 node1.alissonmachado.com.br

Para instalar digite os seguintes comandos:

root@puppetmaster:~# apt-get clean all
root@puppetmaster:~# apt-get update
root@puppetmaster:~# apt-get -f install puppet -y

Em muitos tutoriais é baixado o arquivo .deb do puppet direto do repositório da puppetlabs com o seguinte comando:

root@puppetmaster:~# wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

e depois instalado da seguinte maneira:

root@puppetmaster:~# dpkg -i puppetlabs-release-trusty.deb
root@puppetmaster:~# apt-get update
root@puppetmaster:~# apt-get -f install puppet

Porém eu instalei direto do repositório tanto do Ubuntu 14.05 e do Debian 8.6 e ambos funcionaram normalmente.

É uma boa prática após a instalação executar o seguinte comando:

root@puppetmaster:~# rm -rf /var/lib/puppet/ssl

Nesse diretório ficam guardados os certificados do puppet e durante a instalação pode ter sido gerado um certificado com hostname errado ou algo do tipo, sendo assim apagamos.

Após isso é necessário definir o hostname do seu servidor master no arquivo do puppet, então execute o seguinte comando:

root@puppetmaster:~# vim /etc/puppet/puppet.conf

Esse é o arquivo de configuração do puppet, o arquivo é basicamente padrão, caso a sua versão do puppet seja menor que 3.8 provavelmente existirá uma tinha chamada templatedir=$confidir/templates, essa configuração já está depreciada sendo assim essa linha pode ser removida, caso a versão seja 3.8 ou acima ela não deve existir.

No lugar dessa linha adicione duas linhas:

certname = puppetmaster
dns_alt_names = puppetmaster,puppetmaster.alissonmachado.com.br

Agora gere o certificado do seu servidor:

root@puppetmaster:~# puppet master --verbose

Agora para validar se o certificado já foi gerado e assinado você pode executar o seguinte comando:

root@puppetmaster:~# puppet cert list --all

Tudo certo com o Master, agora vamos instalar o agent.

Essa é a configuração do meu agent:

root@node1:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 8.6 (jessie)
Release:	8.6
Codename:	jessie

Instalando o puppet:

root@puppetmaster:~# apt-get clean all
root@puppetmaster:~# apt-get update
root@puppetmaster:~# apt-get -f install puppet -y

Uma vez instalado você deve fazer com que o agent do puppet inicie sozinho durante o boot da máquina, para fazer isso você precisa criar o seguinte arquivo:

root@node1:~# vim  /etc/default/puppet

E adicione o seguinte conteúdo:

START=yes

Agora é preciso alterar o arquivo de configuração do puppet:

root@node1:~# vim  /etc/puppet/puppet.conf

Dentro do arquivo você terá uma seção dessa maneira:

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

Toda ela pode ser apagada e adicione o seguinte conteúdo:

[agent]
server = puppetmaster.alissonmachado.com.br

Agora você precisa gerar um certificado para esse node também, execute os seguintes comandos:

root@node1:~# rm -rf /var/lib/puppet/ssl
root@node1:~# puppet agent --enable
root@node1:~# puppet agent --test --server puppetmaster.alissonmachado.com.br
 
Info: Creating a new SSL key for node1.alissonmachado.com.br
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for node1.alissonmachado.com.br
Info: Certificate Request fingerprint (SHA256): B6:73:95:CF:58:97:98:0C:8C:97:DD:88:FD:82:C0:D3:F2:6B:2B:CE:25:77:F6:D6:16:91:20:1A:FF:69:B8:59
Info: Caching certificate for node1.alissonmachado.com.br
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for node1.alissonmachado.com.br
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node1.alissonmachado.com.br
Info: Applying configuration version '147828151

De acordo com o log que apareceu na tela a chave foi gerada com sucesso e agora ela precisa ser aceita pelo servidor.

Agora volte no puppet master e veja se a máquina está pendente com o seguinte comando:

root@puppetmaster:~# puppet cert list --all

E para aceitar o novo node utilize o seguinte comando:

root@puppetmaster:~# puppet cert sign node1.alissonmachado.com.br

Uma vez aceito, volte no servidor node1 e rode o seguinte comando:

root@node1:~# puppet agent --test
 
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node1.alissonmachado.com.br
Info: Applying configuration version '1478281511'

Se a saída for parecida com a mensagem acima está tudo funcionando corretamente.

As vezes acontece do puppet reclamar de certificado inválido, não bate com o hostname da máquina ou alguma coisa assim.

Se isso acontecer o certificado deve ser apagado com os seguintes comandos:

root@node1:~# find /var/lib/puppet/ssl -name node1.alissonmachado.com.br.pem -delete
root@node1:~# rm -rf /var/lib/puppet/ssl/

Eu coloquei os comandos de forma redundante pois quando o puppet da esse problema as vezes ele busca uns certificados que só ele sabe onde.

Agora que foram removidos os certificados o node precisa ser removido do puppet master.

root@puppetmaster:~# puppet cert clean node1.alissonmachado.com.br

Agora volte no node1 e rode o comando de novo:

root@node1:~# puppet agent --test --server puppetmaster.alissonmachado.com.br

E repita todo o processo de ir no master e aceitar o node e assim por diante.

Agora criando um Manifest só para testar.

Vá no puppetmaster e execute os seguintes comando:

root@puppetmaster:~# cd /etc/puppet/manifests/
root@puppetmaster:~# vim apache.pp

Dentro do apache.pp adicione o seguinte conteúdo:

1
2
3
4
5
6
7
8
9
10
11
node "node1.alissonmachado.com.br"{
        package { "apache2":
                  ensure=>installed,
                }
        ->
        service { "apache2":
                   ensure=> "running",
                   enable => true
                }
 
}

Salve o arquivo, volte no servidor node1 e execute a instrução:

root@node1:~# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node1.alissonmachado.com.br
Info: Applying configuration version '1478284402'
 
Notice: /Stage[main]/Main/Node[node1.alissonmachado.com.br]/Package[apache2]/ensure: ensure changed 'purged' to 'present'
Notice: Finished catalog run in 22.12 seconds

Essa saída mostra que o apache foi instalado com sucesso.

Com relação ao manifest, eu defini a ordem dos recursos utilizando o operador -> pois era o mais rápido pra fazer o exemplo mas existem outros como: require,notify,subscribe e mais, porém isso fica pro próximo post.

Valeu \o

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×
12 meses ago

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *