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.
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
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
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 :
7) Teste Final :