Berichten met een Label ‘best-practices’

Puppet 3 cookbook review

Written by Ger Apeldoorn. Posted in Nieuws

Onlangs is er een nieuwe versie uitgekomen van het Puppet Cookbook door John Arundel. De uitgever is zo vriendelijk geweest om mij een kopie toe te sturen voor review.

Het boek is eigenlijk een verzameling van tips en brengt nuttige ideeën die je kunt gebruiken. Het varieert van de basics tot redelijk geavanceerd en het betrekt ook enkele externe hulpmiddelen (zoals git, hiera, vagrant) hierbij. Door de vaste structuur waarmee elke tip is opgebouwd lees het boek makkelijk weg.

Wat ik jammer vind is dat bij alle voorbeelden zelfgemaakte modules wordt gebruikt, terwijl het vaak handiger is om om goede module van de Forge te downloaden. Daarnaast komende behandelde onderwerpen redelijk willekeurig over.

Alles bij elkaar vind ik dit boek toch een aanrader. Hoewel de informatie ook wel te vinden is op het internet, kun je bij het doorbladeren van dit boek nuttige ideeën opdoen. Door de vaste structuur is elke tip makkelijk toe te passen.

Webshop uitgever

Betere versienummers bij Puppet runs

Written by Ger Apeldoorn. Posted in Sysadmin

Bij elke Puppetrun wordt er een configuratieversie getoont, dit is een nummer gebaseerd op datum/tijd.

Voorbeeld:

# puppet agent -t
info: Retrieving plugin
----%<----
info: Caching catalog for web99.puppetspecialist.nl
info: Applying configuration version '126374558'

Aangezien wij onze manifests en hiera-data met Git beheren (en die met tags uitrollen) kunnen we daar natuurlijk beter iets aan koppelen waar we wat aan hebben:

# puppet agent -t
info: Retrieving plugin
----%<----
info: Caching catalog for web99.puppetspecialist.nl
info: Applying configuration version '3.18.0/1.11.0/development'

Zoals je hierboven kunt zien is het versienummer uit 3 componenten opgebouwd:

  • Tag Manifests
  • Tag Hieradata
  • Environment

Daar heb je tenminste wat aan!

Om dit voorelkaar te krijgen, moeten we een paar handelingen verrichten:

  • Script plaatsen
  • Configuratie Puppet Master aanpassen
  • Puppet Master restarten

Script

Maak een scriptje aan (/etc/puppetlabs/puppet/version.sh) met de volgende inhoud:

#!/bin/bash
MANVER=$(git --git-dir=/etc/puppetlabs/puppet/environments/$1/.git describe --tags)
DATVER=$(git --git-dir=/etc/puppetlabs/puppet/environments/$1_data/.git describe --tags)

echo "$MANVER/$DATVER/$1"

Maak hem executable:

chmod +x /etc/puppetlabs/puppet/version.sh

Configuratie Puppet Master

Voeg aan /etc/puppetlabs/puppet/puppet.conf het volgende regeltje toe onder [main].

config_version = /etc/puppetlabs/puppet/version.sh $environment

Restart Puppet Master

Als laatste restarten we nog even de PUppet Master om de configuratiewijziging te activeren:

/etc/init.d/pe-httpd restart

Hiera in gebruik

Written by Ger Apeldoorn. Posted in Sysadmin

Voor dit artikel ga ik ervan uit dat je Hiera al hebt ingericht. Mocht dit nog niet zo zijn, lees dan eerst onderstaande artikelen voor meer achtergrondinformatie.

Een simpele waarde ophalen

Een waarde ophalen uit Hiera is bijzonder eenvoudig! Puppet kent de functie hiera(), deze doet al het werk voor je.

Laten we met een voorbeeldje werken, aanschouw dit YAML-bestand:

Puppet en Hiera update configuratie workflow

Written by Ger Apeldoorn. Posted in Sysadmin

Je hebt iets prachtigs gemaakt in de ‘development’ environment en wilt dit doorzetten naar ‘testing’. Hier vind je een handige manier om dat te doen.

Bij dit stukje ga ik van het volgende uit:

Van start: Enkele wijzigingen lokaal committen

Eerst maar eens naar de juiste directory:

Hiera inrichten

Written by Ger Apeldoorn. Posted in Sysadmin

De meeste Puppet inrichtingen hebben veel baat bij Hiera. Je manifests worden nodeloos complex of onoverzichtelijk omdat er data in komt. Met de tool Hiera kun je eenvoudig de data scheiden van je manifests. Hier vind je meer goede redenen om Hiera te gebruiken.

In dit artikel ga ik ervan uit dat je al Environments gebruikt voor je manifests, klik hier om te tonen hoe je dat kunt opzetten met Git.

Waarom Hiera?

Written by Ger Apeldoorn. Posted in Sysadmin

Intro

Als je een tijdje aan het bouwen bent geweest, kom je er waarschijnlijk op enig moment achter dat het bestand waar je de nodes classificeert (sites.pp of nodes.pp) niet erg overzichtelijk meer is.

Voor veel servers zijn er toch individuele settings nodig, je hebt bijvoorbeeld op elke webserver weer andere virtualhosts.

Dit ziet er dan bijvoorbeeld zo uit: