veilletechno:foreman

Installation

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

Installation du dépôt Foreman pour RH/CentOS 6:

rpm -ivh http://yum.theforeman.org/releases/1.0/el6/foreman-release.rpm

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
  • veilletechno/foreman.txt
  • Dernière modification : 2020/05/08 19:25
  • de madko