Capensis.fr
Support professionnel

Provisioning via Foreman/Pulp/Katello


#1

KATELLO

Katello est un plugin de Foreman permettant la gestion des repositories
et des abonnements à ceux ci. Nous pouvons avec katello crée des repositories
de toute pièce en y uploadant des packages ou en se synchronisant avec des
repositories existant. Vous pouvez appliquer des mis à jour, installer
ou desinstaller des packages aux systèmes souscrits depuis l’UI
Formeman. Katello est le remplaçant de Redhat Satellite ou SpaceWalk.

Contexte

Dans la grande majorité des cas, les serveurs d’une organisation téléchargent souvent leurs paquets logiciels auprès de repositories publiques.
Ce qui en cas de mise à jour massive peut etre un gouleau d’étgranglement réseau, c’est pour ces raisons entre autres que le besoin d’héberger des repositories privés peut voir le jour.
Nous pouvons pour cela utiliser plusieurs outlis de création de repositories privés comme par exemple createrepo pour les paquets rpm ou bien reprepo pour les paquets deb.
Nous aurions donc plusieurs outils de gestion de repositories à maintenir + plusieurs outils de gestions d’abonnements + un outil d’inventaire.
C’est pour cela que Katello est là à la rescousse ! Cette boite à outil nous permettra d’avoir un seul outil de gestion de ces fonctionnalitées et plus encore.

Environnement Technique

Centos 7.5.1804
Foreman 1.19.0-1
Katello 3.8.0-5

Lexique

Les plans de synchronisation offrent la possibilité de planifier la synchronisation du repository sur une base quotidienne, hebdomadaire ou mensuelle. Les plans de synchronisation peuvent être appliqués individuellement ou à un ensemble de repositories

Les clés GPG permettent de signer avec la clé privé les meta données du repository et ainsi grace a la clé publique mise a disposition du client, lui permet de vérifier qu’aucune modification ne s’est produite après la signature des meta données

Un produit est une collection de repositories, un client s’abonne généralement à un produit

Un repository est une collection de contenu (RPM, DEB, etc…)

Les erratas sont des mises à jour de paquet entre les versions majeures, des corrections de bugs et des correctifs de sécurité

Un environnement cycle de vie gère les cycles de vie des clients, conserve et promeut les vues de contenu (snapshot de repository) dans celui ci
Par défaut, Katello crée un type spécial d’environnement de cycle de vie appelé Library qui sert de conteneur principal pour les produits et les vues de contenu
Si vous créez un environnement, celui-ci sera dérivé de l’environnement Library. ce qui signifie que Library agira en tant qu’environnement parent pour tous les environnements ultérieurement créés

Une vue de contenu est un snapshot d’un ou plusieurs repositories avec possibilité de filtrage. Le filtre permet de contrôler finement le contenu et peut être utilisé pour inclure ou exclure des packages, des groupes de packages ou des erratas

La clé d’activation est une clé prédéfinie utilisée lors de l’enregistrement des hôtes de contenu. Elle définit les propriétés pouvant être appliquées au client, telles que :

À quelle organisation le client doit-il appartenir
Le client doit faire partie de quel environnement
Quelles sont les vues de contenu que le client doit voir
Limite d’utilisation de l’abonnement pour le client
Activation du repository spécifique sur le client

Sommaire

Configuration global

  1. Configuration du serveur
  2. Installation et configuration de Foreman et Katello
  3. Configuration de la cli
  4. Création de la clé GPG de nos repositories
  5. Configuration de pulp pour utiliser cette clé GPG
  6. Création de plan de synchronisation
  7. Création d’environments de cycle de vie

Configuration management CentOS

  1. Ajout de la clé gpg public pour Centos
  2. Création de produit Centos
  3. Création de repositories Centos
  4. Synchronisation de repositories Centos
  5. Configuration de l’import d’erratas Centos
  6. Création de vue de contenu Centos
  7. Ajout de repositories à la vue de contenu Centos
  8. Publication d’une nouvelle version de la vue de contenu Centos
  9. Promotion à un environnement de la version de la vue de contenu Centos
  10. Création d’une clé d’activation Centos

