Blog scientifique, technologique, environnemental et politique de Nicolas HAHN

Aller au contenu | Aller au menu | Aller à la recherche

Installer SpaceWalk 2.3 sur CentOS 7

Cela faisait longtemps que je n'avais pas réinstallé un serveur SpaceWalk (la version communautaire de RedHat Satellite), et je me suis donc amusé aujourd'hui à le faire sur un serveur fonctionnant sous linux CentOS 7 (la version communautaire de RedHat Enterprise Linux 7). Evidemment, cela ne s'est pas passé comme prévu. Ce billet explique les étapes pour mener à bien cette aventure.

Le but est donc d'installer son propre serveur SpaceWalk v 2.3.

Pour rappel, un serveur SpaceWalk ou RedHat Satellite vous permet de gérer vos installations de serveurs Linux de façon centralisée, de gérer les packages et les mises à jour, d'exécuter des scripts lors du déploiement, de provisionner les serveurs, bref, d'automatiser au maximum vos déploiements de serveurs RedHat en particulier. La différence majeure avec RedHat Satellite, c'est que SpaceWalk n'a pas de souscription RedHat lui permettant de downloader automatiquement les différentes distributions linux et les packages, les erratas, etc depuis les serveurs officiels RedHat. Mais il y a bien entendu d'autres moyens de synchroniser les "images" des distributions linux gérées dans SpaceWalk pour que les packages soient tout le temps à jour.

J'ai décidé de réaliser mon installation sur un serveur fraichement installé sous CentOS 7, avec les dernières mises à jour de packages pour me retrouver en CentOS 7.0.1406 à la date d'écriture de ce billet. SpaceWalk a besoin d'une base de données pour son fonctionnement. Il peut utiliser un back-end Oracle ou PostgreSQL. Bien évidemment, nous utiliserons PostgreSQL 9.2 disponible avec CentOS 7 et fort heureusement, bien que nous puissions utiliser un serveur de base de données PostgreSQL existant, nous allons choisir ici d'installer SpaceWalk directement avec sa base de données, afin que toutes les tâches d'installation soient automatisées au maximum.

Avertissement: un serveur SpaceWalk nécessite beaucoup d'espace de stockage. non seulement une distribution Linux peut atteindre plus de 6 Go, mais en plus, il faut considérer que cet espace utilisé doit être au minimum doublé. Enfin, plus vous allez déployer de serveurs avec votre installation SpaceWalk, plus la base de données va devenir imposante. A titre d'exemple, il y a de cela plusieurs mois, j'avais installé un serveur SpaceWalk v 1.8, qui me permettait de déployer mes serveurs sous Fedora 18, 19, 20 et sous CentOS 5 et 6, y compris des dépôt additionnels comme EPEL: un espace de stockage de 50 Go n'était pas suffisant pour ça. Donc soyez prévoyant en terme d'espace de stockage sur votre serveur SpaceWalk!

