Comment installer Puppet en mode autonome sur CentOS 7

introduction

L’objectif de ce didacticiel est de permettre à Puppet de fonctionner en mode autonome sur CentOS 7 aussi rapidement que possible.

Si vous voulez en savoir un peu plus sur Puppet et son utilité, continuez à lire. Si vous êtes déjà convaincu et que vous souhaitez commencer à installer Puppet, passez à la section https://www.digitalocean.com/community/tutorials/how-to-install-puppet-in-standalone-mode-on-centos- 7 # conventions-utilisées-dans-ce-tutoriel [Conventions utilisées dans ce tutoriel] ci-dessous.

Pourquoi utiliser des marionnettes?

Qu’est-ce que la marionnette?

Puppet est un outil logiciel de gestion de la configuration open source qui permet aux organisations de contrôler la configuration exacte de dizaines de milliers de nœuds à partir d’un seul serveur central. La marionnette est mature et populaire, et est utilisée par de grandes organisations du monde entier. Toutefois, l’installation de Puppet sous ce modèle client / serveur distribué peut s’avérer compliquée, car elle nécessite la configuration d’un serveur Puppet central et ses relations avec les nœuds clients.

Puppet a une image si forte en tant qu’outil de configuration de nuage de masse, ce qui peut vous surprendre de savoir que Puppet peut également être exécuté en mode «autonome» dans lequel il est exécuté manuellement pour configurer un seul nœud. En mode autonome, Puppet est un excellent outil pour configurer des nœuds individuels.

Si vous avez configuré manuellement vos gouttelettes DigitalOcean (c’est-à-dire SSHing dans le serveur cloud et en tapant une série de commandes dans le shell de commandes Linux), Puppet peut vous aider à intégrer toutes les connaissances de ce processus de configuration dans un seul fichier de configuration de Puppet (ou arborescence de répertoires) pouvant être appelé pour recréer. le nœud à partir de zéro, ou reconfigurer le nœud s’il est endommagé.

Puppet n’est pas simplement un gestionnaire de script d’installation glorifié. Lorsque Puppet s’exécute, il inspecte la configuration du nœud, identifie les différences éventuelles entre la configuration du nœud et celle spécifiée dans le fichier de configuration de Puppet, puis effectue les modifications nécessaires pour ramener le nœud à l’état spécifié. Cela signifie qu’il peut être utilisé à la fois pour configurer et réparer les nœuds.

Pourquoi utiliser un outil de gestion de la configuration?

Nous pouvons identifier trois niveaux de sophistication lors de l’installation du logiciel: manuel, scripté et basé sur la gestion de la configuration.

  • Dans une installation manuelle, SSH dans le nœud et émettre une série de commandes
    au shell de commande pour installer le logiciel.

  • Dans une installation_criptée_, vous créez un script (par exemple, un script Ruby ou BASH)
    installer le logiciel et l’exécuter.

  • Dans une installation basée sur la gestion de la configuration, vous créez une configuration
    l’outil de gestion spécifie l’état souhaité du noeud et l’outil de configuration compare l’état du noeud à l’état souhaité et entraîne le noeud dans l’état souhaité.

L’installation manuelle doit être évitée car il s’agit d’une solution de pré-automatisation qui intègre toutes les connaissances relatives à l’installation dans la tête d’un ou plusieurs ingénieurs plutôt que dans un fichier (sauf si les ingénieurs ont écrit la procédure d’installation).

L’installation par script est bien meilleure que l’installation manuelle, mais le problème est que si vous effectuez une installation puis endommagez une petite partie de celle-ci, vous ne pouvez pas utiliser le script pour réparer les dommages; vous devez recommencer à zéro et tout réinstaller.

L’installation basée sur la gestion de la configuration est la meilleure solution. Un outil de gestion de la configuration automatisera l’installation (de même que le script d’installation), mais il peut également être utilisé pour réparer le logiciel s’il est endommagé. Il peut également être utilisé pour modifier la configuration souhaitée et conduire le nœud vers le nouvel état souhaité.

Pourquoi utiliser les marionnettes en particulier?