Configuration management Debian

  1. Ajout de la clé gpg public pour Debian
  2. Création de produit Debian
  3. Création de repositories Debian
  4. Synchronisation de repositories Debian
  5. Création de vue de contenu Debian
  6. Ajout de repositories à la vue de contenu Debian
  7. Publication d’une nouvelle version de la vue de contenu Debian
  8. Promotion à un environnement de la version de la vue de contenu Debian
  9. Création d’une clé d’activation Debian

Configuration client

  1. Configuration client Centos
  2. Configuration client Debian

Matériel requis :

2 VCPUs
8 Go de mémoire (12 Go fortement recommandé)
/var/lib/pulp doit être volumineux, mais peut varier en fonction du nombre de systèmes d’exploitation que vous souhaitez synchroniser (Prévoir 30 Go par repository)
/var/spool/squid (30% de la capacité /var/lib/pulp)
/var/lib/mongodb (40% de la capacité /var/lib/pulp)
20 Go pour la racine (/)

Ports requis (connexions externes) :
80 TCP - HTTP, Provisioning
443 TCP - HTTPS, Accès Web et communication avec les API
5647 TCP - qdrouterd - Action sur client et smart proxy
9090 TCP - HTTPS - Communication avec smart proxy

Configuration du serveur

Hostname

hostname=katello.capensis.fr

ip=$(ip a | grep $(ip r | grep default | awk '{print $3}' | sed -r 's|\.[0-9]{3}$||g') | awk '{print $2}' | sed -r 's|/[0-9]{2}$||g')

hostnamectl set-hostname $hostname

echo "$ip $(hostname -f) $(hostname -s)" >> /etc/hosts

Pare feu

firewall-cmd --permanent --zone=public --add-port=80/tcp --add-port=443/tcp --add-port=5647/tcp --add-port=9090/tcp

firewall-cmd --reload

Temps

Des fonctionnalités de Katello ne fonctionneront pas correctement en cas de décalage d’horloge

timedatectl set-timezone Europe/Paris
yum install chrony -y
systemctl enable chronyd && systemctl start chronyd
chronyc sources

Installation et configuration de Foreman et Katello

setenforce 0 ; sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
yum -y localinstall https://fedorapeople.org/groups/katello/releases/yum/3.8/katello/el7/x86_64/katello-repos-latest.rpm
yum -y localinstall https://yum.theforeman.org/releases/1.19/el7/x86_64/foreman-release.rpm
yum -y localinstall https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
yum -y localinstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install foreman-release-scl python-django
yum -y update
yum -y install katello

Eviter des erreurs de l’installateur en vue de l’installation sans puppetserver

https://projects.theforeman.org/issues/25686
https://projects.theforeman.org/issues/25685
https://projects.theforeman.org/issues/25684

yum install java-1.8.0-openjdk -y
groupadd puppet && puppet module install puppetlabs-strings
sed -i 's/foreman_smartproxy { $foreman_proxy::registered_name:/foreman_smartproxy { $foreman_proxy::registered_name:\n      require         => Class['apache::service'],/g' \
        /usr/share/foreman-installer/modules/foreman_proxy/manifests/register.pp

Installateur

[root@katello ~]foreman-installer --scenario katello \
 --foreman-initial-organization "Capensis" \
 --foreman-initial-location "Lille" \
 --foreman-proxy-content-puppet=false \ 
 --puppet-agent=false \
 --no-enable-puppet \
 --puppet-server=false \
 --puppet-server-ca=false \
 --foreman-proxy-puppet=false \
 --foreman-proxy-puppetca=false \
 --foreman-proxy-manage-puppet-group=false \
 --foreman-proxy-dhcp=false \
 --foreman-proxy-dns=false \
 --foreman-proxy-tftp=false \
 --foreman-puppetrun=false

Installing             Done                                               [100%] [.............................]
  Success!
  * Katello is running at https://katello.capensis.fr
      Initial credentials are admin / **********
  * To install an additional capsule on a separate machine run the following command:

      capsule-certs-generate --capsule-fqdn "$CAPSULE" --certs-tar "/root/$CAPSULE-certs.tar"

  The full log is at /var/log/foreman-installer/katello.log

Une fois l’installation terminé, vous devriez voir la page de login. Ouf ca fonctionne :wink:

Lorsque vous vous connectez avec l’utilisateur admin et le mot de passe fourni dans la sortie standard pour la première fois, vous voyez le tableau de bord Foreman, qui affiche un aperçu de vos hosts

Configuration de la cli

