Mudanças entre as edições de "Puppet"

De MSTECH wiki
Ir para: navegação, pesquisa
(Módulo 1 – Edição do arquivo /etc/hosts)
(Instalação e configuração do Cliente)
Linha 98: Linha 98:
 
Faça o login no host cliente (puppetclient-01.devopslab.com.br) e instale o repositório e o Puppet agent.
 
Faça o login no host cliente (puppetclient-01.devopslab.com.br) e instale o repositório e o Puppet agent.
 
<syntaxhighlight lang="console" >
 
<syntaxhighlight lang="console" >
#rpm -hiv https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
+
# rpm -hiv https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
 
+
# yum -y install puppet-agent
#yum -y install puppet-agent
+
 
</syntaxhighlight >
 
</syntaxhighlight >
  
 
Não inicie o puppet ainda.
 
Não inicie o puppet ainda.
 
Carregue o PATH do puppet para incluir os comandos do puppet. Isto deveria ser automático e acontece apenas neste versão, possívelmente será corrigido em novas versões do puppet cliente.
 
Carregue o PATH do puppet para incluir os comandos do puppet. Isto deveria ser automático e acontece apenas neste versão, possívelmente será corrigido em novas versões do puppet cliente.
#source  /etc/profile.d/puppet-agent.sh
+
# source  /etc/profile.d/puppet-agent.sh
 
Edite o puppet.conf e aponte para o server Puppet Server.
 
Edite o puppet.conf e aponte para o server Puppet Server.
#vi /etc/puppetlabs/puppet/puppet.conf
+
# vi /etc/puppetlabs/puppet/puppet.conf
 
 
 
 
 
[agent]
 
[agent]
Linha 115: Linha 114:
 
systemctl start puppet.service
 
systemctl start puppet.service
 
Rode o puppet pela primeira vez.
 
Rode o puppet pela primeira vez.
#puppet agent -t
+
# puppet agent -t
 
Exiting; no certificate found and waitforcert is disabled
 
Exiting; no certificate found and waitforcert is disabled
 
O puppet cliente vai fazer uma solicitação de assinatura de certificado (CSR) para o Puppet Server (CA). Na verdade já foi feito a solicitação no start do puppet agent, porém é recomendável verificar novamente com o comando “puppet agente –t”.
 
O puppet cliente vai fazer uma solicitação de assinatura de certificado (CSR) para o Puppet Server (CA). Na verdade já foi feito a solicitação no start do puppet agent, porém é recomendável verificar novamente com o comando “puppet agente –t”.
 
Se logue no Puppet Server e assine o certificado solicitado pelo Puppet client.
 
Se logue no Puppet Server e assine o certificado solicitado pelo Puppet client.
 
Puppet Server puppetserver-01.devopslab.com.br
 
Puppet Server puppetserver-01.devopslab.com.br
#puppet cert list
+
# puppet cert list
 
root@puppetserver-01 ~]# puppet cert list
 
root@puppetserver-01 ~]# puppet cert list
 
"puppetclient-01.devopslab.com.br" (SHA256) 73:66:B0:FE:4F:96:E6:4B:D8:7B:8E:B3:F5:72:41:
 
"puppetclient-01.devopslab.com.br" (SHA256) 73:66:B0:FE:4F:96:E6:4B:D8:7B:8E:B3:F5:72:41:
Linha 185: Linha 184:
 
Onde “edithosts” é o nome do módulo, e “hosts” o nome do manifesto.
 
Onde “edithosts” é o nome do módulo, e “hosts” o nome do manifesto.
 
Verifique se tem algum erro no manifesto.
 
Verifique se tem algum erro no manifesto.
#puppet parser validate hosts.pp
+
# puppet parser validate hosts.pp
 +
 
 
Vamos criar a definição do node (node são os clientes rodando o puppet client, são seus hosts no geral).
 
Vamos criar a definição do node (node são os clientes rodando o puppet client, são seus hosts no geral).
 