En août 2014, il semblait y avoir deux principaux outils de configuration sur le marché: Puppet et Chef. Une recherche rapide révèle que les deux semblent être de solides outils matures suivis loyalement. Une différence essentielle est que Puppet est plus déclaratif et Chef est plus procédural, ce qui la rend plus attrayante pour la réparation des dommages. Voici quelques articles de comparaison.

Ce tutoriel ne cherche pas à faire une comparaison complète.

Flocons de neige, animaux domestiques et bovins

Une métaphore est apparue dans le monde de la configuration logicielle pour décrire trois niveaux + de sophistication de la gestion de la configuration du serveur. Vous pouvez être au niveau flocon +, animal ou bovin. Voilà comment cela fonctionne:

  • Votre nœud est un * flocon de neige * si vous ne savez pas comment il est arrivé à l’état
    il est dedans et / ou vous êtes trop nerveux pour y apporter des modifications, ou même le toucher en cas de casse. Si ça casse, vous êtes vraiment dans le pétrin. Votre nœud est comme un flocon de neige délicat.

  • Votre nœud est un * animal de compagnie * si vous êtes sûr de pouvoir le réparer s’il se casse,
    mais l’idée de le configurer à partir de zéro vous remplit d’effroi. Lorsque votre + animal de compagnie tombe malade, vous le prenez chez le vétérinaire pour le guérir.

  • Votre nœud est une * tête de bétail * si sa configuration a été tellement automatisée que, si
    En cas de problème avec le nœud, il est plus facile de le reconfigurer à partir de zéro + à l’aide de votre outil de configuration automatisée que de tenter de le réparer. Quand un de vos bovins tombe malade, vous ne le portez pas chez le vétérinaire; vous le tirez dans la tête + et en obtenez un nouveau.

La métaphore a pour but de présenter la perspective «bétail» de la gestion des nœuds. La plupart des administrateurs système sont tellement habitués à traiter les nœuds comme des flocons de neige ou des animaux domestiques que l’idée de simplement tuer un nœud lorsqu’il est endommagé semble tout à fait étrangère. Cependant, il suffit de quelques secondes de réflexion pour changer de perspective et se rendre compte de la puissance du modèle de bétail.

  • Le système de fichiers est endommagé? Pas de problème, tuez simplement le nœud et recréez-le à partir de zéro avec Puppet.

  • Un logiciel obscur a soudainement cessé de fonctionner? Pas de problème, tuez simplement le nœud et recréez-le à partir de zéro avec Puppet.

  • Un pirate informatique a pénétré votre système et installé un kit racine? Pas de problème, tuez simplement le nœud et recréez-le à partir de zéro avec Puppet.

Traiter vos nœuds comme du bétail peut être une béquille. En fin de compte, il est préférable de rechercher la source de tout ce qui endommage votre nœud et de résoudre le problème, mais entre-temps, il est très efficace de reconstruire automatiquement.

Parmi les trois niveaux d’installation, les installations de script et de gestion de la configuration prennent en charge le modèle bovin. Cependant, le modèle de gestion de la configuration prend également en charge le modèle animal. Sous le modèle scripté, si vous souhaitez installer un logiciel supplémentaire, vous devez recommencer à zéro. Sous le modèle de gestion de la configuration, vous pouvez modifier votre nœud existant.

La marionnette vous permet de passer du modèle flocon de neige au modèle bovin, avec la possibilité de traiter votre bétail comme un animal domestique lorsque cela vous convient.

(Remarque: l’auteur ne traite aucun animal comme le bétail, mais la métaphore du bétail fonctionne bien comme métaphore de la configuration.)

La voie des marionnettes

Pour configurer les nœuds, Puppet doit tout configurer depuis Puppet. Cela peut parfois être un peu difficile, mais il est presque toujours possible de configurer ce que vous voulez depuis Puppet.

Si vous vous engagez à tout configurer depuis Puppet, vous pouvez configurer n’importe quel nœud de votre cloud avec une seule commande Puppet. Si vous le pouvez, vous pouvez commencer à traiter les nœuds de votre cloud comme du bétail. Vous pouvez vous éloigner si loin de la mentalité de flocon de neige que vous pouvez adopter une politique consistant à choisir régulièrement un nœud aléatoire dans votre nuage, à le détruire et à le reconstruire à l’aide de Puppet, histoire de vous prouver qu’il n’est pas devenu un flocon de neige ou un animal de compagnie.

