Puppet - Convalida della configurazione di Puppet

In Puppet, la configurazione può essere testata localmente. Quindi, una volta che abbiamo impostato Puppet master e node, è il momento di convalidare la configurazione localmente. Abbiamo bisogno di installare localmente Vagrant e Vagrant box, il che aiuta a testare la configurazione localmente.

Configurazione della macchina virtuale

Poiché stiamo testando la configurazione a livello locale, in realtà non è necessario un Puppet master in esecuzione. Ciò significa che senza eseguire effettivamente il Puppet master sul server, possiamo semplicemente utilizzare Puppet per applicare il comando per la convalida dell'installazione di Puppet. Il comando Puppet applica applicherà le modifiche dalocal/etc/puppet a seconda del nome host della macchina virtuale nel file di configurazione.

Il primo passaggio che dobbiamo eseguire per testare la configurazione è creare quanto segue Vagrantfile e avvia una macchina e monta il file /etc/puppetcartella in posizione. Tutti i file necessari verranno inseriti nel sistema di controllo delle versioni con la seguente struttura.

Struttura delle directory

- manifests 
   \- site.pp 
- modules 
   \- your modules  
- test 
   \- update-puppet.sh 
   \- Vagrantfile 
- puppet.conf

File vagabondo

# -*- 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

Nel codice sopra, abbiamo utilizzato Shell provisioner in cui stiamo cercando di eseguire uno script Shell denominato update-puppet.sh. Lo script è presente nella stessa directory in cui si trova il file Vagrant e il contenuto dello script è elencato di seguito.

!/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

Ulteriore elaborazione, l'utente deve creare un file manifest all'interno della directory Manifests con il nome site.pp che installerà del software sulla VM.

node 'brclelocal03.brcl.com' { 
   package { ['vim','git'] : 
      ensure => latest 
   } 
} 
echo "Running puppet" 
sudo puppet apply /etc/puppet/manifests/site.pp

Una volta che l'utente ha lo script sopra pronto con la configurazione del file Vagrant richiesta, l'utente può accedere alla directory di test ed eseguire il vagrant up command. Questo avvierà una nuova VM, in seguito installerà Puppet e quindi lo eseguirà utilizzando lo script Shell.

Di seguito sarà l'output.

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'

Convalida della configurazione di più macchine

Se è necessario testare la configurazione di più macchine localmente, è possibile farlo semplicemente apportando una modifica nel file di configurazione di Vagrant.

Nuovo file Vagrant configurato

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

Supponiamo di avere un nuovo server di produzione, che richiede l'installazione dell'utilità SSL. Abbiamo solo bisogno di estendere il vecchio manifest con la seguente configurazione.

node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' { 
   package { ['SSL'] : 
      ensure => latest 
   } 
}

Dopo aver apportato modifiche alla configurazione nel file manifest, dobbiamo solo spostarci nella directory di test ed eseguire il comando di base vagrant up che farà apparire entrambi brclelocal003.brcl.com e brcleprod004.brcl.commacchina. Nel nostro caso, stiamo cercando di richiamare la macchina di produzione che potrebbe essere eseguita eseguendo ilvagrant up production command. Creerà una nuova macchina con il nome production come definito nel file Vagrant e avrà installato il pacchetto SSL.