Puppet: validación de la configuración de Puppet
En Puppet, la configuración se puede probar localmente. Por lo tanto, una vez que hemos configurado Puppet master y node, es hora de validar la configuración localmente. Necesitamos tener Vagrant y Vagrant Box instalados localmente, lo que ayuda a probar la configuración localmente.
Configuración de la máquina virtual
Como estamos probando la configuración localmente, en realidad no necesitamos un Puppet master en ejecución. Esto significa que sin realmente ejecutar Puppet master en el servidor, podemos simplemente usar Puppet para aplicar el comando para la validación de configuración de Puppet. El comando de aplicación de marionetas aplicará los cambios delocal/etc/puppet dependiendo del nombre de host de la máquina virtual en el archivo de configuración.
El primer paso que debemos realizar para probar la configuración es construir lo siguiente Vagrantfile y poner en marcha una máquina y montar el /etc/puppetcarpeta en su lugar. Todos los archivos que se requieran se colocarán dentro del sistema de control de versiones con la siguiente estructura.
Estructura de directorios
- manifests
\- site.pp
- modules
\- your modules
- test
\- update-puppet.sh
\- Vagrantfile
- puppet.conf
Archivo vagabundo
# -*- 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
En el código anterior, hemos utilizado el aprovisionador de Shell en el que intentamos ejecutar un script de Shell llamado update-puppet.sh. El script está presente en el mismo directorio donde se encuentra el archivo Vagrant y el contenido del script se enumera a continuación.
!/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
Procesamiento adicional, el usuario debe crear un archivo de manifiesto dentro del directorio Manifests con el nombre site.pp que instalará algún software en VM.
node 'brclelocal03.brcl.com' {
package { ['vim','git'] :
ensure => latest
}
}
echo "Running puppet"
sudo puppet apply /etc/puppet/manifests/site.pp
Una vez que el usuario tiene listo el script anterior con la configuración de archivo Vagrant requerida, el usuario puede acceder al directorio de prueba y ejecutar el vagrant up command. Esto iniciará una nueva máquina virtual, más tarde, instalará Puppet y luego lo ejecutará usando el script de Shell.
Lo siguiente será la salida.
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'
Validación de la configuración de varias máquinas
Si necesitamos probar la configuración de varias máquinas localmente, puede hacerlo simplemente haciendo un cambio en el archivo de configuración de Vagrant.
Nuevo archivo vagabundo 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
Supongamos que tenemos un nuevo servidor de producción, que necesita la utilidad SSL instalada. Solo necesitamos extender el manifiesto antiguo con la siguiente configuración.
node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' {
package { ['SSL'] :
ensure => latest
}
}
Después de realizar cambios de configuración en el archivo de manifiesto, solo necesitamos movernos al directorio de prueba y ejecutar el comando básico de vagrant up que mostrará ambos brclelocal003.brcl.com y brcleprod004.brcl.commáquina. En nuestro caso, estamos tratando de poner en funcionamiento la máquina de producción, lo que podría hacerse ejecutando elvagrant up production command. El creará una nueva máquina con el nombre de producción como se define en el archivo Vagrant y tendrá el paquete SSL instalado en él.