Bonjour, Habr!
Peu avant Noël, il a été décidé d'étudier Spacewalk dans le service informatique - il s'agit du système Red Hat, un analogue gratuit de Satellite, pour la gestion centralisée de la configuration, les mises à jour du système et un support pratique pour l'ensemble du parc de serveurs.
Étant donné que la documentation disponible sur le site officiel est plutôt rare pour des commentaires supplémentaires sur divers types de dépannage, la tâche consistait à étudier le produit pour son introduction progressive d'abord sur les serveurs de test, puis sur les produits.
L'idée principale de l'introduction de Spacewalk était non seulement la centralisation et la simplification du contrôle, mais aussi pour que personne ne joue les mises à jour sur les serveurs du nouveau projet avec des stylos ludiques, car des précédents s'étaient déjà produits.
Après deux semaines de travail, toutes les connaissances que j'ai reçues ont été saisies dans l'analogue interne de Confluence, et une journée de congé m'a incité à écrire un article sur Habr.
Avant de commencer, je voudrais souligner brièvement ce qui a été et n'a pas été affecté, afin de ne pas être admissible au manuel complet pour travailler avec Spacewalk:
+ Installation et configuration du serveur / client
+ Configuration du système dans l'interface graphique
+ Dépanner les packages d'installation / mise à jour, travailler avec les configurations
+ Errata (collecte d'informations sur les mises à jour critiques, les vulnérabilités, etc.)
- Proxy (le besoin a disparu, après avoir abandonné HA)
- cordonnier / kickstart
- OpenSCAP
Configuration requise
Étant donné que toute l'infrastructure fonctionne sur VMWare, le travail a été effectué sur une machine virtuelle exécutant CentOS 7. La configuration système recommandée par le développeur est la suivante:
- 4 Go de RAM
- 6 Go d'espace libre pour / var / satellite /
- 12 Go pour DB
J'ai utilisé:
- 6 Go de RAM
- 4 CPU (s)
- Disque dur de 40 Go
Je vous conseille également de désactiver SELinux et, si vous n'utilisez pas, firewalld. Ou ajoutez le service http aux exceptions.
Remarque: à la fin de l'article, il y aura des playbooks pour Ansible, à la fois pour les parties client et serveur, ainsi que des scripts bash. Avec leur aide, il sera possible de déployer l'ensemble de l'infrastructure en quelques minutes.
L'installation
L'installation elle-même est décrite à la fois dans la documentation officielle et sur plusieurs sites, cependant, pour l'intégrité de l'article, permettez-moi de mentionner ce point ici.
Spacewalk fonctionne avec deux SGBD: PostgreSQL et Oracle RDBMS. J'ai de l'expérience avec le premier, et je vais l'utiliser maintenant.
Il existe deux options d'installation: à la fois via le programme d'installation automatique de Spacewalk, qui s'installera et se configurera lui-même et la base de données, cependant, sur le même serveur, et l'installation manuelle, où vous pouvez placer la base de données et l'application sur différents serveurs. J'examinerai les deux options, je commencerai par une installation distincte.
PostgreSQL
yum install -y postgresql-server
Il est également nécessaire de connecter des modules PL / Tcl pour PG:
yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql
Créez une base de données, un utilisateur et connectez le module:
su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser'
Afin d'éviter les problèmes de connexion, il vaut la peine de changer
/var/lib/pgsql/data/pg_hba.conf , en ajoutant les lignes AVANT la ligne tout:
local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident
Redémarrez tout:
systemctl restart postgresql
Si vous avez l'intention d'installer l'application et la base de données sur différents serveurs, assurez-vous que le package
postgresql-contrib est installé sur le serveur de base de données.
Spacewalk
Nous connectons des référentiels:
rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm
Connectez également epel:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Java:
(cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo)
Maintenant directement l'installateur de Spacewalk-postgres:
yum -y install spacewalk-setup-postgresql
Connectez-vous à notre base de données:
spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong
Dans le cas où vous utilisez une méthode de base de données / application distincte, vous devrez ajouter l'indicateur
--standalone et spécifier l'adresse IP du serveur de base de données, n'oubliez pas non plus d'ouvrir le port 5432.
Remarque: je conseille de régler la base de données en fonction de votre matériel pour un fonctionnement plus productif de l'ensemble du système.Maintenant, installez Spacewalk lui-même et exécutez l'installation:
yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql
Ensuite, plusieurs questions seront posées, concernant à la fois le certificat SSL et la base de données. Vous pouvez entrer toutes les valeurs manuellement, ou vous pouvez utiliser l'
indicateur --answer-file et spécifier le chemin d'accès au fichier avec les réponses afin d'automatiser l'installation à l'avenir:
admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y
Pour contrôler directement l'application, vous devez utiliser:
/usr/sbin/spacewalk-service [stop|start|restart]
Pour afficher tous les services tiers qui contribuent à l'application:
spacewalk-service status
Option deux, installation automatique
Après avoir connecté les référentiels, configurez et exécutez:
yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup
Encore une fois, des questions seront posées concernant la base de données et SSL, nous utilisons la
clé --answer-file et le chemin d'accès au fichier avec les réponses.
Chaînes de base et enfants, Repos
Pour gérer les stations client, Spacewalk utilise un système de canaux dits, qui peut être principal (enfant) ou enfant (enfant), un référentiel dont vous avez besoin est attaché à chaque canal, ainsi qu'une clé - avec laquelle le client est associé serveur.
En conséquence, les référentiels sont synchronisés avec les canaux, qui, à leur tour, sont connectés aux clients, et Spacewalk fonctionne de manière générale. Les errata, qui peuvent être liés aux canaux, méritent également d'être mentionnés, ce qui simplifie la mise à jour et le contrôle des packages.
Tous les clients peuvent être regroupés selon différents critères, à la fois avec les mêmes canaux et avec différents canaux ou référentiels. Il est possible de travailler avec un grand nombre de clients à la fois, ce qui permet d'effectuer des mises à jour sur plus de 100 serveurs.
Une liste de tous les packages installés est disponible, et après synchronisation des référentiels et possible pour l'installation. Certains points sont intuitifs et il n’a aucun sens de considérer chaque élément ligne par ligne.
Toutes les actions dans Spacewalk se déroulent selon un planning (Schedule), presque toutes les actions peuvent être configurées pour le moment qui vous convient le mieux.
Après l'installation, il sera possible de se rendre à l'adresse de votre serveur, d'effectuer une configuration supplémentaire via l'interface graphique:

Saisissez le mot de passe, le nom de l'administrateur, le nom de l'organisation (qui est également l'un des moyens de gérer les clients) et accédez au panneau de démarrage.
Pour l'instant, vous pouvez soit explorer les options disponibles vous-même, soit passer à la création de chaînes.
Chaînes - Gérer les chaînes logicielles - Créer une chaîne:
Je recommande de définir les noms de canal en fonction des types et du type d'OS qui seront liés à ce canal, par exemple,
CentOS_7_x86_64 , vous pouvez choisir en toute sécurité sha256 comme vérifications, le champ Récapitulatif Channell est destiné à une petite description du canal. vous pouvez également éventuellement fournir des informations supplémentaires.
Créez maintenant un canal enfant et liez-le au canal principal. Nous procédons de la même manière que pour créer le canal principal, uniquement dans le champ Canal parent, nous indiquerons le canal créé précédemment.
Liez les référentiels aux canaux principaux et subsidiaires.
Canaux - Gérer les référentiels
Pour les canaux principaux, j'utilise les ressources de base, pour les canaux subsidiaires - Mises à jour.
Après avoir créé les référentiels, vous devez les connecter aux canaux.
Canaux - Gérez les canaux logiciels , ouvrez votre canal principal, ouvrez la section Référentiels.

Il y aura tous les référentiels créés, sélectionnez celui dont vous avez besoin, marquez-le et cliquez sur Mettre à jour les ressources.
Ensuite, ouvrez la sous-clé Sync:

Où vous pouvez synchroniser le référentiel et le canal, configurez la planification de la synchronisation.
Remarque: dans mon cas de stylos ludiques, j'ai dû supprimer le référentiel standard du système client.Installation du client, couplage du client avec le serveur, gestion des clés, mise en place du canal de configuration
Comme je l'ai mentionné précédemment, Spacewalk utilise un système de clé de Red Hat Network, qui est utilisé pour le couplage et la gestion.
Pour créer une clé, accédez à
Systèmes - Clés d'activation - Créer une clé:
Tout est extrêmement simple ici, il convient de mentionner que vous pouvez définir vous-même la clé, son format sera toujours
1-XXXXXX , et aussi, chaque clé est attachée à la chaîne. Le drapeau Universal Default oblige les nouveaux systèmes à récupérer les paramètres clés.
Installation du clientConnectez le référentiel client et installez les packages nécessaires:
rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm
Remarque: les actions rhncfg et deltarpm sont nécessaires pour que les configurations et la télécommande fonctionnent correctement.Spacewalk utilise rhn_check pour synchroniser le serveur client, qui s'exécute toutes les 4 heures. Cette valeur peut être réduite à 60 minutes, mais pour moi aucune des options n'était optimale, donc il y a deux options: utilisez osad, qui vient avec Spacewalk, ou ajoutez simplement un cronjob pour rhn_check, par exemple, pour chaque minute pendant que nous testez le système, puis la valeur peut être modifiée à votre guise.
crontab -e * * * * * /usr/sbin/rhn_check
Il ne sera pas non plus inutile d'ajouter / usr / bin / rhn-actions-control --enable-all à Cron aussi, il est utilisé pour déployer des configurations, et parfois il s'émousse.
Nous revenons à la gestion des clés, copions l'ID de clé que nous avons créé et exécutons:
rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force
N'oubliez pas de changer l'IP et les valeurs de clé pour les vôtres. Encore une fois, je vous conseille d'utiliser l'indicateur
--force , car j'ai remarqué des problèmes sans utiliser cet indicateur.
Nous revenons à
Systems - All , nous sommes ravis de remarquer notre système. Vous pouvez maintenant l'ouvrir et explorer quoi et comment, mais pour l'instant je recommande fortement de créer un groupe pour une gestion plus pratique du système.
Systèmes - Groupes de systèmes - Créer un groupe , remplissez le nom et la description, enregistrez, ouvrez le groupe fraîchement créé, accédez à la section
Systèmes et ajoutez le système au groupe.
Abonnez maintenant le système à la chaîne,
Systèmes - Votre système - Dossier Logiciels - Sous-dossier Canaux logiciels:
Choisissez votre chaîne et cliquez sur confirmation. Pour le plaisir, vous pouvez essayer d'installer le package,
Software - Packages - Install .
Canal de configurationPour gérer les configurations entre le serveur client / la machine locale, ainsi que le contrôle à distance, il convient de configurer le canal de configuration et de relier le système à celui-ci.
Nous allons à
Configuration - Canaux de configuration - Créer un canal de configuration , définissons le nom, la description, enregistrez, puis dans
Configuration - Gérer les canaux de configuration - Abonnez-vous aux canaux et signez le canal de configuration au canal logiciel et au système.

Nous pouvons maintenant déployer des configurations à partir du serveur et des machines locales et créer des partitions.
Configuration - Ajouter des fichiers - Créer un fichier / Télécharger un fichier:
De plus, nous pouvons envoyer des commandes à distance sous la forme d'un script bash:

Je vous rappelle que toutes les actions passent par un Schedule, une liste de toutes les actions appliquées à ce système se trouve dans la section Events:
ErrataL'une des fonctionnalités les plus importantes de Spacewalk est la prise en charge des errata, qui se lie facilement aux canaux et vous permet de surveiller le niveau d'importance des dernières mises à jour. Ceci est configuré directement sur le serveur, en plus des scripts, vous devez télécharger les packages nécessaires pour Pearl:
yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl
Ensuite, créez les principaux errata du script de mise à jour et de collecte, qui seront stockés dans
/ etc / rhn /:
Dans l'exportation, spécifiez le nom et le mot de passe de l'administrateur de Spacewalk, que vous avez spécifiés au tout début.
Rendons le script exécutable et ajoutons-le à Cron:
chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh
Exécutons-le maintenant pour voir les changements dans l'interface graphique. L'exécution prendra un certain temps.

Résumé
Un point important, à mon avis, que j'ai personnellement manqué, est la configuration et l'installation d'un proxy, ainsi que l'augmentation de l'ensemble du système en tant que HA. J'ai eu une idée pour configurer l'application via un stimulateur cardiaque et synchroniser sur la base de données. En conséquence, il a été décidé d'abandonner cette idée, compte tenu du parc de serveurs client pas très important. Cependant, si le système s'avère extrêmement utile au cours des six prochains mois, vous devrez peut-être étendre le serveur d'origine.
Automatisation
Serveur:Script Bash pour le déploiement du serveur (DISABLES firewalld): Script Bash pour installer les errata (définissez d'abord le nom et le mot de passe de l'administrateur Spacewalk): Playbook Ansible pour le déploiement du serveur (n'oubliez pas d'ajouter un fichier de réponses): - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no
Client:Script Bash pour le déploiement client (n'oubliez pas l'IP et la clé): Playbook anisble pour le déploiement client: - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}"
Merci à tous d'avoir lu l'article. Bonne chance