Une fois que vous avez incorporé toutes vos informations de configuration dans Puppet, la seule chose qui vous empêche de traiter un nœud comme une tête de bétail, c’est s’il contient une base de données. Vous devez enregistrer la base de données avant de démolir le nœud et la restaurer après avoir reconstruit le nœud, mais c’est à peu près la seule raison.

La marionnette n’est pas simplement un outil de configuration. C’est une discipline de développement qui simplifie l’installation, la gestion et la réparation des nœuds et qui élimine une grande partie du stress lié à la gestion d’un nuage de nœuds.

Conventions utilisées dans ce tutoriel

Dans le cadre de ce tutoriel, un droplet nommé:

mynode.example.com

sera utilisé. Chaque fois que vous voyez le mot «mynode» ou «exemple» dans ce tutoriel, vous pouvez être sûr qu’ils ne sont pas des mots-clés de commande et que vous devez remplacer votre propre nom.

Sauf indication contraire, chaque fois que ce didacticiel dit d’émettre une commande, cela signifie de l’émettre dans le shell de la commande (par exemple, bash) de votre Droplet.

Ce tutoriel suppose que vous êtes connecté en tant que root, vous n’avez donc pas besoin de préfixer chaque commande avec + sudo +. Si vous n’êtes pas connecté en tant que root, vous pouvez essayer de préfixer toutes les commandes suivantes avec + sudo + (mais cela n’a pas été testé).

Tout au long de ce tutoriel, nous utilisons la commande + cat + pour créer et modifier des fichiers. Vous pouvez utiliser + nano + ou un autre éditeur de texte si vous le souhaitez.

Créer une gouttelette

Si vous n’avez pas encore créé le Droplet auquel vous souhaitez appliquer Puppet, faites-le maintenant. Vous pouvez créer n’importe quel type de Droplet s’il s’agit d’un droplet CentOS 7.

Lorsque vous spécifiez le nom d’hôte de votre nouvelle Droplet dans le formulaire de création de la droplet DigitalOcean, veillez à spécifier le nom de domaine pleinement qualifié (FQDN) dans le champ du formulaire Nom d’hôte.

Hostname = mynode.example.com

Ne spécifiez pas simplement “mynode”.

(Vous n’avez pas besoin de configurer DNS + example.com + pour le nouveau nœud + mynode + pour pouvoir exécuter Puppet, mais c’est une bonne idée de le faire de toute façon si vous prévoyez de conserver Droplet, donc ceci est votre rappel!)

SSH dans votre gouttelette en tant que racine

SSH dans le nouveau Droplet en tant que racine à partir de la ligne de commande de l’ordinateur sur lequel vous travaillez à l’aide de la commande suivante.

Si vous n’avez pas configuré DNS pour pointer un nom de domaine sur le nœud, vous devrez plutôt utiliser l’adresse IP du nœud.

Installer une marionnette

La prochaine étape consiste à installer Puppet. Puppet Labs fournit à Puppet une version gratuite, à code source ouvert, et séparément, une version entreprise. Dans ce tutoriel, nous installerons la version open source, qui est entièrement gratuite pour un nombre quelconque de nœuds.

Le logiciel d’installation Linux + yum + facilite l’installation de Puppet. La seule difficulté est que Puppet ne figure pas par défaut dans la liste du référentiel CentOS yum. Nous devons donc l’installer avant de pouvoir appeler + yum +. (Si vous avez CentOS 5 ou CentOS 6, changez le 7 en 5 ou 6).

rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

Vous pouvez vérifier que le référentiel Puppet a été installé avec la commande suivante:

yum repolist | grep puppet

ce qui devrait donner un résultat ressemblant à ceci:

puppetlabs-deps/x86_64         Puppet Labs Dependencies El 7 - x86_64        10
puppetlabs-products/x86_64     Puppet Labs Products El 7 - x86_64            70

Maintenant, installez Puppet en utilisant yum. La commande + yes + (intégrée à la commande + yum + à l’aide de |) élimine le besoin de répondre à une série de questions de yum. La commande génère beaucoup d’activité et devrait générer plus de 180 lignes de sortie de console.

yes | yum -y install puppet

Vérifiez que Puppet est installé et fonctionne avec la commande suivante. Le résultat devrait être un simple numéro de version, tel que + 3.6.2 +.