cat <<EOF> ~/.hammer/cli.modules.d/foreman.yml
:foreman:
 :host: 'katello.capensis.fr'
 :username: 'admin'
 :password: '**********'
EOF

hammer defaults add --param-name organization --param-value "Capensis"
hammer defaults add --param-name location --param-value "Lille"

Création de la clé GPG de nos repositories

echo "cert-digest-algo SHA256" >> /var/lib/pulp/gpg-home/gpg.conf
echo "digest-algo SHA256" >> /var/lib/pulp/gpg-home/gpg.conf

export real_name=repos
export email=katello@capensis.fr

gpg --homedir /var/lib/pulp/gpg-home --batch --gen-key <<EOF
Key-Type: RSA
Key-Length: 4096
Key-Usage: sign
Name-Real: ${real_name}
Name-Email: ${email}
Name-Comment: sign metadata repo
Expire-Date: 0
%commit
EOF

Nous pouvons voir la clé générée en faisant

gpg --homedir /var/lib/pulp/gpg-home --list-keys

Configuration de pulp pour utiliser cette clé GPG

GPG_KEY_ID=$(gpg --list-secret-keys --homedir /var/lib/pulp/gpg-home --with-colons "${real_name}" 2>/dev/null | awk -F: '/^sec:/ { print $5 }')

cat /usr/local/bin/sign.sh 
#!/bin/bash -e
rm -f ${1}.gpg
gpg --homedir /var/lib/pulp/gpg-home --default-key $GPG_KEY_ID -abs -o ${1}.gpg ${1}

cat /etc/pulp/server/plugins.conf.d/yum_distributor.json
{
  "gpg_sign_metadata": true,
  "gpg_cmd": "/usr/local/bin/sign.sh",
  "gpg_key_id": "$GPG_KEY_ID"
}

cat /etc/pulp/server/plugins.conf.d/deb_distributor.json
{
  "gpg_sign_metadata": true,
  "gpg_cmd": "/usr/local/bin/sign.sh",
  "gpg_key_id": "$GPG_KEY_ID"
}

chown -R apache.apache /var/lib/pulp/gpg-home

systemctl restart pulp_workers.service

Aprés synchronisation d’un repository distant, la signature du fichier de métadonnées sera présent.
Le gestionnaire de paquets utilisera la clé gpg publique fourni (comme nous le ferons plus tard) pour vérifier cette signature à la racine du repository.

Nous aurons donc pour :

Centos : Le gestionnaire de paquets rpm trouvera la signature du fichier de métadonnées repodata/repond.xml dans le fichier repodata/repomd.xml.asc
Debian : Le gestionnaire de paquets deb trouvera la signature du fichier de métadonnées Release dans le fichier Release.gpg

Création de plan de synchronisation

Menu de gauche -> Contenu -> Cliquez sur Plans de synchronisation

Cliquez sur le bouton créer un plan de synchronisation

Entrez les informations relative au plan de synchronisation et cliquez sur sauvegarder

Ligne de commande :

hammer sync-plan create --name 'CentOS7_sync_plan' \
 --description 'plan de synchronisation des repositories Centos 7' \
 --interval weekly \
 --sync-date $(date +"%Y-%m-%d")" 01:00:00" \
 --enabled yes  

Création d’environments de cycle de vie

Menu de gauche -> Contenu -> Environnements de cycle

Cliquez sur le bouton Create Environment Path

Entrez les informations relative à l’environnement de cycle de vie, par exemple “Preproduction” et “Production” et cliquez sur sauvegarder

Ligne de commande :

hammer lifecycle-environment create \
  --name "Production" \
  --label "Production" \
  --prior "Library"

Une fois crée, on peut voir la liste des environnements

hammer lifecycle-environment list

Ajout de la clé gpg public pour Centos

Menu de gauche -> Contenu -> Content Credentials

Cliquez sur le bouton Create Content Credential

Entrez les infos de votre Clé GPG et sauvegardez
Collez le contenu de la clé publique générée plus tôt.
Nous pouvons récuperé le contenu de la clé publique via cette commande

gpg --homedir /var/lib/pulp/gpg-home --export -a "${real_name}"

Ligne de commande :

