Project

General

Profile

Tâche #30564

Scénario #30562: Tester l'installation de The Foreman project

Installer The Foreman sur une CentOS

Added by Fabrice Barconnière 28 days ago. Updated about 7 hours ago.

Status:
Fermé
Priority:
Normal
Start date:
08/31/2020
Due date:
% Done:

100%

Remaining (hours):
0.0

History

#1 Updated by Fabrice Barconnière 28 days ago

  • Assigned To set to Fabrice Barconnière

#2 Updated by Fabrice Barconnière 28 days ago

  • Status changed from Nouveau to En cours

#3 Updated by Fabrice Barconnière 27 days ago

  • % Done changed from 0 to 50

La procédure d'installation fournie pour CentOS 8 fonctionne mais je détaille quand même un peu plus ce que j'ai fait

Déploiement d'une CentOS 8

  • Déployer dans One une VM CentOS 8 avec RAM 4GB - HDD 20GB - Réseau academie

Préparation du système

  • Mise à jour du système
    yum update
    
  • Définir le hostname
    cat <<EOF >/etc/hostname
    foreman.eole.lan
    EOF
    
    hostnamectl set-hostname theforeman.eole.lan
    
  • Modifier de fichier /etc/hosts pour que le hostname réponde sur son IP ens3 et non sur 127.0.0.1
  • Passer les locales à en_US.UTF-8 (nécessaire pour les bases postgresql de foreman) : https://projects.theforeman.org/issues/13496
    cat <<EOF >>/etc/profile.d/sh.local
    export LANG="en_US.utf8" 
    export LANGUAGE="en_US.utf8" 
    export LC_ALL="en_US.utf8" 
    EOF
    
    cat <<EOF >>/etc/profile.d/csh.local
    export LANG="en_US.utf8" 
    export LANGUAGE="en_US.utf8" 
    export LC_ALL="en_US.utf8" 
    EOF
    
  • Installation facultative de paquets supplémentaires
    sudo yum install mlocate vim bash-completion
    
  • reboot (prise en compte d'un nouveau noyau éventuel, des locales, ..

Installation des paquets Saltstack

  • Saltstack 3001 (salt-master, salt-ssh et salt-api) : https://repo.saltstack.com/#rhel pour CentOS 8
    sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el8.noarch.rpm
    sudo yum install salt-master
    sudo yum install salt-ssh
    sudo yum install salt-api
    

Préparation des dépôts pour CentOS 8 PY3

Ne pas lancer foreman-installer pour l'instant : https://theforeman.org/manuals/2.1/quickstart_guide.html

  • Pour l'installation de The Foreman, j'ai pris la nightly (https://theforeman.org/manuals/nightly/quickstart_guide.html)
    sudo yum -y install https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
    sudo yum -y install https://yum.theforeman.org/releases/nightly/el8/x86_64/foreman-release.rpm
    sudo yum -y install foreman-installer
    

Installer The foreman

  • Installation avec l'activation des plugins salt et proxy_salt
    foreman-installer --enable-foreman-plugin-salt --enable-foreman-proxy-plugin-salt
    
  • Penser à noter le mot de passe admin

Configuration des logiciels

  • Configurer salt et le smart proxy foreman : https://theforeman.org/plugins/foreman_salt/13.0/index.html
    • Autoriser foreman-proxy à exécuter des commandes salt :
      cat <<EOF >/etc/sudoers.d/salt
      Cmnd_Alias SALT = /usr/bin/salt, /usr/bin/salt-key
      foreman-proxy ALL = (ALL) NOPASSWD: SALT
      Defaults:foreman-proxy !requiretty
      EOF
      
  • Configurer salt-master :
    cat <<EOF >/etc/salt/master.d/foreman.conf
    master_tops:
      ext_nodes: /usr/bin/foreman-node
    
    ext_pillar:
      - puppet: /usr/bin/foreman-node
    
    autosign_file: /etc/salt/autosign.conf
    
    external_auth:
      pam:
        saltuser:
          - '@runner'
    
    rest_cherrypy:
      port: 9191
      host: 0.0.0.0
      ssl_key: /etc/puppetlabs/puppet/ssl/private_keys/theforeman.eole.lan.pem
      ssl_crt: /etc/puppetlabs/puppet/ssl/certs/theforeman.eole.lan.pem
    EOF
    

    touch /etc/salt/autosign.conf
    chgrp foreman-proxy /etc/salt/autosign.conf
    chmod 660 /etc/salt/autosign.conf
    
  • Modifier le fichier /etc/salt/foreman.yaml
    cat <<EOF >/etc/salt/foreman.yaml
    ---
    :proto: https
    :host: theforeman.eole.lan
    :port: 443
    # if using http with ssl certificates
    :ssl_ca: "/etc/puppetlabs/puppet/ssl/certs/ca.pem" 
    :ssl_cert: "/etc/puppetlabs/puppet/ssl/certs/theforeman.eole.lan.pem" 
    :ssl_key: "/etc/puppetlabs/puppet/ssl/private_keys/theforeman.eole.lan.pem" 
    # if using http with username and password instead of https with certicates
    #:username: admin
    #:password: changeme
    :timeout:  10
    :salt:  /usr/bin/salt
    :upload_grains:  true
    EOF
    
  • Création de l'utilisateur saltuser avec le mot de passe saltpassword
    adduser --no-create-home -s /bin/false -d / saltuser
    echo "saltpassword" | passwd saltuser --stdin
    
  • Déclarer l'api salt au proxy foreman dans le fichier /etc/foreman-proxy/settings.d/salt.yml :
    cat <<EOF >/etc/foreman-proxy/settings.d/salt.yml
    ---
    :enabled: https
    :autosign_file: /etc/salt/autosign.conf
    :salt_command_user: root
    # Some features require using the Salt API - such as listing environments and retrieving state info
    :use_api: true
    :api_url: https://theforeman.eole.lan:9191
    :api_auth: pam
    :api_username: saltuser
    :api_password: saltpassword
    
    # :saltfile: '/etc/foreman-proxy/settings.d/salt.saltfile'
    
    EOF
    
  • Relancer les services
    systemctl restart foreman
    systemctl restart foreman-proxy
    systemctl restart salt-master
    systemctl restart salt-api
    
  • The foreman est accessible sur l'URL https://theforemn.eole.lan (le DNS doit résoudre la bonne adresse ou modifier votre fichier /etc/hosts)

Problèmes rencontrés

Le cache salt est mis en place trop tard

Ceci provoque une erreur après l'acceptation de la clé du minion : https://community.theforeman.org/t/foreman-2-1-2-salt-3001-undefined-method-merge-for-nil-nilclass/20421/3
J'ai créé un script qu'on va appeler /root/toto qui synchronise les grains avant l'appel à foreman-node et ça fonctionne :

#!/bin/bash

/usr/bin/salt -l quiet --out no_out_quiet "$1" saltutil.sync_grains
/usr/bin/foreman-node $1

Puis appel de ce script dans ext_pillar de etc/salt/master.d/foreman.conf :
ext_pillar:
  - puppet: /root/toto

  • Test avec une nouvelle option : https://github.com/theforeman/smart_proxy_salt/pull/51
    • Clone du dépôt git
      cp /usr/share/gems/gems/smart_proxy_salt-3.1.2/bin/foreman-node foreman-node.stable
      yum install git
      git clone https://github.com/theforeman/smart_proxy_salt.git
      cp smart_proxy_salt/bin/foreman-node /usr/share/gems/gems/smart_proxy_salt-3.1.2/bin/foreman-node
      
    • Ajout de l'option dans le fichier /etc/salt/foreman.yaml
      echo ":filecache: true" >> /etc/salt/foreman.yaml
      
    • Installation d'une dépendance manquante
      yum install https://yum.theforeman.org/plugins/nightly/el8/x86_64/rubygem-msgpack-1.3.3-1.el8.x86_64.rpm
      

Même problème, le fichier n'est pas enore créé quand foreman-node tente de l'ouvrir.

L'exécution de tâches distantes ne fonctionne pas

À étudier ceci :

#4 Updated by Fabrice Barconnière 16 days ago

  • Status changed from En cours to Résolu
  • % Done changed from 50 to 100

On arrête là pour le moment

#5 Updated by Fabrice Barconnière about 7 hours ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) set to 0.0

Also available in: Atom PDF