Les bases de Puppet

Manifeste

Un manifeste Puppet est un fichier .pp, qui contient la liste des instructions a effecuter sur les différents agents.

Déploiement master/agent

Déploiement local

La commande puppet apply permet d’exécuter des manifestes autres que celui par défaut, sur l’hôte en cours. C’est utile si vous souhaitez tester un nouveau manifeste ou installer les dépendances d’une application par exemple.

puppet apply /path/to/your/manifest/init.pp

Valider un manifeste

Pour valider la syntaxe d’un manifeste:

puppet parser validate motd.pp

Ressources

Les instructions du manifeste sont définies en déclarant des ressources.
Les ressources peuvent représenter des packages, fichiers, services, utilisateur, commandes, etc. Types de resources
Il est possible de créer des types de ressources personnalisés en définissant des plugins. Custom Types

Les types de ressources natifs les plus courants sont:

Puppet utilise le RAL (Resource Abstraction Layer) pour abstraire les types de ressources de l’implémentation technique: on peut utiliser la même ressource quel que soit le système d’exploitation/distribution utilisé.

Ordre d’execution

Puppet n’évalue pas les ressources dans l’ordre dans lesquelles elles sont définies. Lorsque l’ordre est important, il faut définir explicitement les dépendances entre les ressources pour garantir que la ressource A sera exécutée avant la ressource B.


Variables

On peut définir des variables dans le manifeste — à tout endroit. Les types des variables les plus courants sont les chaînes de caractères et les tableaux, mais d’autres types sont également supportés, tels que les booléens et objets.

$package = "vim"

package { $package:
   ensure => "installed"
}
file { '/root/README':
  ensure  => file,
  content => "Welcome to ${fqdn}\n",
}

Facter


Boucles

La façon la plus simple de répéter une même tâche avec des valeurs différentes est d’utiliser un tableau. Puppet lancera la tâche autant de fois qu’il y a d’éléments.

$packages = ['vim', 'git', 'curl']

package { $packages:
   ensure => "installed"
}

Depuis la version 4, on peut également utiliser un curseur. Cela donne plus de flexibilité dans la manière de nommer les ressources:

$packages.each |String $package| {
  package { $package:
    ensure => "installed"
  }
}

Conditions

Les conditions peuvent être utilisées pour décider dynamiquement si un bloc de code doit être exécuté ou non, selon une variable ou le résultat d’une commande.


Templates

Les templates sont généralement utilisés pour générer dynamiquement des fichiers de configuration, en utilisant des varibles et autres fonctions de manière à rendre ces fichiers réutilisables.
Puppet supporte deux format différents: EPP (Embedded Puppet) et ERB (Embedded Ruby). Le format EEP existe depuis Puppet 4.0


Services

Les services peuvent être utilisés pour initialiser, activer ou rédemarrer un daemon après avoir effectué une action