Introduction
Puppet est le service de gestion des déploiements d'infrastructure que nous utilisons au sein de l'infrastructure cloud de la Soce. Il permet d'uniformiser nos installations et de pouvoir les reproduire l'infini dans le cadre d'une réinstallation. A noter qu'ormis le système d'exploitation tous les composants de base d'un serveur sont déployé via puppet.
Info |
---|
Ce service est interne mais nous pourrons éventuellement publier certains de nos modules afin de les partager avec la communauté Opensource. |
Info |
---|
Quand consul sera déployé : Puppet est enregistré dans le consul de gadz.org via l'entrée service puppet : puppet.service.consul |
Notes et liens utiles
Versionner les conf de puppet avec plusieurs environnements: https://puppet.com/blog/git-workflows-puppet-and-r10k
Installation de base
- Création du service puppet :
...
Bloc de code |
---|
127.0.0.1 puppet |
Configuration
Le fichier de configuration de puppet est le suivant. Puppet dialogue avec ldap (LDAP-SI) pour authentifier les machines clientes par leurs noms et leurs ips.
Bloc de code | ||
---|---|---|
| ||
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
server=toutatis.gorgu.net
[master]
node_terminus = ldap
ldapserver = ldapsi.service.consul
ldapbase = ou=Hosts,ou=SI,dc=gadz,dc=org
ldapuser = cn=puppetmaster,cn=users,dc=gadz,dc=org
ldappassword = <confidentiel>
environmentpath = /etc/puppet/environment |
La gestion des environnements est dynamique c'est a dire que dans le répertoire /etc/puppet/environnement se trouve un clone git par environnement.
Astuce |
---|
Pour les admin chaque environnement correspond a une branche dans le dépôt puppet.git : https://git.gadz.org/git/puppet.git ou git+ssh://[email protected]/puppet.git |
Nom des modules
Modules installés sur chaque serveur :
Package / fonction | Nom module dans puppet | Interne ou url si issue de la forge | Status | ||||||
---|---|---|---|---|---|---|---|---|---|
stdlib (puppet lib + ressources pour les modules) | puppetlabs-stdlib | https://forge.puppet.com/puppetlabs/stdlib |
| ||||||
sysstat | acme-sysstat | https://forge.puppet.com/acme/sysstat |
| ||||||
ntp | |||||||||
vim | dhoppe-vim | https://forge.puppet.com/dhoppe/vim |
| ||||||
htop | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
git | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
openssh serverr + client | ssh | interne |
| ||||||
puppet agent | - | ||||||||
telegraf | datacentred-telegraf | https://forge.puppet.com/datacentred/telegraf |
| ||||||
collectd | collecd | interne |
| ||||||
pam-ldap | ldapuser | interne |
| ||||||
sudo-ldap | ldapuser | interne |
| ||||||
wget | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
curl | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
dns-utils | |||||||||
postfix | dhoppe/postfix | https://forge.puppet.com/dhoppe/postfix |
| ||||||
rsync-backup | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
ldap-utils | ldap-client | interne | |||||||
nrpe | nrpe | interne |
| ||||||
apt-cron | |||||||||
locales | saz-locales | https://forge.puppet.com/saz/locales |
| ||||||
logrotates | yo61-logrotate | https://forge.puppet.com/yo61/logrotate | |||||||
zsh | counsyl-sys | https://forge.puppet.com/counsyl/sys |
| ||||||
vmware-tools | razorsedge-vmwaretools | https://forge.puppet.com/razorsedge/vmwaretools |
| ||||||
authorized keys de l’user root | ssh | interne | |||||||
Un user local “prod” pour maintenance & sauvegarde | |||||||||
firewall (netfilter-persistent) | firewall | interne |
| ||||||
dns via gadz.org |
Modules installés sur certains serveurs :
Package / fonction | Nom module dans puppet | Interne ou url si issue de la forge |
---|---|---|
nfs server | nfs | https://forge.puppet.com/derdanne/nfs |
Installation d'un module depuis la forge
Bloc de code | ||
---|---|---|
| ||
puppet module install $NOM_DU_MODULE --environment $ENVIRONEMENT --modulepath /etc/puppet/environment/$ENVIRONEMENT/modules
#exemple :
puppet module install acme-sysstat --environment production --modulepath /etc/puppet/environment/production/modules |