| 31 : 8 [CriNET] FERME perturbations internet |
| 27 : 8 [CriNET] INFO Coupure téléphone |
| 17 : 8 [CriNET] FERME Coupure Internet |
| 16 : 8 [CriNET] INFO Coupure Internet |
| Mises à jour du site de l'UPV-M |
| Metzuniversité : journal trimestriel de l'UPV-M |
| Cours de langues étrangères pour adultes |
| Le service formation continue de l'UFR Lettres & langues ... |
| Les sciences sur la place 2010 |
| Mardi 14 septembre 2010 |
| Monsieur Namupot Mas MUMBAL IKIE est autorisé à soutenir ... |
| Tickets CRINet | |
| 2010082700 | INFO |
| Coupure téléphone | |
| 2010082701 | FERME |
| perturbations internet | |
| 2010081600 | INFO |
| Coupure Internet | |
| 2010080200 | FERME |
| Coupure Internet | |
Puppet: administration centralisée serveurs | ||||||||||||||||||||||||||||||
...A compléter ...
Puppet, cfengine, bcfg2
Tous les 3 fonctionnent sur le même principe: un serveur maître envoi aux clients spécifiées et autorisés, les actions à exécuter (démarrer de services, installer/mettre à jour de paquets, exécuter de scripts, ...). Ces actions sont exécutées par le machines clients et, en retour, le maître peut recevoir de logs sur l'état d'exécution. Puppet et Bcfg2 intègrent, beaucoup plus des fonctionnalités spécifiques à l'administration système et bénéficient de nombreux apports de la communauté du libre. Lien puppet/cfengine - Cfengine vs. Puppet Objectif principal – automatiser les mises à jour système:
Installation Puppet (Debian Etch)Les paquets puppet et puppetmaster, pour etch sont trop anciens. En Ubuntu stable (hardy) la version actuelle est: 0.24.4-3 On peut installer une version de Debian testing (lenny) sans passer le système entier à lenny - on modifie les priorités dans /etc/apt/preferences: # 1. Edit /etc/apt/preferences and add the following lines: Package: * Pin: release a=testing Pin-Priority: 1 Package: puppet Pin: release a=testing Pin-Priority: 1001 Package: puppetmaster Pin: release a=testing Pin-Priority: 1001 # 2. Edit /etc/apt/sources.list and add the following lines (change the mirror to your own localized mirror): deb http://ftp.fr.debian.org/debian/ testing main # 3. Edit /etc/apt/apt.conf.d/release and add: APT::Default-Release "stable"; # 4. Do a "apt-get update" and "apt-get install puppet puppetmaster" Dépendances Puppet:ruby, irb, ri, rdoc, libxmlrpc-ruby, libopenssl-ruby, libstrscan-ruby, libsyslog-ruby, libwebrick-ruby Test sur 2 machines (serveur maitre Debian Etch, client Ubuntu) Configuration globale: /etc/puppet:Pour le serveur maitre:- modifier puppet.conf, fileserver.conf cp /etc/puppet/puppet.conf /etc/puppet.conf.orig cat puppet.conf.orig [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter pluginsync=true [puppetmasterd] templatedir=/var/lib/puppet/templates La config par defaut peut suffire si on a pu ajouté un alias DNS pour le nom de la machine maitre ( CNAME puppet). Sinon, ajouter: ... [puppetd] #le nom machine server = maitre.univ-metz.fr - démarrage du maître: /etc/init.d/puppetmaster Pour la machine client(le plus important c'est le nom de la machine maître) modifier /etc/puppet/puppet.conf ~# cat /etc/puppet/puppet.conf [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter pluginsync=true server=maitre.univ-metz.fr report=true Dans ma config. serveur, je rajoute:
#cat puppet.conf ### Config. sur la machine maitre [main] ### Config. commune pour puppetmaster et puppetd(daemon client) ### On peut installer et faire tourné un client (puppetd) sur la machine maitre, aussi logdir=/var/log/puppet .... [puppetmasterd] # config. specifique au daemon puppetmaster templatedir=/etc/puppet/templates .... # stockage database # de http://reductivelabs.com/trac/puppet/wiki/UsingStoredConfiguration storeconfigs=true dbadapter = mysql dbuser = puppet dbpassword = puppet #le mot de passe de la base crée avec mysql dbserver = localhost dbsocket = /var/run/mysqld/mysqld.sock # fin ajout stockage database [puppetd] ### config. specifique au daemon client (puppetd) server = maitre.univ-metz.fr .... FileserverPour distribuer de fichiers (templates, modules, ...) aux clients avec le serveur interne de puppet, on configure fileserver.conf: # This file consists of arbitrarily named sections/modules # defining where files are served from and to whom # Define a section 'files' # Adapt the allow/deny settings to your needs. Order # for allow/deny does not matter, allow always takes precedence # over deny [files] path /etc/puppet/files # allow 192.168.0.0/24 allow *.interne.upvm allow 127.0.0.0/8 allow arwen.univ-metz.fr ##[plugins] # allow *.example.com # deny *.evil.example.com # allow 192.168.0.0/24 ## allow 195.220.226.35/27 [modules] allow *.interne.univ-metz.fr allow 127.0.0.0/8 allow maitre.univ-metz.fr [common] path /var/lib/puppet/modules/common allow *.interne.univ-metz.fr allow 127.0.0.0/8 allow maitre.univ-metz.fr [apt] path /var/lib/puppet/modules/apt allow *.interne.univ-metz.fr allow 127.0.0.0/8 allow maitre.univ-metz.fr Common et AptLe sections common] et [apt] corresponds au deux modules ([ site git: de David Schmitt ) utilisés pour les mises à jour automatiques des paquets. Les explications pour le téléchargement et la configuration complète sont ici. J'utilise uniquement les modules common et apt: # common prerequisite $ git clone git://git.black.co.at/module-common /etc/puppet/modules/common # module: apt-get update $ git clone git://git.black.co.at/module-apt /etc/puppet/modules/apt Ajouter apt-get dselect upgradeModifier /etc/puppet/modules/apt/manifests/init.pp
#cat
# apt.pp - common components and defaults for handling apt
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
# See LICENSE for the full license granted to you.
#
# With hints from
# Micah Anderson <micah@riseup.net>
# * backports key
class apt {
schedule { maint:
range => "17 - 20",
period => daily,
repeat => 1
}
# See README
$real_apt_clean = $apt_clean ? {
'' => 'auto',
default => $apt_clean,
}
package {
[apt, dselect, lsb-release]: ensure => installed,
}
# a few templates need lsbdistcodename
include assert_lsbdistcodename
case $custom_sources_list {
'': {
include default_sources_list
}
default: {
config_file { "/etc/apt/sources.list":
content => $custom_sources_list
}
}
}
class default_sources_list {
config_file {
# include main, security and backports
# additional sources could be included via an array
"/etc/apt/sources.list":
###content => template("apt/sources.list.erb"),
content => template("apt/sources.list$lsbdistcodename.erb"),
require => Exec[assert_lsbdistcodename];
}
}
config_file {
# this just pins unstable and testing to very low values
"/etc/apt/preferences":
content => template("apt/preferences$lsbdistcodename.erb"),
# use File[apt_config] to reference a completed configuration
# See "The Puppet Semaphor" 2007-06-25 on the puppet-users ML
alias => apt_config,
# only update together
require => File["/etc/apt/sources.list"];
# little default settings which keep the system sane
"/etc/apt/apt.conf.d/from_puppet":
content => "APT::Get::Show-Upgraded true;\nDSelect::Clean $real_apt_clean;\n",
before => File[apt_config];
}
$apt_base_dir = "/etc/puppet/modules/apt"
modules_dir { apt: }
# watch apt.conf.d
file { "/etc/apt/apt.conf.d": ensure => directory, checksum => mtime; }
# suppress annoying help texts of dselect
line { dselect_expert:
file => "/etc/dpkg/dselect.cfg",
line => "expert",
ensure => present,
}
exec {
# "&& sleep 1" is workaround for older(?) clients
"/usr/bin/dselect update && sleep 1 #on refresh":
refreshonly => true,
subscribe => [ File["/etc/apt/sources.list"],
File["/etc/apt/preferences"], File["/etc/apt/apt.conf.d"],
File[apt_config] ];
"/usr/bin/dselect update && /usr/bin/apt-get autoclean #hourly":
require => [ File["/etc/apt/sources.list"],
File["/etc/apt/preferences"], File[apt_config] ],
# Another Semaphor for all packages to reference
alias => apt_updated;
}
case $lsbdistcodename {
etch: {
## This package should really always be current
package {
[ "debian-archive-keyring", "debian-backports-keyring" ]:
ensure => latest,
}
# This key was downloaded from
# http://backports.org/debian/archive.key
# and is needed to bootstrap the backports trustpath
file { "${apt_base_dir}/backports.org.key":
source => "puppet://$servername/apt/backports.org.key",
mode => 0444, owner => root, group => root,
}
exec { "/usr/bin/apt-key add ${apt_base_dir}/backports.org.key && dselect update":
alias => "backports_key",
refreshonly => true,
subscribe => File["${apt_base_dir}/backports.org.key"],
before => [ File[apt_config], Package["debian-backports-keyring"] ]
}
}
hardy: {
## This package should really always be current
## J'utilise aussi le depot medibuntu=> medibuntu-keyring
package {
###[ "ubuntu-keyring", "medibuntu-keyring" ]:
[ "ubuntu-keyring" ]:
ensure => latest,
}
## Si necessaire ajouter backport et la cle
}
}
#Exec[apt_updated]: After this point, current packages can installed via apt,
# usually used like this:
###Package { require => Exec[apt_updated] }
exec { "/usr/bin/apt-get -s dselect-upgrade > /root/dselect-upgrade.simulate":
require => Exec[apt_updated],
alias => apt_to_upgrade;
}
exec { "/usr/bin/apt-get dselect-upgrade":
require => Exec[apt_to_upgrade],
alias => apt_upgraded,
}
exec { "/bin/date > /root/motd;
/bin/echo PUPPETD - ATTENTION INTERVENTION ROOT NECESSAIRE pour APT-GET UPGRADE >> /root/motd":
tag => dselect_upgraded,
logoutput => true,
unless => "/usr/bin/test 'Exec[apt_upgraded]' != 'executed successfully'";
}
# Pour forcer la mise a jour, apres test,
faites d'abord un touch sur le serveur du fichier "really_upgrade"
file {"${apt_base_dir}/really_upgrade":
source => "puppet://$servername/apt/really_upgrade",
}
exec { "/usr/bin/apt-get -y dselect-upgrade":
refreshonly => true,
subscribe => File["${apt_base_dir}/really_upgrade"],
}
}
DémarrageLe client demande le certificat: client# puppetd --waitforcert 30 --server puppetserver.domain.net -v Le serveur: - affiche les demandes de certificats: serveur# puppetca --list - signe le certificat pour ce client: serveur# puppetca --sign client.univ-metz.fr Démarrage en productionserveur# /etc/init.d/puppetmaster start client# /etc/init.d/puppetd start ...A compléter ... | ||||||||||||||||||||||||||||||