cd /etc/puppetlabs/code/environments/production/manifests
 
cd /etc/puppetlabs/code/environments/production/manifests
 
 
 
 
#vi site.pp
+
# vi site.pp
 
node 'puppetclient-01.devopslab.com.br' {
 
node 'puppetclient-01.devopslab.com.br' {
 
        include edithosts::hosts
 
        include edithosts::hosts
 
}
 
}
 +
 
E seu eu tiver mais de 1 node?. Simplesmente faça assim:
 
E seu eu tiver mais de 1 node?. Simplesmente faça assim:
1
+
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
 
node  
 
node  
 
'puppetclient-01.devopslab.com.br',
 
'puppetclient-01.devopslab.com.br',
Linha 212: Linha 205:
 
        include edithosts::hosts
 
        include edithosts::hosts
 
}
 
}
 +
 
Valide a configuração site.pp no intuito de achar erros.
 
Valide a configuração site.pp no intuito de achar erros.
 
puppet parser validate site.pp
 
puppet parser validate site.pp
 
No PUPPET CLIENT (Node/Cliente).
 
No PUPPET CLIENT (Node/Cliente).
 
Logue no Puppet Cliente e rode o “puppet agente –t”.
 
Logue no Puppet Cliente e rode o “puppet agente –t”.
 +
 
# puppet agent -t
 
# puppet agent -t
 
Info: Using configured environment 'production'
 
Info: Using configured environment 'production'
Linha 229: Linha 224:
 
Notice: Applied catalog in 0.05 seconds
 
Notice: Applied catalog in 0.05 seconds
 
Verificando as alterações no /etc/hosts.
 
Verificando as alterações no /etc/hosts.
 +
 
# cat /etc/hosts
 
# cat /etc/hosts
 
127.0.0.1    localhost    localhost.localdomain localhost4 localhost4.localdomain4
 
127.0.0.1    localhost    localhost.localdomain localhost4 localhost4.localdomain4
Linha 239: Linha 235:
 
10.0.10.13    wiki.devopslab.com.br    # Adicionado via Puppet
 
10.0.10.13    wiki.devopslab.com.br    # Adicionado via Puppet
 
10.0.10.13    webmail.devopslab.com.br    # Adicionado via Puppet
 
10.0.10.13    webmail.devopslab.com.br    # Adicionado via Puppet
 +
 
Perceba que o arquivo de hosts foi editado automaticamente.
 
Perceba que o arquivo de hosts foi editado automaticamente.
 +
 
6.2 – Módulo 2 – Instalação pacotes, remoção, desativação e update de pacotes
 
6.2 – Módulo 2 – Instalação pacotes, remoção, desativação e update de pacotes
 
Vou criar um módulo checklist, que vai instalar alguns pacotes, remover os desnecessários, e manter outros atualizados, bem checklist mesmo, toda empresa tem.
 
Vou criar um módulo checklist, que vai instalar alguns pacotes, remover os desnecessários, e manter outros atualizados, bem checklist mesmo, toda empresa tem.
Linha 249: Linha 247:
 
No PUPPET SERVER.
 
No PUPPET SERVER.
 
Criação do módulo de checklist “devopslab-checklist”.
 
Criação do módulo de checklist “devopslab-checklist”.
#cd /etc/puppetlabs/code/environments/production/modules
+
# cd /etc/puppetlabs/code/environments/production/modules
 
puppet module generate devopslab-checklist --skip-interview
 
puppet module generate devopslab-checklist --skip-interview
 
Criação do manifesto.
 
Criação do manifesto.
#cd /etc/puppetlabs/code/environments/production/modules/checklist/manifests
+
# cd /etc/puppetlabs/code/environments/production/modules/checklist/manifests
#vi pacotes.pp
+
# vi pacotes.pp
1
+
 
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
 
class checklist::pacotes {
 
class checklist::pacotes {
 
 
 
 
Linha 292: Linha 272:
 
 
 
 
 
}
 
}
 +
 
