====== 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