Les Manifests
Les manifests sont les scripts puppet qui sont à jouer sur les clients.
ils sont dans le répertoire /etc/puppet/code/environment/****/manifests/ portant le nom manifest_a_wam.pp.
Les ressources
une ressource est une définition d'objet pour puppet, ex :
user { 'mitchell':
ensure => present,
uid => '1000',
gid => '1000',
shell => '/bin/bash',
home => '/home/mitchell'
}
Lister les ressources :
puppet resource --types
Les classes
Une classe est un bloc de code qui ne sera exécuté que quand appelé ailleurs, ex :
class example_class {
...
code
...
}
il y'a encre beaucoup d'objets : exec, package, service, file, certains étant déclaratifs (exec, qui va créer une commande pour un autre objet) et d'autre d'ordre impératif (package, service, file, qui vont bien procéder à l'installation ou autre tache)
Exemple de Manifest lamp.ppter
# execute 'apt-get update'
exec { 'apt-update': # exec resource named 'apt-update'
command => '/usr/bin/apt-get update' # command this resource will run
}
# install apache2 package
package { 'apache2':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}
# ensure apache2 service is running
service { 'apache2':
ensure => running,
}
# install mysql-server package
package { 'mysql-server':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}
# ensure mysql service is running
service { 'mysql':
ensure => running,
}
# install php5 package
package { 'php5':
require => Exec['apt-update'], # require 'apt-update' before installing
ensure => installed,
}
# ensure info.php file exists
file { '/var/www/html/',
ensure => file,
content => '<?php phpinfo(); ?>', # phpinfo code
require => Package['apache2'], # require 'apache2' package before creating
}
Ce sont des exemples possibles de manifest, de la à dire que çà suffit à écrire un manifest qui sait ce qu'il doit faire si il est en centos 6 ou 8 ou debian 8 ou 9, ... !
Ansible reste quand même mon choix de prédilection de par le push plutot que le pull et aussi parce qu'il est bien conçu sans tomber dans l'usine atomique