Vamos criar a definição do node. Nós já criamos anteriormente, vamos apenas adicionar um include para o novo manifesto.
 
Vamos criar a definição do node. Nós já criamos anteriormente, vamos apenas adicionar um include para o novo manifesto.
#vi /etc/puppetlabs/code/environments/production/manifests/site.pp
+
# vi /etc/puppetlabs/code/environments/production/manifests/site.pp
 
 
 
 
 
node 'puppetclient-01.devopslab.com.br' {
 
node 'puppetclient-01.devopslab.com.br' {
Linha 299: Linha 280:
 
    include checklist::pacotes
 
    include checklist::pacotes
 
}
 
}
 +
 
No PUPPET CLIENT. Logue no cliente e rode o “puppet agente –t”.
 
No PUPPET CLIENT. Logue no cliente e rode o “puppet agente –t”.
[root@puppetclient-01 /]# puppet agent -t
+
# puppet agent -t
 +
 
 
Info: Using configured environment 'production'
 
Info: Using configured environment 'production'
 
Info: Retrieving pluginfacts
 
Info: Retrieving pluginfacts
Linha 311: Linha 294:
 
Notice: /Stage[main]/Checklist::Pacotes/Package[vim]/ensure: removed
 
Notice: /Stage[main]/Checklist::Pacotes/Package[vim]/ensure: removed
 
Notice: Applied catalog in 8.23 seconds
 
Notice: Applied catalog in 8.23 seconds
 +
 
Perceba que não aparece nada sobre o openssh, pois ele já está atualizado, então o Puppet sabiamente ignora.
 
Perceba que não aparece nada sobre o openssh, pois ele já está atualizado, então o Puppet sabiamente ignora.
 
Finalizamos a instalação do Puppet server e cliente assim como a criação e aplicação de módulos de configuração.
 
Finalizamos a instalação do Puppet server e cliente assim como a criação e aplicação de módulos de configuração.

Edição das 09h40min de 3 de novembro de 2016

Puppet – Como instalar e configurar o Puppet Server, Puppet Cliente e Módulos de Configuração

Neste tutorial nós vamos instalar e configurar o Puppet Server, instalar o Puppet nos clientes e criar os módulos de configuração do Puppet.

Introdução.

O Puppet é uma ferramenta que permite a gerência e configuração de arquivos ou aplicações, na prática isto quer dizer que você consegue manter seu parque de hosts (desktops e servidores) com arquivos de configuração padronizados, pacotes e aplicativos atualizados, permite a gestão de usuários, monitoração de aplicações, aplicação de mudanças no ambiente de forma rápida e instalação de Sistema Operacional de forma automatizada.

Puppet também faz Orquestração, ou seja você consegue executar comandos em vários servidores ao mesmo tempo, por exemplo saiu um bug e você precisa atualizar um pacote rapidamente, com a Orquestração do Puppet isto é fácil e rápido, não importa o número de hosts, isto se tornará trivial.

Puppet conta também com o Facter, que permite colher qualquer informação dos hosts, como detalhes do hardware e software instalados, ele atua como uma “ferramenta de inventário”. A comunidade do Puppet é gigantesca, conta com grande quantidade de contribuições, muitos plug-ins, módulos, vasta documentação e inúmeras listas e sites de discussão.

Vamos lá.

Infraestrutura do ambiente

Tenha pelo menos 1 VM para o Puppet Master 1 VM para ser o cliente.

Utilizado neste Lab. Sistema Operacional Centos 7 64 bits – instalação mínima e atualizada. 1 x Puppet Server (Puppet Master) – puppet.mstech.com.br (192.168.13.42) 1 x Puppet Client – agente-puppet.mstech.com.br (192.168.11.11)

Pré-requisitos

Todos os servidores e clientes devem estar com o hostname padronizado da seguinte forma: nome_hostname.dominio.com.br nome_hostname.

# cat  /etc/hosts
192.168.11.11    puppet.mstech.com.br    puppet

   

Instalação dos repositórios