mkdir /etc/pki/rpm-gpg/import/
cd /etc/pki/rpm-gpg/import/
gpg --homedir /var/lib/pulp/gpg-home --export -a "${real_name}" > RPM-GPG-KEY-CentOS-7
hammer gpg create \
  --key "RPM-GPG-KEY-CentOS-7" \
  --name "RPM-GPG-KEY-CentOS-7"

Création de produit Centos

Menu de gauche -> Contenu -> Produits

Cliquez sur le bouton Create Product

Entrez les informations relative au produit et cliquez sur sauvegarder

Ligne de commande :

hammer product create \
  --name "CentOS7" \
  --description "Collection de repositories pour CentOS 7"

Création de repositories Centos

Cliquez sur le bouton nouveau réferentiel

Entrez les informations relative au repository et cliquez sur sauvegarder

Ligne de commande :

hammer repository create \
  --product "CentOS7" \
  --name "base_x86_64" \
  --label "base_x86_64" \
  --content-type "yum" \
  --download-policy "immediate" \
  --gpg-key "RPM-GPG-KEY-CentOS-7" \
  --url "http://mirror.centos.org/centos/7/os/x86_64/" \
  --mirror-on-sync "yes" \
  --verify-ssl-on-sync "yes"

Répétez l’operation autant de fois que vous le souhaitez, une fois crée, on peut voir la liste des environnements

Ligne de commande :

hammer repository list 

Synchronisation de repositories Centos

Une fois les repositories ajoutés au produit, selectionnez les et cliquez sur le bouton synchroniser

Ligne de commande :

for i in $(hammer repository list --order ID | awk '{print $1}' | egrep -o '[0-9]{0,}'); do \
  hammer repository synchronize \
  --product "CentOS7" \
  --id "$i"; \
  done

Configuration de l’import d’erratas Centos

Installer les paquets nécessaires

[root@katello /]# yum install pulp-admin-client pulp-rpm-admin-extensions perl-XML-Simple perl-Text-Unidecode \
perl-Switch perl-Data-Dumper perl-Frontier-RPC -y

Télécharger les informations d’erratas

[root@katello /]# wget -q -N http://cefs.steve-meier.de/errata.latest.xml -O /tmp/errata.latest.xml
[root@katello /]# wget -q -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml -O /tmp/com.redhat.rhsa-all.xml

Télécharger l’utilitaire

[root@katello /]# wget -q https://raw.githubusercontent.com/brdude/pulp_centos_errata_import/master/errata_import.pl -O /sbin/errata_import.pl
[root@katello /]# chmod u+x /sbin/errata_import.pl

Configurer l’authentification pulp

[root@katello /]# cat /etc/pki/katello/certs/pulp-client.crt /etc/pki/katello/private/pulp-client.key > ~/.pulp/certs.pem
[root@katello /]# chmod 0400 ~/.pulp/certs.pem

Récupérer l’id du repository sur lequel on veut importer les erratas et importer

[root@katello /]# repo='base_x86_64'
[root@katello /]# pulp-admin rpm repo search --str-eq="display_name=$repo" --fields id --limit 1
+----------------------------------------------------------------------+
                              Repositories
+----------------------------------------------------------------------+

Id:           2c993b6b-67c0-4c7f-988d-dff4891fc021

[root@katello /]# errata_import.pl --errata=/tmp/errata.latest.xml --rhsa-oval=/tmp/com.redhat.rhsa-all.xml --include-repo=2c993b6b-67c0-4c7f-988d-dff4891fc021

Régler “Mirror on Sync” sur “no” pour éviter que les erratas importés ne soient effacés lors de la prochaine synchronisation

[root@katello /]# hammer repository update --organization "Capensis" --name "base_x86_64" --product "CentOS7" --mirror-on-sync false

Vous pouvez voir que les erratas ont bien été importé dans le repository choisi

Ligne de commande :

hammer repository info --name "base_x86_64" --product "CentOS7"

Vous pouvez aussi retrouver ces informations dans la partie errara

Menu de gauche -> Contenu -> Errata

Ligne de commande :

hammer erratum list

! Ne pas oublier de publier une nouvelle version du repository dans la vue de contenu et de le promovoir à l’environnement voulu.

Création de vue de contenu Centos

Menu de gauche -> Contenu -> Affichages de contenu

Cliquez sur le bouton Créer un nouvel affichage

Remplissez les informations relative a l’affcihage de contenu et cliquez sur sauvegarder

Ligne de commande :

 hammer content-view create \
  --name "CentOS7_Content_View" \
  --description "Snapshot de repositories Centos 7"

Ajout de repositories à la vue de contenu Centos

Une fois les repositories ajoutés à l’affichage de contenu, selectionnez les et cliquez sur ajouter des référentiels

Ligne de commande :

for i in $(hammer repository list --order ID | awk '{print $1}' | egrep -o '[0-9]{0,}'); do \
  hammer content-view add-repository \
  --name "CentOS7_Content_View" \
  --product "CentOS7" \
  --repository-id "$i"; \
  done

Publication d’une nouvelle version de la vue de contenu Centos

Aprés l’ajout des repositories, Cliquez sur le bouton Publier la nouvelle version

Entrez une description et cliquez sur le bouton Sauvegarder

Ligne de commande :

hammer content-view publish \
  --name "CentOS7_Content_View" \
  --description "Initial version"

Promotion à un environnement de la version de la vue de contenu Centos

Pour attacher votre version de vue de contenu a un environnement, cliquez sur Promouvoir

Choissisez l’environnement pour lequel vous voulez publier cette version, par exemple “Preproduction”, cliquez ensuite sur le bouton Promovoir cette version, et sauvegardez.

Les hosts attachés a cette environnement auront accès aux repositories dans la version promue à cette environnement.
Si nous mettons a jour nos repos, il faudra en publier et la promovoir a cette environnement pour les hosts y aient accès.

Ligne de commande :

hammer content-view version promote \
  --content-view "CentOS7_Content_View" \
  --version "1.0" \
  --to-lifecycle-environment "preproduction"

Création d’une clé d’activation Centos

Menu de gauche -> Contenu -> Clés d’activation
Ensuite, Cliquez sur le bouton Create Activation Key

Entrez les informations relative a la clé d’activation et cliquez sur le bouton Sauvegarder

Une fois la clé d’activation sauvegardée, cliquez sur l’onglet Abonnements

Sélectionnez le produit pour y ajouter les repositories associés et cliquez sur le bouton Ajouter les éléments séléctionnés

Ligne de commande :

hammer activation-key create \
  --name "centos_preproduction_distribution" \
  --description "Clé d'activation de preproduction" \
  --lifecycle-environment "preproduction" \
  --content-view "CentOS7_Content_View" \
  --unlimited-hosts

id=$(hammer subscription list | grep CentOS7 | awk '{print $1}' | egrep -o '[0-9]{0,}')

hammer activation-key add-subscription \
  --name "centos_preproduction_distribution" \
  --quantity "1" \
  --subscription-id "$id"

Ajout de la clé gpg public pour Debian

Menu de gauche -> Contenu -> Content Credentials

Cliquez sur le bouton Create Content Credential

Entrez les infos de votre Clé GPG et sauvegardez
Collez le contenu de la clé publique générée plus tôt.
Nous pouvons récuperé le contenu de la clé publique via cette commande

gpg --homedir /var/lib/pulp/gpg-home --export -a "${real_name}"

Ligne de commande :

mkdir /etc/pki/deb-gpg/import/
cd /etc/pki/deb-gpg/import/
gpg --homedir /var/lib/pulp/gpg-home --export -a "${real_name}" > RPM-GPG-KEY-Debian-9
hammer gpg create \
  --key "RPM-GPG-KEY-Debian-9" \
  --name "RPM-GPG-KEY-Debian-9"

Création de produit Debian

Menu de gauche -> Contenu -> Produits

Cliquez sur le bouton Create Product

Entrez les informations relative au produit et cliquez sur sauvegarder

Ligne de commande :

hammer product create \
  --name "Debian9" \
  --description "Collection de repositories pour Debian 9"

Création de repositories Debian

Cliquez sur le bouton nouveau réferentiel

Entrez les informations relative au repository et cliquez sur sauvegarder

Ligne de commande :

hammer repository create \
  --product "Debian9" \
  --name "stretch" \
  --label "stretch" \
  --content-type "deb" \
  --url "http://deb.debian.org/debian/" \
  --deb-architectures stretch \
  --deb-components main,contrib,non-free \
  --download-policy "immediate" \
  --gpg-key "RPM-GPG-KEY-Debian-9" \
  --deb-releases amd64
  --mirror-on-sync "yes" \
  --verify-ssl-on-sync "yes"

Répétez l’operation autant de fois que vous le souhaitez, une fois crée, on peut voir la liste des environnements

Ligne de commande :

hammer repository list 

Synchronisation de repositories Debian

Une fois les repositories ajoutés au produit, selectionnez les et cliquez sur le bouton synchroniser

Ligne de commande :

for i in $(hammer repository list --order ID | awk '{print $1}' | egrep -o '[0-9]{0,}'); do \
  hammer repository synchronize \
  --product "Debian9" \
  --id "$i"; \
  done

Création de vue de contenu Debian

Menu de gauche -> Contenu -> Affichages de contenu

Cliquez sur le bouton Créer un nouvel affichage

Remplissez les informations relative a l’affcihage de contenu et cliquez sur sauvegarder

Ligne de commande :

 hammer content-view create \
  --name "Debian9_Content_View" \
  --description "Snapshot de repositories Debian 9"

Ajout de repositories à la vue de contenu Debian

Une fois les repositories ajoutés à l’affichage de contenu, selectionnez les et cliquez sur ajouter des référentiels

Ligne de commande :

for i in $(hammer repository list --order ID | awk '{print $1}' | egrep -o '[0-9]{0,}'); do \
  hammer content-view add-repository \
  --name "Debian9_Content_View" \
  --product "Debian9" \
  --repository-id "$i"; \
  done

Publication d’une nouvelle version de la vue de contenu Debian

Aprés l’ajout des repositories, Cliquez sur le bouton Publier la nouvelle version

Entrez une description et cliquez sur le bouton Sauvegarder

Ligne de commande :

hammer content-view publish \
  --name "Debian9_Content_View" \
  --description "Initial version"

Promotion à un environnement de la version de la vue de contenu Debian

Pour attacher votre version de vue de contenu a un environnement, cliquez sur Promouvoir

Choissisez l’environnement pour lequel vous voulez publier cette version, par exemple “Preproduction”, cliquez ensuite sur le bouton Promovoir cette version, et sauvegardez.

Les hosts attachés a cette environnement auront accès aux repositories dans la version promue à cette environnement.
Si nous mettons a jour nos repos, il faudra en publier et la promovoir a cette environnement pour les hosts y aient accès.

Ligne de commande :

hammer content-view version promote \
  --content-view "Debian9_Content_View" \
  --version "1.0" \
  --to-lifecycle-environment "preproduction"

Création d’une clé d’activation Debian

Menu de gauche -> Contenu -> Clés d’activation

Ensuite, Cliquez sur le bouton Create Activation Key

Entrez les informations relative a la clé d’activation et cliquez sur le bouton Sauvegarder

Une fois la clé d’activation sauvegardée, cliquez sur l’onglet Abonnements

Sélectionnez le produit pour y ajouter les repositories associés et cliquez sur le bouton Ajouter les éléments séléctionnés

Ligne de commande :

hammer activation-key create \
  --name "debian_preproduction_distribution" \
  --description "Clé d'activation de preproduction" \
  --lifecycle-environment "preproduction" \
  --content-view "Debian9_Content_View" \
  --unlimited-hosts

id=$(hammer subscription list | grep Debian9 | awk '{print $1}' | egrep -o '[0-9]{0,}')

hammer activation-key add-subscription \
  --name "debian_preproduction_distribution" \
  --quantity "1" \
  --subscription-id "$id"

Configuration client Centos

ajouter les serveur katello dans le fichier /etc/hosts

[root@client-centos ~]# yum -y install subscription-manager
[root@client-centos ~]# yum -y install http://katello.capensis.fr/pub/katello-ca-consumer-katello.capensis.fr-1.0-1.noarch.rpm

[root@client-centos ~]# subscription-manager register --org="Capensis" --activationkey="centos_preproduction_distribution"

The system has been registered with ID: 2ffe4169-4afe-4acf-9fec-3ce5ab76a341
No products installed.
List out the available subscription using the following command.

Vous pouvez maintenant retourner vers le dashboard Katello.

Menu de gauche -> Hôtes -> Hôtes du contenu

Comme nous pouvons le constater, cet hôte est automatiquement enregistré dans l’environnement preproduction et le contenu auquel il aura accès est dans CentOS7_Content_View.

Maintenant, accédez à nouveau au serveur (client-centos.cepensis.fr) et vérifiez quels référentiels sont activés. Exécutez les commandes ci-dessous.

[root@client-centos ~]# subscription-manager repos --list
+----------------------------------------------------------+
    Available Repositories in /etc/yum.repos.d/redhat.repo
+----------------------------------------------------------+
Repo ID:   Capensis_CentOS7_updates_x86_64
Repo Name: updates_x86_64
Repo URL:  https://katello.capensis.fr/pulp/repos/Capensis/Preproduction/CentOS7_Content_View/custom/CentOS7/updates_x86_64
Enabled:   1

Repo ID:   Capensis_CentOS7_base_x86_64
Repo Name: base_x86_64
Repo URL:  https://katello.capensis.fr/pulp/repos/Capensis/Preproduction/CentOS7_Content_View/custom/CentOS7/base_x86_64
Enabled:   1

Repo ID:   Capensis_CentOS7_centosplus_x86_64
Repo Name: centosplus_x86_64
Repo URL:  https://katello.capensis.fr/pulp/repos/Capensis/Preproduction/CentOS7_Content_View/custom/CentOS7/centosplus_x86_64
Enabled:   1

Repo ID:   Capensis_CentOS7_extras_x86_64
Repo Name: extras_x86_64
Repo URL:  https://katello.capensis.fr/pulp/repos/Capensis/Preproduction/CentOS7_Content_View/custom/CentOS7/extras_x86_64
Enabled:   1

Repo ID:   Capensis_CentOS7_katello-client_x86_64
Repo Name: katello-client_x86_64
Repo URL:  https://katello.capensis.fr/pulp/repos/Capensis/Preproduction/CentOS7_Content_View/custom/CentOS7/katello-client_x86_64
Enabled:   1

Nous pouvons maintenant déplacer le dénifition des repositories officiels

[root@client-centos ~]# cd /etc/yum.repos.d/
[root@client-centos yum.repos.d]# mv CentOS-* epel* katello-client.repo /tmp/
[root@client-centos yum.repos.d]# yum clean all
[root@client-centos yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, ovl, product-id, search-disabled-repos, subscription-manager
Determining fastest mirrors
Capensis_CentOS7_base_x86_64                                                                                                                                                                | 2.1 kB  00:00:00     
Capensis_CentOS7_centosplus_x86_64                                                                                                                                                          | 2.5 kB  00:00:00     
Capensis_CentOS7_extras_x86_64                                                                                                                                                              | 2.5 kB  00:00:00     
Capensis_CentOS7_katello-client_x86_64                                                                                                                                                      | 2.1 kB  00:00:00     
Capensis_CentOS7_updates_x86_64                                                                                                                                                             | 2.5 kB  00:00:00     
(1/15): Capensis_CentOS7_base_x86_64/group                                                                                                                                                  | 895 kB  00:00:00     
(2/15): Capensis_CentOS7_base_x86_64/updateinfo                                                                                                                                             |   92 B  00:00:00     
(3/15): Capensis_CentOS7_base_x86_64/primary                                                                                                                                                | 550 kB  00:00:00     
(4/15): Capensis_CentOS7_centosplus_x86_64/group                                                                                                                                            |  124 B  00:00:00     
(5/15): Capensis_CentOS7_centosplus_x86_64/updateinfo                                                                                                                                       |   92 B  00:00:00     
(6/15): Capensis_CentOS7_centosplus_x86_64/primary                                                                                                                                          | 1.9 MB  00:00:00     
(7/15): Capensis_CentOS7_extras_x86_64/group                                                                                                                                                |  124 B  00:00:00     
(8/15): Capensis_CentOS7_extras_x86_64/updateinfo                                                                                                                                           |   92 B  00:00:00     
(9/15): Capensis_CentOS7_extras_x86_64/primary                                                                                                                                              | 140 kB  00:00:00     
(10/15): Capensis_CentOS7_katello-client_x86_64/group                                                                                                                                       |  987 B  00:00:00     
(11/15): Capensis_CentOS7_katello-client_x86_64/updateinfo                                                                                                                                  |   92 B  00:00:00     
(12/15): Capensis_CentOS7_katello-client_x86_64/primary                                                                                                                                     | 2.6 kB  00:00:00     
(13/15): Capensis_CentOS7_updates_x86_64/group                                                                                                                                              |  124 B  00:00:00     
(14/15): Capensis_CentOS7_updates_x86_64/updateinfo                                                                                                                                         |   92 B  00:00:00     
(15/15): Capensis_CentOS7_updates_x86_64/primary                                                                                                                                            | 3.7 MB  00:00:00     
Capensis_CentOS7_base_x86_64                                                                                                                                                                             1621/1621
Capensis_CentOS7_centosplus_x86_64                                                                                                                                                                           93/93
Capensis_CentOS7_extras_x86_64                                                                                                                                                                             432/432
Capensis_CentOS7_katello-client_x86_64                                                                                                                                                                         8/8
Capensis_CentOS7_updates_x86_64                                                                                                                                                                          1614/1614
repo id                                                                                                        repo name                                                                                     status
!Capensis_CentOS7_base_x86_64                                                                                  base_x86_64                                                                                   1621
!Capensis_CentOS7_centosplus_x86_64                                                                            centosplus_x86_64                                                                               93
!Capensis_CentOS7_extras_x86_64                                                                                extras_x86_64                                                                                  432
!Capensis_CentOS7_katello-client_x86_64                                                                        katello-client_x86_64                                                                            8
!Capensis_CentOS7_updates_x86_64                                                                               updates_x86_64                                                                                1614
repolist: 3768

Maintenant, seuls les référentiels Katello doivent être disponibles.

Si nous voulons transmettre les mises à jour du tableau de bord Katello à ses hôtes de contenu, le package katello-agent doit être installé sur les clients.

Le package de l’agent Katello n’est pas disponible dans les référentiels CentOS 7 par défaut.

[root@client-centos ~]# yum -y install http://fedorapeople.org/groups/katello/releases/yum/3.8/client/el7/x86_64/katello-client-repos-latest.rpm
[root@client-centos ~]# yum -y install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@client-centos ~]# yum install katello-agent -y
[root@client-centos ~]# systemctl start goferd
[root@client-centos ~]# systemctl enable goferd

Depuis l’onglet Packages, nous pouvons maintenant installer, supprimer et mettre à jour les packages de ce serveur client

Configuration client Debian

Ajouter le serveur katello dans le fichier /etc/hosts

root@client-debian:/# apt update   
root@client-debian:/# apt install -y apt-transport-https gnupg  
root@client-debian:/# apt install -y python-pip   

root@client-debian:/# pip install deb-subscription   

root@client-debian:/# deb_subscription --fqdn katello.capensis.fr --organization Capensis --location Lille --activation_key debian_preproduction_distribution
The system has been registred to katello

Vous pouvez maintenant retourner vers le dashboard Katello.

Menu de gauche -> Hôtes -> Hôtes du contenu

Comme nous pouvons le constater, cet hôte est automatiquement enregistré dans l’environnement preproduction et le contenu auquel il aura accès est dans Debian9_Content_View.

Nous ne pourrons malheureusement pas gérer les packages de nos hosts Debian pour le moment via l’interface web Foreman
en attendant une prise en charge des systèmes debian par l’agent katello

  • Nous pouvons maintenant supprimer le dénifition des repositories officiels dans le fichier /etc/apt/sources.list*
root@client-debian:/# vi /etc/apt/sources.list
root@client-debian:/# apt clean
root@client-debian:/# rm /var/lib/apt/lists/*
root@client-debian:/# apt update
Ign:1 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch-backports stretch-backports InRelease
Ign:2 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch InRelease
Get:3 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch-backports stretch-backports Release [2855 B]
Get:4 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch Release [2805 B]
Ign:5 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch-backports stretch-backports Release.gpg
Ign:6 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch Release.gpg
Get:10 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch/main amd64 Packages [19.1 MB]
Get:11 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch/contrib amd64 Packages [108 kB]                                                            
Get:12 https://katello.capensis.fr/pulp/deb/Capensis/Preproduction/Debian9_Content_View/custom/Debian9/stretch stretch/non-free amd64 Packages [184 kB]                                                           
Fetched 19.4 MB in 39s (489 kB/s)                                                                                                                                                                                 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
43 packages can be upgraded. Run 'apt list --upgradable' to see them.

Maintenant, seuls les repositories Katello doivent être disponibles.

Merci et Bon courage à vous :wink:

Références

https://theforeman.org/plugins/katello/3.8/installation/index.html
https://docs.pulpproject.org
https://riseup.net/ru/security/message-security/openpgp/best-practices