Puppet - Validando a configuração do Puppet
No Puppet, a configuração pode ser testada localmente. Portanto, uma vez que configuramos o mestre e o nó do Puppet, é hora de validar a configuração localmente. Precisamos ter o Vagrant e o Vagrant box instalados localmente, o que ajuda a testar a configuração localmente.
Configurando a Máquina Virtual
Como estamos testando a configuração localmente, não precisamos de um mestre Puppet em execução. Isso significa que, sem realmente executar o Puppet master no servidor, podemos simplesmente usar o Puppet para aplicar o comando para validação de configuração do Puppet. O comando Puppet apply aplicará as alterações delocal/etc/puppet dependendo do nome do host da máquina virtual no arquivo de configuração.
A primeira etapa que precisamos realizar para testar a configuração é construir o seguinte Vagrantfile e inicie uma máquina e monte o /etc/puppetpasta no lugar. Todos os arquivos necessários serão colocados dentro do sistema de controle de versão com a seguinte estrutura.
Estrutura de Diretório
- manifests
\- site.pp
- modules
\- your modules
- test
\- update-puppet.sh
\- Vagrantfile
- puppet.conf
Arquivo Vagrant
# -*- mode: ruby -*-
# vi: set ft = ruby :
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", 1028, "--cpus", 2]
end
# Mount our repo onto /etc/puppet
config.vm.synced_folder "../", "/etc/puppet"
# Run our Puppet shell script
config.vm.provision "shell" do |s|
s.path = "update-puppet.sh"
end
config.vm.hostname = "localdev.example.com"
end
No código acima, usamos o provisionador Shell no qual estamos tentando executar um script Shell chamado update-puppet.sh. O script está presente no mesmo diretório onde o arquivo Vagrant está localizado e o conteúdo do script está listado abaixo.
!/bin/bash
echo "Puppet version is $(puppet --version)"
if [ $( puppet --version) != "3.4.1" ]; then
echo "Updating puppet"
apt-get install --yes lsb-release
DISTRIB_CODENAME = $(lsb_release --codename --short)
DEB = "puppetlabs-release-${DISTRIB_CODENAME}.deb"
DEB_PROVIDES="/etc/apt/sources.list.d/puppetlabs.list"
if [ ! -e $DEB_PROVIDES ]
then
wget -q http://apt.puppetlabs.com/$DEB
sudo dpkg -i $DEB
fi
sudo apt-get update
sudo apt-get install -o Dpkg::Options:: = "--force-confold"
--force-yes -y puppet
else
echo "Puppet is up to date!"
fi
Processamento posterior, o usuário precisa criar um arquivo de manifesto dentro do diretório Manifests com o nome site.pp que irá instalar algum software no VM.
node 'brclelocal03.brcl.com' {
package { ['vim','git'] :
ensure => latest
}
}
echo "Running puppet"
sudo puppet apply /etc/puppet/manifests/site.pp
Depois que o usuário tiver o script acima pronto com a configuração do arquivo Vagrant necessária, o usuário pode fazer o cd para o diretório de teste e executar o vagrant up command. Isso irá inicializar uma nova VM, mais tarde, instalar o Puppet e executá-lo usando o script Shell.
A seguir será a saída.
Notice: Compiled catalog for localdev.example.com in environment production in 0.09 seconds
Notice: /Stage[main]/Main/Node[brclelocal03.brcl.com]/Package[git]/ensure: created
Notice: /Stage[main]/Main/Node[brcllocal03.brcl.com]/Package[vim]/ensure: ensure changed 'purged' to 'latest'
Validando a configuração de várias máquinas
Se precisarmos testar a configuração de várias máquinas localmente, isso pode ser feito simplesmente alterando o arquivo de configuração do Vagrant.
Novo arquivo Vagrant configurado
config.vm.define "brclelocal003" do |brclelocal003|
brclelocal03.vm.hostname = "brclelocal003.brcl.com"
end
config.vm.define "production" do |production|
production.vm.hostname = "brcleprod004.brcl.com"
end
Vamos supor que temos um novo servidor de produção, que precisa do utilitário SSL instalado. Precisamos apenas estender o manifesto antigo com a seguinte configuração.
node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' {
package { ['SSL'] :
ensure => latest
}
}
Depois de fazer alterações de configuração no arquivo de manifesto, só precisamos ir para o diretório de teste e executar o comando vagrant up básico que abrirá ambos brclelocal003.brcl.com e brcleprod004.brcl.commáquina. Em nosso caso, estamos tentando trazer a máquina de produção, o que poderia ser feito executando ovagrant up production command. O irá criar uma nova máquina com o nome de produção conforme definido no arquivo Vagrant e terá o pacote SSL instalado nela.