Puppet
Intro
Puppet est un gestionnaire de configuration basé sur une DSL, on décrit l'état dans lequel la machine doit être à la fin du run de Puppet. Nous utilisons Git pour stocker les recettes Puppet afin de travailler de manière décentralisée, de sauvegarder, et de garder un historique.
Liens
- La doc Puppet
- La Forge Puppet
- Github puppet
Git
Configuration
Exemple de ~/.gitconfig
:
[user] name = John Doe email = john@doe.fr signingkey = 1337E42A [core] editor = vi [merge] tool = meld [color] ui = true log = auto branch = auto diff = auto status = auto
Récupération des repos GIT
Si vous ne souhaitez absolument pas modifier votre fichier |
Sinon ajoutez à votre fichier ~/.ssh/config
(voir https://repo.ldn-fai.net/)
Host gitldn Hostname repo.ldn-fai.net User git Port 2222
Puis pour lister les repos sur l'instance gitolite de repo.ldn-fai.net
(puppet-private)
Lire le fichier README.md. Il explique en détails la procédure à employer.
Résumé :
Utilisation
Architecture/Organisation
Les environments
L'infra actuelle est séparée en plusieurs environement :
- production : cet environment, suit la branch master du GIT, c'est l'env de référence, aussi celui par défaut de pupppet.
- feature: n environment (le nom de l'admin + celui de la feature, environment synchronisé par rsync entre le laptop de l'admin et le serveur (idéal pour faire des tests)).
Écriture de modules
Afin de garantir la pérennité de nos recettes en fonction des évolutions de puppet, il est nécessaire de suivre les coding styles du language puppet.
Attention | |
---|---|
Merci de lancer la commande ($ .scritps/validate) avant vos commit, et de corriger si des erreurs sont reportées (voir: |
Pour aider
- Il y a vi syntastic
- Ou des checks automatiques
Qualifier ses messages de commit GIT
Tout ceci dans le but, d'avoir un historique et des mails de commit compréhensibles et clairs.
"[module] Manifest - Modification message (closes: #bug)"
- Le nom du module entre crochets
- Suivi du manifest ou de la sous arbo dans laquelle on travaille
- Un message concernant notre modification
- Et enfin une référence si le commit clos ou résout un bug (closes/fixes/refs).
Exemple:
git commit -m "[ssh] Server - Add augeas lens for ssh configs (refs: #123)"
Sinon vous pouvez aussi regarder le git log :-)
Utilisation avec les scritps shell
Tester une configuration puppet en cours de développement
Envoyer la version de dev courante sur le serveur puppet (dans un environnement spécifique) :
./scripts/upload-env gabrielvpn
Appliquer l'environnement sur une machine :
ssh fry.ldn-fai.net sudo puppet agent --noop -t --environment=gabrielvpn
Appliquer l'environnement sur une machine :
ssh fry.ldn-fai.net sudo puppet agent -t --environment=gabrielvpn
Infrastructure
Ajouter un client
- Installer puppet
- Vérifier le FQDN, et corriger au besoin dans
/etc/hosts
- S'enregistrer au prêt de puppet master:
- Puis signer le certificat SSL sur le puppet master (zoidberg)
Appliquer puppet
Pour l'instant, puppet n'applique pas automatiquement les changements sur les clients. Il faut donc lancer à la main le puppet agent sur la VM qu'on souhaite mettre à jour :
* --test signifie que l'on veut appliquer la configuration et terminer (plutôt que de tourner en daemon); * --noop permet de faire tourner la commande sans toucher à la config, pour s'assurer que tout va bien avant d'appliquer les changements pour de vrai.
Pour mettre à jour tout le monde
* -s signifie que l'on veut utiliser sudo pour passer root
Misc
Changer son mot de passe
Pour changer son mot de passe (pour sudo):, modifier l'entrée dans puppet/hiera/ldn.yaml avec la sortie de :