La configuration du serveur est la suivante:

  • 12 Go de RAM,
  • 12 coeurs de CPU à 3.2 GHz
  • 200 Go de stockage LVM (deux partitions de 100 Go chacune, une sur un SSD, l'autre sur un disque dur SATA).

Les principaux soucis dans notre processus d'installation incombent au fait que:

  • bien que les packages officiels pour RHEL 7/CentOS 7 soient disponibles, il n'y a pas de documentation officielle d'installation pour CentOS 7/RHEL 7 sur le site SpaceWalk (cela s'arrête à CentOS 6/RHEL 6). Ce billet s'inspire tout de même très largement de la documentation pour RHEL 6/CentOS 6.
  • il y a besoin de dépôts de packages externes "non standard"
  • il y a des dépendances de packages qui ne sont pas automatiquement résolues lors de l'installation.

On va donc commencer notre aventure en configurant l'accès aux dépôts externes nécessaires.

Configuration du dépôt EPEL:

Là, on commence dans la facilité puisqu'un package est disponible officiellement dans la CentOS 7 permettant de configurer les dépôts EPEL sans effort, dans la section @extras.

Il s'agira donc d'installer ce package en utilisant la commande ci-dessous:

[root@localhost ~]# yum install epel-release

Configuration du dépôt JPackage:

Ensuite, il nous faut une version spécifique de jpackage. Là, pas de difficulté non plus puisqu'il nous suffira de reprendre tel quel les explications données dans la documentation d'installation de SpaceWalk pour RHEL 6/CentOS 6. On commence par créer le dépôt:

[root@localhost ~]# cat > /etc/yum.repos.d/jpackage-generic.repo << EOF
[jpackage-generic]
name=JPackage generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=5.0
enabled=1
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
EOF

Ensuite, jpackage sera trouvé lors de l'installation de SpaceWalk pendant la résolution des dépendances.

Configuration du dépôt SpaceWalk:

Enfin, il nous faut configurer le dépôt officiel de SpaceWalk lui-même. On installera donc le package RPM de spacewalk version latest disponible sur le site SpaceWalk, pour RHEL 7/CentOS 7. Notez ici que, bien que le package soit estampillé 2.2-1, à la date d'écriture de ce post, c'est bien une version 2.3.38-1 de SpaceWalk qui sera installée puisque nous allons utiliser le dépôt SpaceWalk nightly.

[root@localhost ~]# rpm -ivh http://yum.spacewalkproject.org/latest/RHEL/7/x86_64/spacewalk-repo-2.2-1.el7.noarch.rpm

Installation d'un package perl manquant: perl-Mail-RFC822-Address:

Nous aurons besoin du package perl-Mail-RFC822-Address, qui n'est pas disponible en standard dans le DVD d'installation de CenOS 7, ni dans les dépôts que nous avons configuré précédemment. On a donc besoin de le récupérer quelque part. Je ne saurais trop vous conseiller de faire vos recherches de packages sur le site rpmfind.net, ce qui permet en plus de confirmer que le package en question n'est effectivement pas disponible pour notre CentOS 7. Mais, vous devez savoir que la CentOS 7 est en quelque sorte au même niveau de package qu'une Fedora Core 18. Qui plus est, perl étant extrêmement portable, on aura donc pas de mal à utiliser le package de la Fedora Core 18 que l'on installe au moyen de la commande ci-dessous:

[root@localhost ~]# yum install ftp://rpmfind.net/linux/fedora/linux/releases/18/Everything/x86_64/os/Packages/p/perl-Mail-RFC822-Address-0.3-12.fc18.noarch.rpm

Activation du dépôt des nightly builds SpaceWalk:

Enfin, tous les packages SpaceWalk nécessaires à l'installation ne figurent pas dans le dépôt "standard" de SpaceWalk. On aura donc aussi besoin d'activer le dépôt SpaceWalk des nightly builds qui ne l'est pas en standard. Pour cela, éditer le fichier /etc/yum.repos.d/spacewalk-nightly.repo, rendez-vous à la ligne "enabled=0" et changez le 0 par un 1. Le fichier devra être le même qu'ainsi représenté ci-dessous:

[spacewalk-nightly]
name=Spacewalk nightly
baseurl=http://yum.spacewalkproject.org/nightly/RHEL/7/$basearch/
gpgkey=http://yum.spacewalkproject.org/RPM-GPG-KEY-spacewalk-2012
enabled=1
gpgcheck=0

A partir de là, tous les packages qui seront nécessaires à l'installation de SpaceWalk sont rendus accessibles, de sorte qu'aucun problème de résolution de dépendance ne devrait survenir. On peut donc démarrer notre installation en commençant par PostgreSQL.

Installation de PostgreSQL:

Utilisez simplement la commande ci-dessous:

[root@localhost ~]# yum install spacewalk-setup-postgresql

Ensuite on initialise PostgreSQL en utilisant cette commande:

[root@localhost ~]# postgresql-setup initdb

Et enfin, on peut démarrer le service PostgreSQL:

[root@localhost ~]# systemctl start postgresql

Pour vérifier qu'il a bien démarré, on peut utiliser la commande de demande de status:

[root@localhost ~]# systemctl status postgresql
postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled)
   Active: active (running) since mer. 2015-02-11 14:07:17 CET; 2h 44min ago
 Main PID: 25011 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─25011 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─25013 postgres: logger process   
           ├─25015 postgres: checkpointer process   
           ├─25016 postgres: writer process   
           ├─25017 postgres: wal writer process   
           ├─25018 postgres: autovacuum launcher process   
           └─25019 postgres: stats collector process   

févr. 11 14:07:17 localhost.localdomain systemd[1]: Started PostgreSQL database server.

Installation de SpaceWalk:

Il nous reste à installer SpaceWalk, dans sa version utilisant un back-end PostgreSQL, en utilisant la commande ci-dessous:

[root@localhost ~]# yum install spacewalk-postgresql

Et normalement, cela doit passer comme une lettre à la poste. Alors oui, cela fait beaucoup de packages :-)

