Tâche #30564
Scénario #30562: Tester l'installation de The Foreman project
Installer The Foreman sur une CentOS
Status:
Fermé
Priority:
Normal
Assigned To:
Target version:
Start date:
08/31/2020
Due date:
% Done:
100%
Remaining (hours):
0.0
History
#1 Updated by Fabrice Barconnière about 3 years ago
- Assigned To set to Fabrice Barconnière
#2 Updated by Fabrice Barconnière about 3 years ago
- Status changed from Nouveau to En cours
#3 Updated by Fabrice Barconnière about 3 years 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
- Autoriser
- 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 passesaltpassword
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
- Clone du dépôt git
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 about 3 years 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 3 years ago
- Status changed from Résolu to Fermé
- Remaining (hours) set to 0.0