Instalar o repositório puppet tanto no Puppet Server como nos clientes.

# rpm -hiv https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

Instalação e configuração do Puppet Server

Junto do pacote puppetserver, também será instalado o puppetclient.

# yum install puppetserver

Por padrão o Puppet vem com o JVM (java) configurado para subir utilizando 2GB RAM, que é o mínimo recomendado, porém se o seu servidor não dispor desta memória, altere a configuração da JVM conforme a sua necessidade.

Adicional: Dê uma olhada no tópico Tuning do Puppet http://devopslab.com.br/tuning-do-puppet-server/

Altere a linha “JAVA_ARGS”.

# vi /etc/sysconfig/puppetserver

JAVA_ARGS="-Xms1g –Xmx1g -XX:MaxPermSize=256m"

Inicie o Puppet server e habilite o startup automático.

# systemctl start puppetserver.service
# systemctl enable puppetserver.service

Configure o puppet agente.

# vi /etc/puppetlabs/puppet/puppet.conf

 [agent]
 server = puppet.mstech.com.br

Inicie e ative o Puppet Agent.

# systemctl start puppet.service
# systemctl enable puppet.service

Gere o certificado SSL do agente.

# puppet agent -t
1 Info: Using configured environment 'production'
2 Info: Retrieving pluginfacts
3 Info: Retrieving plugin
4 Info: Caching catalog for puppetserver-01.devopslab.com.br
5 Info: Applying configuration version '1455913339'
6 Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
7 Notice: Applied catalog in 0.01 seconds

Instalação e configuração do Cliente

Aqui vamos instalar o puppet no cliente “puppetclient-01.devopslab.com.br”. Faça o login no host cliente (puppetclient-01.devopslab.com.br) e instale o repositório e o Puppet agent.

# rpm -hiv https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
# yum -y install puppet-agent

Não inicie o puppet ainda. Carregue o PATH do puppet para incluir os comandos do puppet. Isto deveria ser automático e acontece apenas neste versão, possívelmente será corrigido em novas versões do puppet cliente.

  1. source  /etc/profile.d/puppet-agent.sh

Edite o puppet.conf e aponte para o server Puppet Server.

  1. vi /etc/puppetlabs/puppet/puppet.conf

  [agent] server = puppetserver-01.devopslab.com.br Agora inicie e ative o startup automático do Puppet agent. systemctl enable puppet.service systemctl start puppet.service Rode o puppet pela primeira vez.

  1. puppet agent -t

Exiting; no certificate found and waitforcert is disabled O puppet cliente vai fazer uma solicitação de assinatura de certificado (CSR) para o Puppet Server (CA). Na verdade já foi feito a solicitação no start do puppet agent, porém é recomendável verificar novamente com o comando “puppet agente –t”. Se logue no Puppet Server e assine o certificado solicitado pelo Puppet client. Puppet Server puppetserver-01.devopslab.com.br

  1. puppet cert list

root@puppetserver-01 ~]# puppet cert list "puppetclient-01.devopslab.com.br" (SHA256) 73:66:B0:FE:4F:96:E6:4B:D8:7B:8E:B3:F5:72:41: 68:83:50:F3:4C:09:5A:1G:68:F0:47:10:28:6D:11:42:84 Assinatura do certificado. [root@puppetserver-01 ~]# puppet cert sign puppetclient-01.devopslab.com.br Notice: Signed certificate request for puppetclient-01.devopslab.com.br Notice: Removing file Puppet::SSL::CertificateRequest puppetclient-01.devopslab.com.br at '/etc/puppetlabs/puppet/ssl/ca/requests/puppetclient-01.devopslab.com.br.pem' Volte para o cliente “puppetclient-01.devopslab.com.br” e rode novamente o “puppet agente –t”. [root@puppetclient-01 ~]# puppet agent -t Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for puppetclient-01.devopslab.com.br Info: Applying configuration version '1455912908' Notice: Applied catalog in 0.03 seconds Pronto! Puppet Server e Puppet client (Cliente) funcionando. Agora falta apenas criar módulos e ver o puppet aplicando as configurações desejadas.