Configuration de SpaceWalk:

Elle est réalisée en utilisant la commande ci-dessous. Pendant le processus de configuration, des questions pourront vous être posées; Il vous faudra entre autre renseigner l'adresse e-mail de l'administrateur (root@localhost), confirmer la configuration d'Apache en SSL, le mot de passe du certificat de l'autorité de certification (à rentrer deux fois), renseigner les champs nécessaires à la génération du certificat, confirmer l'activation de services additionnels (tftp par exemple), etc. Vous pouvez voir ce que cela donne sur ma propre installation dans la sortie texte ci-dessous:

[root@localhost ~]# spacewalk-setup --disconnected
* Setting up SELinux..
** Database: Setting up database connection for PostgreSQL backend.
Database "rhnschema" does not exist
** Database: Installing the database:
** Database: This is a long process that is logged in:
** Database:   /var/log/rhn/install_db.log
*** Progress: ##
** Database: Installation complete.
** Database: Populating database.
*** Progress: ############################
* Setting up users and groups.
** GPG: Initializing GPG and importing key.
** GPG: Creating /root/.gnupg directory
You must enter an email address.
Admin Email Address? root@localhost
* Performing initial configuration.
* Activating Spacewalk.
** Loading Spacewalk Certificate.
** Verifying certificate locally.
** Activating Spacewalk.
* Configuring apache SSL virtual host.
Should setup configure apache's default ssl server for you (saves original ssl.conf) [Y]? Y
** /etc/httpd/conf.d/ssl.conf has been backed up to ssl.conf-swsave
* Configuring tomcat.
* Configuring jabberd.
* Creating SSL certificates.
CA certificate password?
Re-enter CA certificate password?
Organization? MY COMPANY
Organization Unit [localhost.localdomain]? IT
Email Address [root@localhost]?
City? Geneva
State? CH
Country code (Examples: "US", "JP", "IN", or type "?" to see a list)? CH
** SSL: Generating CA certificate.
** SSL: Deploying CA certificate.
** SSL: Generating server certificate.
** SSL: Storing SSL certificates.
* Deploying configuration files.
* Update configuration in database.
* Setting up Cobbler..
Cobbler requires tftp and xinetd services be turned on for PXE provisioning functionality. Enable these services [Y]? Y
* Restarting services.
Installation complete.
Visit https://localhost.localdomain to create the Spacewalk administrator account.

A l'issue, vous devriez avoir un serveur SpaceWalk démarré, et aucun problème signalé. Vous pouvez éventuellement jeter un oeil aux journaux de logs qui devraient être disponibles dans le dossier /var/log/rhn au cas où vous auriez un souci quelconque.

On va donc pouvoir prendre notre navigateur web préféré pour aller sur notre instance SpaceWalk afin de créer le compte administrateur, comme la dernière ligne du programme de configuration nous le propose, et voici, après avoir accepté le certificat auto-signé, ce que nous devrions obtenir:

spacewalk01.png

Une fois le compte administrateur créé, vous devriez vous retrouver dans l'interface web principale de SpaceWalk:

spacewalk02.png

Il reste à alimenter notre serveur SpaceWalk avec des distributions Linux à installer, ainsi peut-être que d'autres points à considérer pour un usage quotidien comme les réglages du firewall de votre serveur.

Contrôler le service SpaceWalk:

Pour finir, voici quelques derniers éléments d'explication concernant le contrôle de votre installation SpaceWalk.

Spacewalk a besoin de beaucoup de packages, donc de pas mal de services divers et variés pour son fonctionnement. Un script est donc fourni pour pouvoir arrêter ou démarrer Spacewalk à la main, évitant l'utilisation des nombreuses commandes systemctl start|stop qui seraient autrement nécessaires.

Pour stopper SpaceWalk:

/usr/sbin/spacewalk-service stop

Pour démarrer SpaceWalk:

/usr/sbin/spacewalk-service start

Et pour obtenir un status de tous les services SpaceWalk:

/usr/sbin/spacewalk-service status

Je ferai sans doute prochainement un autre article expliquant comment faire en sorte que notre SpaceWalk puisse installer des serveurs avec la distribution de CentOS 7. En attendant, amusez-vous bien :-)