Puppet 5 Bien encoder ses fichiers de configuration

logo puppet

23 décembre 2018 | Posted in puppet | By

Avant de se lancer dans la configuration de nos environnements, il est bon de voir ensemble comment bien rédiger vos fichiers de configuration.

Dans ce tutoriel, je vais vous montrer quelques principes de bases, vous trouverez bien plus d’informations, en anglais, dans la documentation disponible ici

Bonne pratiques pour encoder les modules

Commentaire

On ne le répète jamais assez !! Les commentaires sont vitales. Même s’ils sont chronophages à la création, ils vous feront gagner un temps appréciable quand vous devrez faire une modification. De plus ils pérenniseront votre code. 

Pour commenter on utilise # , ne pas utiliser /* */

Espacement, indentation et espaces

Voici les bonnes pratiques en matière d’espacement, indentation et espace dans vos fichiers Manifest.

  • Utilisez un double espace à la place de la tabulation
  • Ne pas utilisez la tabulation
  • Pas d’espace en fin de ligne
  • En fin de ligne, mettre une virgules après tous les attributs de ressource et définitions de paramètres.
  • Mettre un espace entre le type de ressource et l’accolade ouvrante et le titre, mais aucun espace entre le titre et les deux points.
  • On utilise le double espace pour décaler son code entre chaque sous-élément.

Exemple :

Quote

Toutes les chaines doivent être entre simples quotes, à quelques exceptions :

  • double quote pour une chaine qui contient des variables
  • double quote pour une chaine contenant des simples quotes
  • double quote si présence de caractères d’échappement.
  • Les quotes sont optionnelles pour les options (present, absent,)

Important, si une variable doit être interprétée placé la entre accolade {}

exemple :

Caractère d’échappement

Comme souvent le caractère d’échappement est : \

Si votre \ se trouve dans une chaine entre simple ou double quote, il faut en mettre deux, pour ne pas être pris pour un échappement.

Tableaux et hashes

Afin d’améliorer la lisibilité des tableaux et hachages, il est conseillé de mettre chaque élément sur des lignes séparées.
Faire un retrait de deux espaces entre la définition du tableau et ses éléments.

Pour le hachage, pensez à bien aligner avec des espaces vos =>

Exemple :

Variables

Puppet demande à ce que le nommage des variables soit explosées avec _

Exemple de ce qu il ne faut pas faire :

Et voila comment il faut les définir :

Vous trouverez bien d’autres informations dans la documentation que je vous ai mis en début de tutoriel. A vous de jouer

Read More...

Puppet Server commandes principales et architecture

logo puppet

23 décembre 2018 | Posted in puppet | By

Dans les tutoriels précédents, nous avons vu comment installer le puppetserver, ainsi que l’installation de l’agent puppet.
Nous allons maintenant voir ensemble les principales commandes utiles de Puppet et où sont rangés les fichiers de configurations.

Architecture fichier de configuration

La configuration de votre Puppetserver 5 se fait dans le dossier /etc/puppetlabs/code , vous y retrouverez deux répertoires :

  • environments => pour les fichiers de configurations des différents environnements rangés en sous dossiers. Chaque environnement contient un sous dossier manifests pour les fichiers de configuration et un sous dossier modules pour l’utilisation de modules modifiés pour cet environnement
  • modules => pour factoriser votre code, par exemple créer une class pour installer un logiciel. vous y mettez les modules commun à tous ainsi que vos propres créations.

Remarque: j ai noté lors de l installation de modules depuis la forge un souci. Contrairement à ce qui devrait se passer, le module ne s’installe pas dans /etc/puppetlabs/code/modules, mais dans l’environnement de production /etc/puppetlabs/code/environments/production/modules. Ce qui peux poser un problème si vous avez plusieurs environnements.


Commandes Puppet

puppet parser

Plus qu’appréciable, cette commande permet de valider votre syntaxe dans un fichier de configuration. Imaginons le fichier site.pp, qui décrit les nodes d’un environnement. Pour vérifier que vous n’avez aucune erreur de syntax :

 

 puppet config

commande permettant d afficher, modifier la configuration de puppet. Permet, en autre, de vérifier si un paramètre à bien été pris en compte.

Affichage

Permet d afficher la configuration de puppet.

Vous pouvez ciblez la section avec l argument –section

Vous pouvez cibler une variable de configugation :

Modification

Vous pouvez aussi modifier directement une variable et même spécifier la section que vous voulez modifier. Si vous ne spécifiez pas cela sera en général.

modifions par exemple le paramétrage de l’emplacement des modules

puppet module

L’ensemble des commandes puppet module permet la gestion complète des modules de votre Puppet

Liste des modules Puppet installés

Rechercher un module Puppet

Installer un module Puppet

Lorsque que l’on installe un module dans un serveur Puppet à multiple environnement, vous avez la possibilité de spécifier où le rendre disponible.

Si vous ne spécifiez pas l’environnement le plugin s’installera dans l’environnement par défaut.

Mise un jour d’un module Puppet

Désinstaller un module Puppet

Puppet cert

On a déjà vu dans un tutoriel précédent cette commande, qui permet de gérer les certificats entre le serveur et les nodes.

Lister les certificats en attente de validation

Ajouter un certificat

Révoquer un certificat

 

Read More...

Puppet 5, Comprendre et interconnexion agent – serveur

logo puppet

5 décembre 2018 | Posted in puppet | By

Vous avez maintenant une installation de puppet accouplé à l’interface web Foreman. (voir le tutorial ici).
Après avoir fait un petit point sur ce que fait puppet et ses principes de fonctionnement, nous allons maintenant voir comment rajouter un ordinateur que vous voulez gérer dans votre infrastructure Puppet. Nous verrons aussi rapidement les commandes principales du Puppet server.

Principe de Base de Puppet

Puppet c’est simple. Nous sommes sur le principe de base client/serveur. Le serveur étant le puppetserver, les clients sont les puppet-agent qui sont installés sur les ordinateurs ou serveurs à configurer, on les appelles aussi les nodes.

Le puppet-agent discute avec le puppetserver de manière crypter à l’aide d’un certificat propre à chaque node. Il en découle que lors de l’installation du Puppet agent, au premier lancement vous aurez un message d’erreur, il faudra d’abord valider la demande de certificat auprès du Puppetserver. Il en découle aussi que si vous réinstallez le Puppet agent après une réinstallation de système d’exploitation, il faudra révoquer l’ancien certificat pour accepter le nouveau.

L’agent Puppet embarque avec lui une couche logiciel qui s appelle Facter. Cet Outil va faire un état des lieux et mettre à disposition de nombreuses informations sous forme de variable. Le gros intérêt est que nous allons pouvoir grâce à ces variables scripter nos installations pour les rendre modulables suivant la machines.

Dans le Puppetserver, nous pouvons définir des environnements qui représentent par exemple des services (compta, bureau d’étude, serveur) en production ou en phase de test. L’agent Puppet lors de son installation sera configuré pour être raccordé à un environnement.

Chaque environnement dispose de ses manifests, ceux sont les fichiers qui décrivent l’état dans lequel le node doit se trouver. Lorsque vous installer l’agent vous définissez l’environnement auquel vous rattachez votre node. A chaque lancement, l agent va demander au Puppetserver l’état dans lequel il doit se trouver , le comparer grâce à Facter et appliquer les modifications.

Puppet peut :

  • installer un logiciel ou le désinstaller
  • installer une imprimante réseaux
  • modifier des fichiers textes
  • gérer des utilisateurs, groupes et acl
  • modifier des bases de registres
  • déposer des fichiers

Pour gérer tout cela, le Puppetserver se base sur des modules, la liste des modules installables est disponible ici : liste des modules puppet (en Anglais)

Ajout d’un ordinateur

Afin de télécharger la bonne version de l’agent, connectez vous sur votre serveur Puppet :

puppet status
vous devriez avoir un résultat comme suit :

{
"is_alive": true,
"version": "5.5.8"
}

Nous allons donc télécharger l’agent pour la version 5.5.8.

Sous Windows

Lien pour télécharger votre agent puppet : https://downloads.puppetlabs.com/windows/puppet5/
Lien vers la documentation en anglais : https://puppet.com/docs/puppet/5.5/install_windows.html

Après avoir télécharger votre installeur en 32 ou 64 bits, voici les etapes :

next installation puppet agent windows

licence installation puppet agent windows

1 on accepte, 2 suivant

parametre installation puppet agent windows

1 url de votre puppet master , 2 suivant

installation puppet agent windows

fin installation puppet agent windows

Voila votre agent est installé, mais ce n’est pas encore fini.

Nous devons maintenant faire le nécessaire pour le certificat.

Pour cela lancer une première fois l agent Puppet

lancement puppet agent windowsVous aurez alors ce résultat :

puppet agent certificat nokComme vous pouvez le voir, pas de certificat trouvé.

Il faut néanmoins faire cette étape qui permet au Puppetserver de savoir qu’un agent est en attente de validation.

Suivez l’étape Autorisation du certificat

Lorsque cela est fait relancer votre Puppet agent, vous aurez alors ce résultat :

puppet agent cert ok

Le fichier de configuration de l’agent se trouve  par défaut:
C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf
Vous pourrez y définir votre environnement pour cet agent, il est par défaut sur production.

Sous Linux

Lien vers la documentation en anglais : https://puppet.com/docs/puppet/5.5/install_linux.html

Tout comme pour le serveur on commence par rajouter le dépôt Puppet :

cd && wget https://apt.puppetlabs.com/puppet5-release-stretch.deb
dpkg -i puppet5-release-stretch.deb

Le fichier sources pour apt est installé nous allons maintenant faire en sorte que nous soyons bien sur Puppet version 5.

vim /etc/apt/sources.list.d/puppet.list