puppet --version

Définir le nom d’hôte et le nom de domaine complet

La marionnette ne fonctionnera pas correctement si les paramètres de nom d’hôte et de nom de domaine complet (FQDN) du nœud ne sont pas configurés correctement. En effet, Puppet est souvent configuré avec un fichier de configuration qui spécifie la configuration de plusieurs nœuds différents. Puppet doit savoir sur quel nœud il s’exécute pour pouvoir exécuter uniquement les parties pertinentes du fichier de configuration.

Pour voir si votre nœud est correctement configuré pour Puppet, exécutez les deux commandes suivantes:

facter | grep hostname
facter | grep fqdn

La commande + facter + affichera seule une liste de paires clé / valeur avec des données relatives à votre Droplet. Ici, seules deux des paires clé / valeur sont importantes. Nous utilisons donc + grep + pour rechercher le résultat pertinent, qui devrait ressembler à ceci:

hostname=mynode
fqdn=mynode.example.com

Si les parties * mynode * des valeurs sont incorrectes, vous pouvez résoudre ce problème en + donnant la commande suivante. Cela modifiera la partie * mynode * de la valeur + dans les deux paires:

hostname mynode

Si la valeur de domaine dans * fqdn * est incorrecte, vous pouvez y remédier en ajoutant une seule ligne au fichier de configuration système + / etc / resolv.conf +. Commencez par y jeter un coup d’œil (utile si vous l’endommagez accidentellement et que vous souhaitez le recréer sans recréer Droplet):

cat /etc/resolv.conf

Ajoutez maintenant à cela:

cat >>/etc/resolv.conf
domain example.com
^D

(où * ^ D * signifie que vous tapez Control-D pour mettre fin à la commande + cat +.)

Confirmez que vos modifications ont fonctionné avec:

facter | grep hostname
facter | grep fqdn

Voici un rappel de ce que la sortie devrait contenir:

hostname=mynode
fqdn=mynode.example.com

Créer un fichier de configuration de marionnettes

Maintenant que Puppet est installé et prêt à fonctionner, il est temps de créer une configuration de Puppet. Le processus d’installation de CentOS / Puppet devrait déjà avoir créé un répertoire appelé + / etc / puppet + (si ce n’est pas le cas, créez-le avec + mkdir / etc / puppet +). Jetons un coup d’oeil là:

ls -la /etc/puppet

Il devrait y avoir quelques fichiers + .conf + et un sous-répertoire + modules +.

Les conventions de dénomination de l’arborescence des répertoires de configuration de Puppet nous incitent à créer un sous-répertoire + manifestests + pour contenir le fichier de configuration que nous sommes sur le point de créer:

mkdir /etc/puppet/manifests

Créez maintenant le fichier de configuration. Vous devrez remplacer votre propre nom de domaine par + mynode.example.com +. La commande + cat est utilisée, mais vous pouvez utiliser l’éditeur` + nano` (ou tout autre éditeur) si vous le souhaitez. (Les lignes vides de début et de fin sont ignorées).

cat >/etc/puppet/manifests/projectname.pp

