Mudanças entre as edições de "Puppet"
(→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: | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
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 |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
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”. | ||
| − | + | # 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
Índice
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.
- source /etc/profile.d/puppet-agent.sh
Edite o puppet.conf e aponte para o server Puppet Server.
- 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.
- 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
- 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