Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 8686|Répondre: 0

Gestion de la configuration : installation et utilisation de marionnettes (1)

[Copié le lien]
Publié sur 20/10/2014 09:47:45 | | |
1. Introduction à la marionnette

Les administrateurs système sont souvent coincés dans une série de tâches répétitives : mettre à jour des paquets, gérer les fichiers de configuration, les services système, les tâches cron, ajouter de nouvelles configurations, corriger des bugs, etc. Ces tâches sont souvent répétitives et inefficaces, et la première réponse pour les résoudre est de les automatiser, ce qui fait apparaître des scripts personnalisés. En raison de la complexité de l’environnement, des scripts et applications personnalisés sont développés à plusieurs reprises et il est difficile d’adapter plusieurs plateformes, et la flexibilité et la fonctionnalité sont difficiles à garantir, d’où l’apparition d’outils automatisés de gestion de configuration comme Puppet.

Dans le monde open source, il existe de nombreux outils de configuration parmi lesquels choisir, et certains des produits clés dans ce domaine sont :

    Puppet (http://puppet.reductivelabs.com/) : Un outil de gestion de configuration écrit en Ruby qui utilise l’architecture C/S pour configurer le client en langage déclaratif.
    Cfengine (http://www.cfengine.org) : L’un des premiers outils de configuration open source à être publié, publié en 1993, il s’agit également d’une architecture C/S, généralement utilisée dans les établissements d’enseignement.
    LCFG(http://www.lcfg.org/) : Un outil de gestion de configuration pour les architectures C/S qui utilise XML pour définir des configurations.
    Bcfg2 : Un outil de gestion de configuration pour l’architecture C/S écrit en Python qui utilise des spécifications et des réponses clients pour configurer l’hôte cible.

Ce document est dédié à la description de la manière d’utiliser Puppet pour gérer votre hôte, vos applications, les programmes en arrière-plan et divers services.

À propos de Puppet :

1. À quoi sert Puppet ?

Puppet est un outil open source de gestion de configuration système basé sur Ruby, qui s’appuie sur l’architecture de déploiement C/S. Le développeur principal est Luke Kanies, qui suit la licence de copyright GPLv2. Depuis 1997, Kanies est impliqué dans l’administration système UNIX, et le développement de Puppet est né de cette expérience. Insatisfait des outils de configuration disponibles, Kanies a commencé à développer des outils dans le laboratoire Reductive entre 2001 et 2005. Rapidement, Reductive Labs a lancé son produit phare, Puppet.

2. Caractéristiques de Pupput

De nombreux outils de gestion de configuration système fonctionnent de manière très similaire, comme cfengine. Qu’est-ce qui rend Puppet unique ?

La syntaxe de Puppet vous permet de créer un script séparé pour créer un utilisateur sur tous vos hôtes cibles. Tous les hôtes cibles interpréteront et exécuteront le module à tour de rôle en utilisant la syntaxe applicable au système local. Par exemple, si cette configuration est exécutée sur un serveur Red Hat, créez un utilisateur à l’aide de la commande useradd ; Si cette configuration est exécutée sur un hôte FreeBSD, la commande adduser est utilisée.

Un autre aspect remarquable de Puppet est sa flexibilité. En raison de la nature du logiciel open source, vous pouvez librement obtenir le code source de Puppet, et si vous rencontrez des problèmes et en avez la possibilité, vous pouvez modifier ou améliorer le code de Puppet pour l’adapter à votre environnement. De plus, les développeurs communautaires et les donateurs continuent d’améliorer les capacités de Puppet. Une grande communauté de développeurs et d’utilisateurs s’engage également à fournir la documentation et le support technique de Puppet.

Puppet est aussi facile à scaler. Le support de packages personnalisés et des configurations spéciales d’environnement système peuvent être ajoutés rapidement et facilement à l’installateur Puppet.

3. Mode de fonctionnement de la marionnette

Puppet est un outil de gestion de configuration de l’architecture C/S qui installe le paquet puppet-server (connu sous le nom de Puppet master) sur un serveur central. Installez le logiciel client Puppet (appelé client Puppet Client) sur l’hôte cible à gérer. Lorsque le client se connecte au maître de marionnettes, le fichier de configuration défini sur le maître de marionnettes est compilé puis exécuté sur le client. Par défaut, chaque client communique avec le serveur toutes les demi-heures pour confirmer la mise à jour des informations de configuration. S’il y a de nouvelles informations de configuration ou si des informations de configuration ont changé, la configuration sera recompilée et publiée sur chaque client pour exécution. Vous pouvez aussi déclencher activement une mise à jour des informations de configuration sur le serveur pour forcer chaque client à le configurer. Si les informations de configuration du client sont modifiées, il peut obtenir la configuration originale du serveur pour la corriger.

Gestion de la configuration : installation et utilisation de marionnettes (1)


4. L’avenir de Puppet

Enfin, Puppet est un outil jeune encore en développement. La communauté des marionnettes croît rapidement, et de nombreuses nouvelles idées sont constamment intégrées, ce qui incite à des développements, des mises à jour et des modules à présenter chaque jour.

2. Configuration et installation (Puppet 2.6.4 installation CentOS 5.4) :

Configurez le dépôt sur le serveur marionnette et le client :
trpm - Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo
Ajouter à :
[marionnette epel]
name=marionnette d’épel
baseurl=http ://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/
activé=0
gpgcheck=0

Ajoutez le dépôt puppet.repo :
[root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo
[marionnettes]
name=Paquets de Puppet Labs
baseurl=http ://yum.puppetlabs.com/base/
activé=0
gpgcheck=0

Installation du marionnettiste :
[root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server

Modifiez les hôtes et ajoutez les deux enregistrements suivants :
[root@puppetmaster ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com marionnette
192.168.0.100 puppetclient.leju.com

Configuration de la marionnette :
[root@puppetmaster ~]# cd /etc/puppet/
[root@puppetmaster puppet]# vi puppet.conf

[principal]
    # Le répertoire des marionnettes.
    # La valeur par défaut est '$vardir/log'.
    logdir = /var/log/marionnette

    # Où sont conservés les fichiers PID de la Marionnette.
    # La valeur par défaut est « $vardir/run ».
    rundir = /var/run/marionnette

    # Où sont conservés les certificats SSL.
    # La valeur par défaut est '$confdir/ssl'.
    ssldir = $vardir/ssl

[agent]
    # Le fichier dans lequel le marionnette stocke une liste des classes
    # associé à la configuration récupérée.  Peut être chargé dans
    # l’exécutable séparé « marionnette » utilisant les « --loadclasses »
    # Option.
    # La valeur par défaut est « $confdir/classes.txt ».
    classfile = $vardir/classes.txt

    # Où puppetd met en cache la configuration locale.  Un
    # extension indiquant le format du cache est ajoutée automatiquement.
    # La valeur par défaut est '$confdir/localconfig'.
    localconfig = $vardir/localconfig
    serveur = puppetmaster.leju.com
    rapport = vrai
    écouter = vrai

[maître]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
    autosign = vrai
    rapports = stockage
   
[root@puppetmaster marionnette]# vi fileserver.conf
     [fichiers]
    chemin /etc/puppet/fichiers
    Autoriser *

[modules]
    Autoriser *

[plugins]
    Autoriser *

[root@puppetmaster puppet]# mkdir /etc/puppet/files
   
[root@puppetmaster marionnette]# manifestations CD /
Create site.pp, qui est le fichier de configuration de l’entrée marionnette :
[root@puppetmaster manifestes]# vi site.pp
importez « modules.pp »
importez « roles.pp »
importez « nodes.pp »

# Réglages généraux pour les types standards
Exec { path => « /bin :/sbin :/usr/bin :/usr/sbin :/usr/local/bin :/usr/local/sbin » }

filebucket { main : server => « puppetmaster.leju.com » }
Fichier { sauvegarde => main }

Créer modules.pp pour importer des modules :
[root@puppetmaster manifestes]# vi modules.pp
« Test » d’importation

Create roles.pp pour définir les rôles des serveurs :
[root@puppetmaster manifeste]# vi roles.pp
classe de base {
        inclure test
}

Créez nodes.pp pour configurer les nœuds serveur :
[root@puppetmaster manifeste]# vi nodes.pp
nœud 'basenode' {
        include la classe de base
}

le nœud 'puppetclient.leju.com' hérite de basenode {
        tag(« test »)
}

Le nœud 'puppetmaster.leju.com' hérite du basenode {
        tag(« test »)
}

[root@puppetmaster manifeste]# CD ..
[root@puppetmaster marionnette]# modules mkdir
Créez un module de test :
[root@puppetmaster modules]# mkdir -p test/manifests/
[root@puppetmaster modules]# test/fichiers mkdir/
[root@puppetmaster modules]# test/fichiers CD/
[root@puppetmaster fichiers]# vi test.txt
Ligne de test !
[root@puppetmaster fichiers]# CD .. /manifeste/
Créez une classe de test pour livrer un fichier au client :
[root@puppetmaster manifeste]# vi init.pp
test de classe {
        fichier { « /tmp/test.txt » :
                Assure-toi => présent,
                groupe => « racine »,
                propriétaire => « racine »,
                mode => « 0644 »,
                source => « puppet:///test/test.txt »
        }
}

Lancement de Puppet Master :
[root@puppetmaster manifeste]# /etc/init.d/puppetmaster start
Assure-toi que le port 8140 est en ligne.

Installation du client marionnette :
[root@puppetclient ~]# yum --enablerepo="epel,epel-puppet » installer puppet

Modifiez les hôtes et ajoutez les deux enregistrements suivants :
[root@puppetclient ~]# vi /etc/hosts
192.168.0.10 puppetmaster.leju.com marionnette
192.168.0.100 puppetclient.leju.com

Configuration de la marionnette :
[root@puppetclient ~]# cd /etc/puppet/
[root@puppetclient puppet]# vi puppet.conf
[principal]
    # Le répertoire des marionnettes.
    # La valeur par défaut est '$vardir/log'.
    logdir = /var/log/marionnette

    # Où sont conservés les fichiers PID de la Marionnette.
    # La valeur par défaut est « $vardir/run ».
    rundir = /var/run/marionnette

    # Où sont conservés les certificats SSL.
    # La valeur par défaut est '$confdir/ssl'.
    ssldir = $vardir/ssl

[agent]
    # Le fichier dans lequel le marionnette stocke une liste des classes
    # associé à la configuration récupérée.  Peut être chargé dans
    # l’exécutable séparé « marionnette » utilisant les « --loadclasses »
    # Option.
    # La valeur par défaut est « $confdir/classes.txt ».
    classfile = $vardir/classes.txt

    # Où puppetd met en cache la configuration locale.  Un
    # extension indiquant le format du cache est ajoutée automatiquement.
    # La valeur par défaut est '$confdir/localconfig'.
    localconfig = $vardir/localconfig

    serveur = puppetmaster.leju.com
    rapport = vrai
    écouter = vrai
   
[root@puppetclient marionnette]# vi namespaceauth.conf
[marionnettiste]
    Laissez puppetmaster.leju.com
    autoriser *leju.com
   
[root@puppetclient marionnette]# vi auth.conf
Ajouter allow * à la dernière ligne
......
Chemin /
Auth n’importe quel
Autoriser *

[root@puppetclient marionnette]# CD
Exécuter la marionnette :
[root@puppetclient ~]# puppetd --noop --test --trace --debug
Si Puppet Master ne définit pas : autosign=true, il doit être exécuté dans Puppet Master :
[root@puppetmaster ~]# Certificat de marionnette -l
puppetclient.leju.com
[root@puppetmaster ~]# Certificat de marionnette -s puppetclient.leju.com
Signez puppetclient.leju.com comme ça. Puis retournez au client pour exécuter ici :
[root@puppetclient ~]# puppetd --noop --test --trace --debug
Join --noop, la configuration ne sera pas vraiment appliquée sur le client, principalement utilisée pour les tests, afin de voir s’il y a des erreurs dans l’impression, et exécuter sans erreur :
[root@puppetclient ~]# puppetd --test --trace --debug

Consultez le document :
[root@puppetclient ~]# ll /tmp/
Total 8
-rw-r--r-- 1 racine 11 25 février 22:35 test.txt
Le document a été émis.

Il est aussi possible de pousser sur Puppet Master :
[root@puppetmaster ~]# Coup de marionnette -D --Animateur puppetclient.leju.com
Déclencheur puppetclient.leju.com
Obtention du statut
Le statut est le succès
puppetclient.leju.com terminé avec le code de sortie 0
Terminé
Retourner 0 indique que le « puppetd » sur le client a été déclenché avec succès.

Réglez le démarrage automatique de la marionnette :
chkconfig --marionnette niveau 2345 activé

Modifier le marionnettiste pour utiliser le Passager
Passenger est une extension d’Apache 2.x pour les applications Rails ou Rack en Apache. Puppetmaster utilise WEBrick pour fournir des services de fichiers par défaut, si vous avez de nombreux clients marionnettistes, les performances du service de fichiers de Puppetmaster seront mauvaises, afin de rendre Puppetmaster plus robuste, donc utilisez Apache pour fournir des services de fichiers.

Installation :
[root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems
Le RHEL5 passager 2.2.2 fonctionne bien.
Ajouter le dépôt foreman.repo :
[root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo
[contremaître]
name=dépôt stable Foreman
baseurl=http ://yum.theforeman.org/stable
gpgcheck=0
activé=1
[root@puppetmaster ~]# yum installer rubygem-passenger-2.2.2-1
[root@puppetmaster ~]# Rack-Rubygem-1.0.1-1
[root@puppetmaster ~]# passenger-install-apache2-module

Installation du module SSL Apache :
[root@puppetmaster ~]# Installation miam mod_ssl

Pour configurer l’application Puppet Rack :
mkdir -p /etc/puppet/rack/puppetmasterd/
mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp
cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf
cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/
chown puppet /etc/puppet/rack/puppetmasterd/config.ru

[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2
PassengerRuby /usr/bin/ruby
PassengerMaxTaille de la piscine 30
PassengerPoolIdleTime 1500
PassengerMaxRequests 1000
PassagerStatThrottleRate 120
RackAutoDetect désactivé
RailsAutoDétection désactivée

[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf
# Tu devrais probablement régler ces réglages
PassagerHautperformance activée
PassengerMaxPoolTaille 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassagerStatThrottleRate 120
RackAutoDetect désactivé
RailsAutoDétection désactivée

Écoutez 8140

<VirtualHost * :8140>
        SSLEngine on
        SSLProtocol -ALL +SSLv3 +TLSv1
        SSLCipherSuite TOUS :! ADH :RC4+RSA :+HIGH :+MEDIUM :-LOW :-SSLv2 :-EXP

        SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem
        SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem
        # Si Apache se plaint de signatures invalides sur le CRL, vous pouvez essayer de désactiver
        # CRL vérifie en commentant la ligne suivante, mais ce n’est pas recommandé.
        SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
        SSLVerifyClient optionnel
        SSLVerifyDepth 1
        SSLOptions +StdEnvVars

        # Les en-têtes clients suivants permettent à la même configuration de fonctionner avec Pound.
        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

        DocumentRoot /etc/puppet/rack/puppetmasterd/public/
        RackBaseURI /
        <Annuaire /etc/puppet/rack/puppetmasterd/>
                Aucune option
                Autoriser Aucun
                Ordre permis, refus
                Permettre de tout
        </Directory>
</VirtualHost>

Modifiez le fichier de configuration du marionnettiste pour ajouter les deux lignes suivantes :
[root@puppetmaster ~]# vi /etc/puppet/puppet.conf
[maître]
    ssl_client_header = SSL_CLIENT_S_DN
    ssl_client_verify_header = SSL_CLIENT_VERIFY
   
Modifier /etc/sysconfig/puppetmaster :
[root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster
# Ajoutez la ligne suivante à la fin :
PUPPETMASTER_EXTRA_OPTS= »--rapports stocker »
Si vous devez rendre compte à la fois au contremaître et au tableau de bord marionnette, ajoutez la ligne suivante :
PUPPETMASTER_EXTRA_OPTS= »--rapports magasin, contremaître, puppet_dashboard »

Arrêtez le service de marionnettiste et lancez le service apache :
[root@puppetmaster ~]# /etc/init.d/puppetmaster stop
[root@puppetmaster ~]# /etc/init.d/httpd start

Boot ne lance pas le service puppetmaster, le boot lance le service httpd :
[root@puppetmaster ~]# chkconfig --niveau 2345 puppetmaster désactivé
[root@puppetmaster ~]# chkconfig --level 2345 httpd on

Assurez-vous que le port 8140 est activé :
[root@puppetmaster ~]# netstat -tunlp |grep 8140
TCP 0 0 :::8140 :::* ÉCOUTEZ 9834/httpd

Testez côté client pour voir si le journal d’erreur est imprimé :
[root@puppetclient ~]# puppetd --test --trace --debug




Précédent:Les paramètres importants de php-fpm.conf sont expliqués en détail
Prochain:Le samedi 25 octobre 2014, à 16h, l’alarme de défense aérienne et de prévention des catastrophes a été testée
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com