Criação de módulos de configuração

Módulo 1 – Edição do arquivo /etc/hosts

Vamos criar um módulo para editar arquivo de hosts de forma automática via puppet. Vamos usar o comando “puppet module generate”, é a forma mais “difícil” porém é a recomendada pela Puppetlabs e também mais organizada.

No PUPPET SERVER

1 # puppet module generate
2 # cd /etc/puppetlabs/code/environments/production/modules
3 # puppet module generate devopslab-edithosts --skip-interview

Acabamos de criar um módulo devopslab-edithosts. A opção “–skip-interview” pula uma série de perguntas como nome do criador do módulo, versão do módulo, descrição e etc, para o nosso caso não precisa, mas você pode dar uma olhada depois. Vamos criar nosso manifesto, ou seja definir uma classe.

  1 # cd /etc/puppetlabs/code/environments/production/modules/edithosts/manifests
  2 # vi hosts.pp
  3 
  4 class edithosts::hosts {
  5  
  6 ###A linha comment e opcional###
  7  host { 'crm.devopslab.com.br':
  8     ip           => '10.0.10.10',
  9     comment      => 'Adicionado via Puppet'
 10   }
 11  
 12  host { 'portal.devopslab.com.br':
 13     ip           => '10.0.10.11',
 14     comment      => 'Adicionado via Puppet'
 15   }
 16  
 17  host { 'wiki.devopslab.com.br':
 18     ip           => '10.0.10.13',
 19     comment      => 'Adicionado via Puppet'
 20   }
 21  
 22  host { 'webmail.devopslab.com.br':
 23     ip           => '10.0.10.13',
 24     comment      => 'Adicionado via Puppet'
 25   }
 26  
 27 }
 28 Onde edithosts é o nome do módulo, e hosts o nome do manifesto.
 29 Verifique se tem algum erro no manifesto.
 30 # puppet parser validate hosts.pp
 31 
 32 Vamos criar a definição do node (node são os clientes rodando o puppet client, são seus hosts no geral).
 33 cd /etc/puppetlabs/code/environments/production/manifests
 34  
 35 # vi site.pp
 36 node 'puppetclient-01.devopslab.com.br' {
 37         include edithosts::hosts
 38 }
 39 
 40 E seu eu tiver mais de 1 node?. Simplesmente faça assim:
 41 
 42 node 
 43 'puppetclient-01.devopslab.com.br',
 44 'puppetclient-02.devopslab.com.br',
 45 'puppetclient-03.devopslab.com.br',
 46 'puppetclient-04.devopslab.com.br'
 47 ## assim por diante.
 48 {
 49         include edithosts::hosts
 50 }
 51 
 52 Valide a configuração site.pp no intuito de achar erros.
 53 puppet parser validate site.pp
 54 No PUPPET CLIENT (Node/Cliente).
 55 Logue no Puppet Cliente e rode o puppet agente t.
 56 
 57 # puppet agent -t
 58 Info: Using configured environment 'production'
 59 Info: Retrieving pluginfacts
 60 Info: Retrieving plugin
 61 Info: Caching catalog for puppetclient-01.devopslab.com.br
 62 Info: Applying configuration version '1455919826'
 63 Notice: /Stage[main]/Edithosts::Hosts/Host[crm.devopslab.com.br]/ensure: created
 64 Info: Computing checksum on file /etc/hosts
 65 Notice: /Stage[main]/Edithosts::Hosts/Host[portal.devopslab.com.br]/ensure: created
 66 Notice: /Stage[main]/Edithosts::Hosts/Host[wiki.devopslab.com.br]/ensure: created
 67 Notice: /Stage[main]/Edithosts::Hosts/Host[webmail.devopslab.com.br]/ensure: created
 68 Notice: Applied catalog in 0.05 seconds
 69 Verificando as alterações no /etc/hosts.
 70 
 71 # cat /etc/hosts
 72 127.0.0.1    localhost    localhost.localdomain localhost4 localhost4.localdomain4
 73 ::1    localhost    localhost.localdomain localhost6 localhost6.localdomain6
 74  
 75 10.0.0.161    puppetclient-01.devopslab.com.br    puppetclient-01
 76 10.0.0.160    puppetserver-01.devopslab.com.br    puppetserver-01
 77 10.0.10.10    crm.devopslab.com.br    # Adicionado via Puppet
 78 10.0.10.11    portal.devopslab.com.br    # Adicionado via Puppet
 79 10.0.10.13    wiki.devopslab.com.br    # Adicionado via Puppet
 80 10.0.10.13    webmail.devopslab.com.br    # Adicionado via Puppet
 81 
 82 Perceba que o arquivo de hosts foi editado automaticamente.
 83 
 84 6.2  Módulo 2  Instalação pacotes, remoção, desativação e update de pacotes
 85 Vou criar um módulo checklist, que vai instalar alguns pacotes, remover os desnecessários, e manter outros atualizados, bem checklist mesmo, toda empresa tem.
 86 Checklist
 87 Telnet  Instalar
 88 Openssh  Manter atualizado na última versão.
 89 Gnutils  Manter atualizado na última versão.
 90 Vim  Remover
 91 No PUPPET SERVER.
 92 Criação do módulo de checklist devopslab-checklist.
 93 # cd /etc/puppetlabs/code/environments/production/modules
 94 puppet module generate devopslab-checklist --skip-interview
 95 Criação do manifesto.
 96 # cd /etc/puppetlabs/code/environments/production/modules/checklist/manifests
 97 # vi pacotes.pp
 98 
 99 class checklist::pacotes {
100  
101 package { [ 'telnet' ]:
102     ensure     => present,
103   }
104  
105 package { [ 'openssh' ]:
106     ensure     => latest,
107   }
108  
109 package { [ 'gnutls' ]:
110     ensure     => latest,
111   }
112  
113 package { [ 'vim' ]:
114     ensure     => absent,
115   }
116  
117 }
118 
119 Vamos criar a definição do node. Nós já criamos anteriormente, vamos apenas adicionar um include para o novo manifesto.
120 # vi /etc/puppetlabs/code/environments/production/manifests/site.pp
121  
122 node 'puppetclient-01.devopslab.com.br' {
123     include    edithosts::hosts
124     include checklist::pacotes
125 }
126 
127 No PUPPET CLIENT. Logue no cliente e rode o puppet agente t.
128 # puppet agent -t
129 
130 Info: Using configured environment 'production'
131 Info: Retrieving pluginfacts
132 Info: Retrieving plugin
133 Info: Loading facts
134 Info: Caching catalog for puppetclient-01.devopslab.com.br
135 Info: Applying configuration version '1455975217'
136 Notice: /Stage[main]/Checklist::Pacotes/Package[telnet]/ensure: created
137 Notice: /Stage[main]/Checklist::Pacotes/Package[gnutls]/ensure: ensure changed '3.3.8-12.el7_1.1' to '0:3.3.8-14.el7_2'
138 Notice: /Stage[main]/Checklist::Pacotes/Package[vim]/ensure: removed
139 Notice: Applied catalog in 8.23 seconds
140 
141 Perceba que não aparece nada sobre o openssh, pois ele já está atualizado, então o Puppet sabiamente ignora.
142 Finalizamos a instalação do Puppet server e cliente assim como a criação e aplicação de módulos de configuração.
143 Em outro tópico vou demonstrar como fazer a Orquestração com o Puppet e instalar o Plugin Facter para colher informações dos hosts.
144 Lembrando que a criação de módulos no Puppet é uma ciência, as possibilidades e otimizações são infinitas, dá para brincar bastante, o intuito deste tópico foi apenas fazer uma introdução, porém passe sempre aqui que postarei muitas coisas legais.
145 Obrigado