changez :
deb http://apt.puppetlabs.com stretch puppet
en
deb http://apt.puppetlabs.com stretch puppet5

On installe le paquet puppet-agent
apt update && apt install puppet-agent

On ajoute maintenant à notre terminal le PATH pour l’exécutable Puppet.
echo "PATH=\$PATH:/opt/puppetlabs/puppet/bin" >> ~/.bashrc
source .bashrc

Nous devons maintenant configurer notre agent puppet :

Éditez le fichier /opt/puppetlabs/puppet/puppet.conf et coller ceci à la fin :

[main]
certname = nom.machine
server = url.puppetserver
environment = production

Modifiez les éléments en gras suivant votre configuration.
Nous lancons maintenant la génération du certificat :
puppet agent --test
Voici le résultat :

Suivez l’étape Autorisation du certificat

Relancez la dernière commande :
puppet agent --test

puppet agent debian test ok

Autorisation du certificat

Comme je vous l’expliquez précédemment il faut maintenant autoriser le certificat . Depuis le serveur puppet, tapez ceci pour voir les certificats en attente de validation :

puppet cert list
vous aurez alors ce résultat :

puppet cert listOn voit que nous avons une machine w7-test-ibe en attente.

Nous allons la rajoutez

puppet cert sign w7-test-ibe
puppet cert sign
Voila votre agent est maintenant opérationnel.

Read More...

Installation Puppet et Foreman sous debian Stretch

logo puppet

3 décembre 2018 | Posted in puppet | By

Vous cherchez à automatiser vos déploiements DevOps et la gestion de votre parc informatique rapidement, puppet est l’outil qu’il vous faut. Je vous laisse le soin de chercher sur internet pour mieux comprendre les possibilités de software.

Puppet en version opensource n est pas fourni avec une interface web de gestion, c est pour cela que dans ce tutorial nous allons déployé puppet grace à foreman.

Il est à noté qu’a leur actuel, foreman ne supporte puppet que dans sa version 5

Préambule

C’est parti, comme d’habitude nous allons partir d’un debian stretch 64 bits from scratch.
Nous allons installer simplement 3 plugins de base pour travailler.

apt update
apt install vim ca-certificates certbot

Installation

En tout premier lieu nous allons installer et configurer le dépot puppet. Attention le dépôt va être configuré pour utiliser la dernière version de puppet c’est à dire la 6. Nous devrons donc le modifier.

cd && wget https://apt.puppetlabs.com/puppet5-release-stretch.deb
dpkg -i puppet5-release-stretch.deb

Le fichier sources pour apt est installé nous allons maintenant faire en sorte que nous soyons bien sur puppet version 5.

vim /etc/apt/sources.list.d/puppet.list

changez :
deb http://apt.puppetlabs.com stretch puppet
en
deb http://apt.puppetlabs.com stretch puppet5

Maintenant nous configurer les dépôts de foreman.

echo "deb http://deb.theforeman.org/ stretch 1.20" | tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.20" | tee -a /etc/apt/sources.list.d/foreman.list
wget -q https://deb.theforeman.org/pubkey.gpg -O- | apt-key add -

Avant de lancer l’installation, nous devons vérifier deux points importants :

  • L’installation va générer un certificat SSL, pour cela il faut que le nom de domaine que vous allez utilisez soit bien dans le fichier /etc/hosts et ne ping pas sur l’adresse ip 127.0.1.1.
    Pour cela on test comme ceci :
    ping $(hostname -f)
    Si ce n’est pas le cas modifier votre fichier /etc/hosts afin de cela corresponde.
    exemple
    178.33.44.78 foreman.site.com foreman
    et le fichier hostname /etc/hostname
    foreman.site.com
  • si votre système est en français il faut changer les locales, en effet foreman à cause de Postgrel génère des erreurs si le système n’est pas en en_US.
    dpkg-reconfigure locales
    et sélectionnez en_US.UTF8 et en faire la langue par défaut.

Voila maintenant nous pouvons lancer l’installation, nous commencons par installer l’installeur qui va de plus mettre en place les paquets nécessaire en prérequis. Puis nous lançons l’installeur.

apt update && apt -y install foreman-installer

foreman-installer

Si tout ce passe bien vous vous retrouverez avec ceci à la fin :
resultat foreman puppet

L’installeur vous récapitule les informations essentielles , tel que :

  • l’url de votre foreman qui doit correspondre à votre hostname
  • votre couple login / mot de passe.

Voici le résultat :

foreman website

Enfin faisons en sorte que depuis notre terminal sur le serveur nous puissions lancez facilement les lignes de commande de gestion Puppet :

echo "PATH=\$PATH:/opt/puppetlabs/puppet/bin:/opt/puppetlabs/server/bin" >> ~/.bashrc

 

Félicitation vous venez juste d’installer ce qu’il vous faut pour commencer à faire du DevOps. Dans les prochains tutoriaux sur puppet, nous verrons comment configurer et déployer.

 

Read More...