====== Installation ======
===== Dépôt EPEL =====
Installation du dépôt EPEL pour RH/CentOS 6:
rpm -ivh http://mirrors.ircam.fr/pub/fedora/epel/6/i386/epel-release-6-7.noarch.rpm
===== Dépôt Foreman =====
Installation du dépôt Foreman pour RH/CentOS 6:
rpm -ivh http://yum.theforeman.org/releases/1.0/el6/foreman-release.rpm
===== Installation des RPMs =====
Paquet principal:
yum install foreman
Pour le support libvirt:
yum install foreman-libivrt
Pour le support mysql:
yum install foreman-mysql
====== Configuration ======
La configuration de Foreman se fait dans le fichier ///etc/foreman/settings.yaml//.
Pour la base de données, éditer le fichier ///etc/foreman/database.yml//. Par défaut la base de données est au format sqlite (il faut avoir le paquet foreman-sqlite pour l'utiliser).
Pour initialiser la base de données:
su - foreman -s /bin/bash -c /usr/share/foreman/extras/dbmigrate
====== Importation des clients puppet ======
Sur le serveur puppetmaster, qui héberge aussi foreman, il faut executer la commande suivante (en cron par exemple):
cd /usr/share/foreman/script; rake puppet:import:hosts_and_facts RAILS_ENV=production
Ainsi Foreman collecte les informations sur les clients, tel que les facts (de facter).
====== Activer le reporting des clients puppet ======
Sur chaque client puppet, dans /etc/puppet/puppet.conf, ajouter dans la partie [agent] la ligne suivante:
report = true
Puis redemarrer le service puppet:
service puppet restart
Sur le serveur puppetmaster, les rapports de chaque client seront stockés dans ///var/lib/puppet/reports//.
Il faut ensuite créer un script pour injecter les rapports puppet dans Foreman. Ce script doit être placé dans ///usr/lib/ruby/site_ruby/1.8/puppet/reports/foreman.rb//. Son contenu est le suivant:
# copy this file to your report dir - e.g. /usr/lib/ruby/1.8/puppet/reports/
# add this report in your puppetmaster reports - e.g, in your puppet.conf add:
# reports=log, foreman # (or any other reports you want)
# URL of your Foreman installation
$foreman_url="http://127.0.0.1:3000"
require 'puppet'
require 'net/http'
require 'uri'
Puppet::Reports.register_report(:foreman) do
Puppet.settings.use(:reporting)
desc "Sends reports directly to Foreman"
def process
begin
uri = URI.parse($foreman_url)
http = Net::HTTP.new(uri.host, uri.port)
if uri.scheme == 'https' then
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
req = Net::HTTP::Post.new("/reports/create?format=yml")
req.set_form_data({'report' => to_yaml})
response = http.request(req)
rescue Exception => e
raise Puppet::Error, "Could not send report to Foreman at #{$foreman_url}/reports/create?format=yml: #{e}"
end
end
end
Attention à SeLinux qui peut bloquer les connexions de puppetmaster vers Foreman.
Pour que ce script soit appeler à chaque génération de rapport par puppetmaster, il faut ajouter la ligne suivante dans /etc/puppet/puppet.conf dans la section [puppetmaster]:
reports = log, foreman