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:

Single command server deployment

Written by Ger Apeldoorn. Posted in Sysadmin

This article is in English because it was mentioned in a PuppetLabs newsletter.

Although Puppet Enterprise gives you the wonderful tools to automate your Linux administration, you still cannot deploy a server with a single command. With the following script, you can.

Why is this so cool?

When, for instance, a new Tomcat server is needed, I create a DNS entry for that server and give a single command and get some coffee. Before it has cooled down enough to drink, the developer has his Tomcat-app deployed and the server is operational. (It takes about 8 minutes to get from scratch to a fully operational server.)

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:

Environments en Git, een must!

Written by Ger Apeldoorn. Posted in Sysadmin

Met environments kun je verschillende versies van je manifests en modules zij-aan-zij gebruiken. Zo is het mogelijk om een ‘development’, ‘testing’ en ‘production’-environment maken op een enkele server. In de configuratie van je nodes (de gemanagede servers) geef je aan bij welke environment de node hoort.

Versioning van je manifests en modules is ook ontzettend belangrijk, bovendien kun je hier goed gebruik van maken wanneer je je code van je development environment naar testing, en vervolgens naar production door te zetten. De versioning tool die ik hier laat zien is Git.

Nog even ter verduidelijking; wijzig NOOIT je Puppet manifests/modules in produktie. Mocht je dit toch voornemens zijn, bookmark dan even deze link: LINK

Git repository maken

Git is enorm krachtig en kan ontzettend veel. Het is ook een redelijk complexe tool om te gebruiken en ik heb dan ook niet de illusie dat ik je in dit korte artikel de ins- en outs kan bijbrengen. Ik ga je wel de setup-procedure laten zien voor een nieuwe GIT repository, waar we onze Hieradata mee gaan managen.

We willen uiteindelijk 3 kopieen van onze datafiles hebben, elk ervan is een GIT repository:

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:

De ideale werkomgeving (voor mij dan)

Written by Ger Apeldoorn. Posted in Sysadmin

Een goede editor is onmisbaar bij het schrijven van welke code dan ook. Ik een hekel aan opgeblazen IDE’s waarmee ik veel tijd kwijt ben aan het browsen/zoeken door het menu, of de muis moet grijpen om dingen gedaan te krijgen.

Sublime Text 2

Sublime Text is een cross-platform editor die met kop en schouders boven alle andere uitsteekt. Er zijn erg goede plugins voor te vinden die echt helpen bij het schrijven van je Puppet code.