node "mynode.example.com" {

file { '/root/example_file.txt':
   ensure => "file",
   owner  => "root",
   group  => "root",
   mode   => "700",
   content => "Congratulations!
Puppet has created this file.
",}

} # End node mynode.example.com
^D

(* ^ D * signifie que vous tapez Control-D pour mettre fin à la commande + cat +.)

Le fichier de configuration spécifie la configuration du noeud + mynode.example.com +. (Vous pouvez ajouter plus de blocs de construction tels que + node" nodename "{…​} + à ce fichier et il serait toujours exécuté sur le nœud + mynode.example.com +).

À l’intérieur de la construction + node + se trouve une instruction pour configurer un fichier particulier appelé + / root / example_file.txt +. La construction + fichier + indique à Puppet de s’assurer qu’il existe un fichier portant ce nom, qu’il s’agit d’un fichier et non d’un répertoire, qu’il possède le droit de propriété spécifié, qu’il a le mode de protection spécifié et contenu spécifié.

L’instruction + fichier + n’est pas simplement une commande pour créer le fichier s’il n’existe pas. Il s’agit plutôt d’une spécification de la configuration du fichier. Puppet inspecte le fichier et le conduit dans l’état spécifié, quel que soit l’état dans lequel il se trouve. Si le fichier n’existe pas, Puppet le crée. S’il existe, mais que l’un des aspects spécifiés est incorrect (y compris le contenu du fichier), Puppet corrigera la déviation et conduira le fichier à l’état spécifié. Ainsi, bien que Puppet puisse sembler jouer le rôle de script d’installation lors de sa première exécution, lors de la première exécution et des suivantes, il compare réellement l’état existant à l’état souhaité et apporte des modifications pour que le système de fichiers atteigne l’état souhaité. .

Invoquer la marionnette

Maintenant que vous avez installé Puppet et créé un fichier de configuration, vous pouvez appeler Puppet. (Ignorez les erreurs ipaddress).

puppet apply /etc/puppet/manifests/projectname.pp

Puppet devrait créer le fichier + / root / example_file.txt + appartenant à + ​​root +, dans le groupe + root + et avec les permissions + -rwx ------ +. Vérifiez ceci avec:

ls -la /root

Vérifiez le contenu du fichier avec:

cat /root/example_file.txt

Vous devriez voir le texte que nous avons spécifié dans le fichier de configuration.

Invoquer à nouveau la marionnette

N’oubliez pas que Puppet n’exécute pas votre fichier de configuration en tant que script. + Au lieu de cela, il entraîne votre système dans l’état spécifié dans le fichier configuration +. Cela signifie que si vous exécutez à nouveau Puppet, il ne devrait rien faire. Essayez le!

puppet apply /etc/puppet/manifests/projectname.pp

Endommager le fichier et invoquer à nouveau la marionnette

Nous allons maintenant endommager le fichier configuré en modifiant ses protections + en utilisant la commande + chmod +.

chmod o+r /root/example_file.txt

Vérifiez les dommages avec la commande suivante. Vous devriez voir + -rwx --- r - + + protection pour + example_file.txt + au lieu de `+ -rwx ------ + protection:

ls -la /root

Invoquez à nouveau Puppet:

puppet apply /etc/puppet/manifests/projectname.pp

Puppet doit réparer la protection du fichier. Vérifiez-le avec:

ls -la /root

Plus de dégâts et de réparation

Maintenant, endommageons à nouveau le fichier en modifiant son contenu:

cat >/root/example_file.txt
This is a damaged file!
^D

Confirmez les dégâts en utilisant:

cat /root/example_file.txt

Invoquez à nouveau Puppet. Il convient de réparer le fichier:

puppet apply /etc/puppet/manifests/projectname.pp

Confirmez que le fichier a été réparé avec:

cat /root/example_file.txt

Et ensuite?

Ceci est juste un exemple de «Hello World» pour vous aider à démarrer. Le fichier de configuration ci-dessus est juste un petit exemple de ce que Puppet peut faire. Pour un aperçu de ce qui vous attend, jetez un coup d’œil à cette page:

Vous pouvez spécifier la configuration de fichiers individuels, d’arborescences de répertoires entières, de packages, de services, de cron, d’utilisateurs, de groupes, etc. Il existe également une énorme bibliothèque de modules de configuration créée par l’utilisateur Puppet à l’adresse:

Conclusion

Ce tutoriel vous a montré comment installer Puppet en mode autonome et comment créer un fichier de configuration de Puppet pour configurer un seul fichier dans un seul nœud. Ce fichier de configuration peut servir de plate-forme sur laquelle vous pouvez construire une configuration plus complexe. Si vous respectez la discipline qui consiste à effectuer toute votre configuration à l’aide de Puppet, vous serez en mesure de convertir vos gouttelettes en flocons de neige (ou animaux de compagnie) en bovins, rendant ainsi vos tâches de gestion des nuages ​​rapides et reproductibles.

Références

La société derrière Puppet s’appelle Puppet Labs, Inc. et peut être trouvé ici:

Les instructions d’installation des marionnettes sont disponibles à l’adresse suivante:

Vous pouvez avoir un aperçu de ce que Puppet est capable de configurer en naviguant sur cette page:

La communauté des utilisateurs de Puppet a créé des milliers de modules Puppet, qui peuvent + être utilisés pour configurer un large éventail de logiciels: