Tech Blog.

Thoughts, stories, ideas.

Gestion des version et des correctifs avec SUSE Manager 3

25. August 2016

Le programme SUSE Manager 3 beta a été lancé fin décembre 2015. Nous voulions profiter de cette occasion pour avoir un premier aperçu du contenu de la prochaine version. Tout d’abord, le changement le plus important est le Integration de SaltSack comme Remote Execution and Configuration Management Framework.

Pour ce billet de blog, nous avons choisi le cas d’utilisation suivant et rédigé un court manuel sur la façon dont il serait mis en œuvre dans la pratique.

Scénario

Pour s’assurer qu’une gestion raisonnable des versions et des correctifs peut être effectuée dans des environnements de systèmes informatiques plus vastes, des systèmes identiques sont souvent utilisés dans des environnements différents (phases ou étapes). Lorsqu’une nouvelle version ou un nouveau correctif est disponible, il est d’abord appliqué aux systèmes de développement, puis soumis à des tests et des ajustements avant d’être déployé dans les systèmes de production.

SUSE Manager fournit une solution simple pour ce scénario. Ainsi, les correctifs et les paquets individuels peuvent être transmis d’un environnement à l’autre. Il est également possible de synchroniser un état entier ou un instantané d’un point défini dans le temps d’un environnement à l’autre.

Les prérequis

Les configurations décrites supposent qu’un SUSE Manger 3 est installé et qu’au moins un système client est connecté avec SLES11 ou SLES12 en tant que Salt Minion.

Configuration

Pour que l’installation complète soit faite dans le shell, les paquets spacewalk-utils et spacecmd doivent être installés.

 

suma3:~ # zypper in -y spacewalk-utils spacecmd

 

Ensuite, nous afficherons les canaux logiciels existants.

 

suma3:~ # spacewalk-manage-channel-lifecycle \
-u admin -p $PASSWORD -l

 

Actuellement, un seul canal est visible. Le Vendor Channel contient tous les paquets et correctifs téléchargés depuis le CCN.

Donc un miroir des derniers paquets de SUSE.

Les quatre environnements (phases) sont maintenant créés.

 

suma3:~ # spacewalk-manage-channel-lifecycle \
-u admin -p $PASSWORD \
--channel sles12-sp1-pool-x86_64 --init \
-P devl,test,inte,prod
suma3:~ # for PHASE in devl test inte prod ; do
> spacewalk-manage-channel-lifecycle \
> -u admin -p $PASSWORD \
> --channel $PHASE-sles12-sp1-pool-x86_64 \
> --promote -P devl,test,inte,prod
> done

 

Si les environnements (phases) ne sont pas explicitement spécifiés avec -P, la valeur par défaut (dev, test, prod) est utilisée. Si l’arborescence des canaux est à nouveau affichée avec la commande ci-dessus, les cinq canaux de base sont visibles. Le fournisseur et les quatre canaux d’environnement créés (devl, test, inte, prod).

Afin de pouvoir tester la configuration, nous affectons un système client SUSE Manager à un environnement, dans notre exemple l’environnement de test.

 

suma3:~ # spacecmd -u admin -p $PASSWORD -y \
system_setbasechannel suma3-client1.example \
test-sles12-sp1-pool-x86_64

 

Sur le système client, la commande suivante peut être utilisée pour vérifier si l’affectation a fonctionné.

 

suma3-client1:~ # zypper lr

 

Seuls les référentiels de l’environnement affecté apparaissent.

Il est maintenant possible d’importer des paquets ou des correctifs individuels dans un environnement via l’interface Web ou la CLI, ou de synchroniser un environnement avec un autre.

##be behind the scenes

Dès qu’un système client est affecté à un canal de base, un fichier contenant les référentiels correspondants est créé dans le SUSE Manager en tant que Salt Master.

 

suma3:~ # cd /srv/susemanager/salt/channels ; \
> cat channels.repo.044625baad3d49889f067f14d7cae86f
[susemanager:test-sles12-sp1-pool-x86_64]
name=test-sles12-sp1-pool-x86_64
enabled=1
autorefresh=1
baseurl=https://suma3.example/rhn/manager/download/test-sles12-sp1-pool-x86_64?eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0ODc4MzU1NDgsImlhdCI6MTQ1NjI5OTU0OCwibmJmIjoxNDU2Mjk5NDI4LCJvcmciOjEsImp0aSI6IlRrYldFQWUwaHZGdzNZUklQQk1aWmcifQ.cmGZyuMU_SJT_fHRmj9X0zP7vM1A2KwWgNRp6m4BDcI
[...]

 

Le suffixe du nom du fichier correspond à l’ID de Salt Minion du client respectif, dans notre cas l’ID de suma3-client1.example.

SUSE Manager exécute alors la commande suivante, qui réécrit le fichier /etc/zypp/repos.d/susemanager:channels.repo sur le système cible suma3-client1.exampleen cas de différences avec la version locale.

 

suma3:~ # salt 'suma3-client1.example' state.apply

 

Interaction Spacewalk / SaltStack

Spacewalk passe ses commandes au Salt Master via son rest API, et le salt-netapi-client développé par SUSE est utilisé comme bibliothèque client.

Conclusion

Grâce à la gestion de la configuration de SaltStack, cette configuration a pu être réalisée très facilement. Par rapport aux versions précédentes de SUSE Manager, qui utilisaient rhns comme pile de clients, la configuration était beaucoup plus simple et les sources du référentiel étaient attribuées aux clients plus rapidement.

L’intégration de SaltStack est un enrichissement pour le SUSE Manager, qui apporte des avantages considérables non seulement dans le cas d’application décrit.