par Ikuya Yamada et Yoshiyasu Takefuji (Copyright © 2011) ikuya CHEZ ousia POINT jp
takefuji CHEZ sfc POINT keio POINT ac POINT jptraduction par Robert De Sousa (tous droits réservés) dessroberto CHEZ gmail POINT com
relecture exemple email CHEZ exemple POINT com
Quand un environnement de serveur est créé en utilisant le logiciel de virtualisation ou un service de cloud, le nombre de serveurs tend à augmenter rapidement. L'installation de logiciel et de configuration sont nécessaires à chaque nouveau serveur. En outre, la synchronisation des configurations de serveur exige un effort supplémentaire comme l'écriture de scripts shell.
Dans cet article, nous décrirons comment construire un environnement de serveur automatiquement en utilisant un logiciel appelé Puppet. Bien que cet outil soit généralement utilisé pour gérer l'infrastructure de serveurs à grande échelle (comme un centre de données ou un service Web avec un grand nombre d'utilisateurs), il peut également être utilisé pour gérer un petit nombre de serveurs. Cependant, Puppet est un outil récemment mis au point, et la documentation existante et les articles sur Puppet sont encore un peu superficielle.
Ici, nous allons vous montrer des exemples simples que vous pouvez utiliser pour configurer les paramètres du serveur à l'aide de Puppet sans aucune difficulté. En l'utilisant, vous pouvez créer un nouveau serveur instantanément en entrant seulement quelques lignes de commandes. Puppet va aussi synchroniser périodiquement la configuration des serveurs créés.
Notez qu'il sera particulièrement utile pour configurer et maintenir les paramètres de sécurité communs, en incluant sudo, sshd, and iptables. Dans cet article, nous avons également décrit quelques-un de nos simples mais puissant paramètres de sécurité qui ont été utilisés dans notre environnement de serveur.
Nous avons testé tous les exemples en utilisant le système d'exploitation CentOS5. Cependant, vous pouvez appliquer les techniques décrites si dessous pour Linux et les autres systèmes d'exploitation.
Le logiciel Puppet adopte une architecture client-serveur. Chaque client communique périodiquement avec un ou plusieurs serveurs principal et synchronise la configuration (chaque demi-heure par défaut). Donc vous devez d'abord préparer au moins deux instances de serveur, l'un serait le serveur principal de Puppet et les autres seraient les clients de Puppet.
Maintenant, nous allons procédé à l'installation de Puppet. Fedora EPEL fournit le paquet Puppet Yum. Si vos serveurs n'ont pas EPEL, veuillez l'installer avant de continuer
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Ensuite, installez le paquet puppet-server sur le serveur principal qui gère les clients et instalez puppet sur ces derniers:
Sur le serveur:
$ sudo yum -y install puppet-server $ sudo chkconfig puppetmaster on $ sudo service puppetmaster start
Sur les machines clients:
$ sudo yum -y install puppet $ sudo chkconfig puppet on $ sudo service puppet start
En outre, si le serveur principal est placé derrière un pare-feu et que vous souhaitez utiliser Puppet sur les clients qui sont en dehors du pare-feu, vous devez ouvrir le port 8140 en TCP.
Dans Puppet, toutes les configurations sont décrites comme des ressources.Les ressources peuvent être des fichiers, plusieurs logiciels, des services du serveur, etc... Par exemple, le fichier suivant représente un fichier très basique /etc / passwd qui est détenue par la racine et a comme paramètres d'autorisation la valeur '644 ':
file { '/etc/passwd': owner => root, mode => 644, }
La configuration en desous installe le paquet openssh-server, qui permet le service sshd par défaut, et veille à ce que sshd soit lancé:
package { 'openssh-server': ensure => installed, } service { 'sshd': enable => true, ensure => running, require => Package['openssh-server'], }
Maintenant, nous allons appliquer ces configurations au serveurs. Dans Puppet, site.pp est un fichier spécial qui est inclus par défaut. Si la configuration du serveur n'est pas complexe, il pourrait être avantageux d'écrire tous les paramètres de configuration dans ce fichier. Pour ce faire, veuillez collez le code ci-dessus dans votre fichier /etc/puppet/manifests/site.pp.
file { '/etc/passwd': owner => root, mode => 644, } package { 'openssh-server': ensure => installed, } service { 'sshd': enable => true, ensure => running, require => Package['openssh-server'], }
Ensuite, vous devez enregistrer les clients sur le serveur principal.
Veuiller exécutez la commande suivante sur les serveurs des clients:
$ sudo puppetd --test --waitforcert 30 --server MASTER_SERVER_ADDRESS
et exécutez la commande suivante sur le serveur.
$ sudo puppetca --list (YOUR CLIENT_SERVER_ADDRESS IS DISPLAYED HERE) $ sudo puppetca --sign CLIENT_SERVER_ADDRESS
Puis, retournez sur la console du client, vous remarquerez que toutes les entrées de configuration ci-dessus ont été appliquées automatiquement par
Puppet.
En outre, vous aurez besoin d'ajouter le paramètre suivant au fichier /etc/puppet/puppet.conf afin de donner l'adresse du serveur aux
clients.
[main] server = MASTER_SERVER_ADDRESS
Maintenant, le logiciel Puppet synchronisera automatiquement les configurations des serveurs toutes les 30 minutes. Vous pouvez confirmer cela dans /var/log/messages:
$ sudo tail /var/log/messages
Dans cette section, nous allons fournir plusieurs exemples de configurations basiques. Si vous voulez les utiliser, veuillez les coller dans votre site.pp.
Puppet propose un outil facile à utiliser qui permet de gérer les comptes utilisateurs. La configuration suivante ajoute l'utilisateur admin à votre serveur.
# Add "admin" account user { 'admin': home => '/home/admin', # home directory is /home/admin managehome => true, # manage the home directory by Puppet groups => ['wheel'], # the user belongs to wheel group password => 'PASSWORD_HASH', # hashed password text }
PASSWORD_HASH est un hachage de mot de passe basique, similaires à ceux utilisés dans /etc/shadow. Vous pouvez les générer manuellement en utilisant les commandes suivantes:
$ sudo yum -y install ircd-ratbox-mkpasswd $ /usr/bin/ircd-mkpasswd -m -s 'SALT' -p 'PASSWORD'
[ Standard crypt (3) la création de mot de passe est également disponible sans avoir à installer aucun logiciel supplémentaire; par exemple. perl -wle 'print crypt "PASSWORD", "SALT"' or python -c 'import crypt; print(crypt.crypt("PASSWORD", "SALT"))' permet d'en générer un. -- Ben ]
La configuration suivante installe le paquet sudo et modifie sudoers en utilisant augeas pour permettre aux utilisateurs appartenant au groupe d'utiliser sudo:
# Install sudo package package { 'sudo': ensure => installed, # ensure sudo package installed } # Allow users belonging wheel group to use sudo augeas { 'sudowheel': context => '/files/etc/sudoers', # target file is /etc/sudoers changes => [ # allow wheel users to use sudo 'set spec[user = "%wheel"]/user %wheel', 'set spec[user = "%wheel"]/host_group/host ALL', 'set spec[user = "%wheel"]/host_group/command ALL', 'set spec[user = "%wheel"]/host_group/command/runas_user ALL', ] }
Cette configuration permet d'installer et d'utiliser ssh sur votre serveur. Il modifie également sshd_config pour refuser les connexions root et les connexions sans mots de passe.
# Install openssh-server package package { 'openssh-server': ensure => installed, } # Enable sshd service service { 'sshd': enable => true, # execute sshd on startup ensure => running, # ensure sshd running require => Package['openssh-server'], # require openssh-server before applying this config } # Change sshd configuration augeas { 'sshd_config': context => '/files/etc/ssh/sshd_config', # target file is /etc/ssh/sshd_config notify => Service['sshd'], # restart sshd after applying this config changes => [ # deny root logins and logins with empty passwords 'set PermitRootLogin no', 'set PermitEmptyPasswords no', ], }
Pour configurer iptables à l'aide de Puppet, vous aurez besoin d'installer un module externe appelé puppet-iptables. Vous devez le télécharger et l'installer à partir de GitHub.
$ cd /tmp $ wget --no-check-certificate "https://github.com/kbarber/puppet-iptables/tarball/master" $ tar xvzf kbarber-puppet-iptables-1.2.0-2-g9deddbb.tar.gz $ sudo mkdir -p /etc/puppet/modules $ sudo mv kbarber-puppet-iptables-9deddbb /etc/puppet/modules/
En outre, vous devez ajouter les paramètres suivants à votre fichier /etc/puppet/puppet.conf" à la fois dans le serveur et dans les clients:
[main] libdir = /var/lib/puppet/lib [puppetd] pluginsync=true plugindest=/var/lib/puppet/lib
Maintenant, vous pouvez utiliser les ressources iptables. Ce qui suit est une configuration du pare-feu de base qui accepte uniquement les paquets sur les connexions existantes, celles de l'hôte local et le réseau local, et celles qui se connecte via SSH.
# Allow packets that belong to or related to an existing connection iptables { 'allow established, related': state => ['ESTABLISHED', 'RELATED'], proto => 'all', jump => 'ACCEPT', } # Allow all packets from localhost iptables { 'allow localhost': source => '127.0.0.1', proto => 'all', jump => 'ACCEPT', } # Allow all packets from LAN iptables { 'allow LAN': source => '192.168.0.0/16', proto => 'all', jump => 'ACCEPT', } # Allow all packets to SSH iptables { 'allow ssh': proto => 'tcp', dport => 22, jump => 'ACCEPT', } # Drop all incoming packets by default iptables { 'drop incoming packets': chain => 'INPUT', proto => 'all', jump => 'DROP', }
Si vous êtes intéressé par Puppet et que vous voulez en apprendre d'avantage à ce sujet, veuillez vous référer à la documentation officielle; official documentation et introduction to Puppet.
Ikuya Yamada
Ikuya Yamada est un entrepreneur et un ingénieur en logiciel expérimenté. Actuellement, il est le fondateur et le directeur technique des Studio Ousia Inc, une entreprise de logiciel R&D fondée en 2007 à Tokyo. Il est également chercheur à l'Institut de Recherche de Keio à SFC depuis 2010. Avant les studio Ousia, il était le directeur de Fractalist Inc., entreprise de logiciels japonaise, et auparavant le fondateur et le PDG de Newrong Inc., entreprise de logiciel de R&D, qui a été acheté par Fractalist Inc. en 2005. Il a obtenu son BS en 2006 et le MS en 2010 à l'Université de Keio.
Adaptation française de la Gazette Linux
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux
Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site http://www.traduc.org/Gazette_Linux
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.