Administration de SLE Micro à l'aide de la commande transactional-update
- CONTENU
La commande
transactional-update
permet de modifier un système de fichiers en lecture seule. Les modifications sont effectuées dans un instantané distinct et n'ont aucun impact sur le système en cours d'exécution tant que vous ne démarrez pas l'instantané.- MOTIF
Vous souhaitez gérer SLE Micro et ses mises à jour, en minimisant les risques de temps d'arrêt en raison d'échecs de mises à jour tout en facilitant les retours à l'état initial.
- EFFORT
L'explication de la commande
transactional-update
prend moins de 30 minutes.- OBJECTIF
Vous comprendrez comment fonctionne
transactional-update
et comment vous pouvez l'utiliser pour gérer votre système.- CONDITIONS REQUISES
Une instance en cours d'exécution de SLE Micro
Privilèges
root
1 Mises à jour transactionnelles #
1.1 Que sont les mises à jour transactionnelles ? #
Pour maintenir la stabilité et la cohérence du système d'exploitation de base, SLE Micro utilise un système de fichiers racine en lecture seule. Par conséquent, vous ne pouvez pas modifier directement le système de fichiers racine, par exemple à l'aide de la commande zypper
. Au lieu de cela, SUSE Linux Micro introduit des mises à jour transactionnelles qui vous permettent d'appliquer une ou plusieurs modifications au système de fichiers racine.
Le comportement par défaut de transactional-update
consiste à créer un instantané à partir du système de fichiers racine actuel après chaque modification. Pour appliquer les modifications, vous devez redémarrer l'hôte. Vous ne pouvez pas exécuter la commande transactional-update
plusieurs fois de suite sans redémarrer pour ajouter d'autres modifications à l'instantané. Cette opération crée des instantanés indépendants distincts qui n'incluent pas les modifications apportées aux instantanés précédents.
1.2 Comment fonctionnent les mises à jour transactionnelles ? #
Chaque fois que vous appelez la commande transactional-update
pour modifier votre système (pour installer un paquet, effectuer une mise à jour ou appliquer un correctif), les opérations suivantes ont lieu :
Un instantané en lecture-écriture est créé à partir de votre système de fichiers racine actuel ou à partir d'un instantané que vous avez spécifié.
Toutes les modifications sont appliquées (mises à jour, correctifs ou installation de paquets).
L'instantané repasse en mode lecture seule.
Si les modifications ont été appliquées correctement, le nouvel instantané du système de fichiers racine est défini par défaut.
Après le redémarrage, le système se lance dans le nouvel instantané.
1.3 Avantages des mises à jour transactionnelles #
Elles sont atomiques : la mise à jour n'est appliquée que si elle se termine correctement.
Les modifications sont appliquées dans un instantané distinct et n'ont donc aucun impact sur le système en cours d'exécution.
Les modifications peuvent facilement être annulées.
1.4 Environnement dans la commande transactional-update
#
Chaque fois que vous exécutez la commande transactional-update
, les modifications sont effectuées dans un nouvel instantané. L'environnement de l'instantané peut différer de celui du shell à partir duquel vous exécutez la commande transactional-update
. Par exemple, le répertoire de travail actuel ($PWD
) n'est pas défini sur le répertoire à partir duquel vous exécutez transactional-update
, mais sur /
.
À partir de l'instantané, vous ne pouvez pas accéder au répertoire /var
. Ce répertoire n'est pas inclus non plus dans l'instantané. Toutefois, certains répertoires ne sont pas inclus dans l'instantané, mais sont accessibles dans l'environnement transactional-update
, par exemple le répertoire /root
.
2 Utilisation de la commande transactional-update
#
La commande transactional-update
active l'installation ou la suppression atomique des mises à jour. Les mises à jour ne sont appliquées que si elles peuvent toutes être installées correctement. transactional-update
crée un instantané de votre système et l'utilise pour le mettre à jour. Vous pouvez restaurer cet instantané ultérieurement. Toutes les modifications ne deviennent actives qu'après le redémarrage.
La syntaxe de la commande transactional-update
est la suivante :
transactional-update [option]
[general_command] [package_command] standalone_command
transactional-update
sans arguments
Si vous ne spécifiez aucune commande ou option lors de l'exécution de la commande transactional-update
, le système se met à jour lui-même.
Les paramètres de commande possibles sont décrits ci-après.
transactional-update
#-
--interactive, -i
Peut être utilisée avec une commande de paquet pour activer le mode interactif.
-
--non-interactive, -n
Peut être utilisée avec une commande de paquet pour activer le mode non interactif.
-
--continue [number], -c
L'option
--continue
permet d'apporter plusieurs modifications au système de fichiers racine sans redémarrer. Pour plus d'informations, consultez la Section 3, « Application de plusieurs modifications sans redémarrage ».Une autre fonction utile de l'option
--continue
est que vous pouvez sélectionner n'importe quel instantané existant comme base de votre nouvel instantané. L'exemple suivant montre comment exécutertransactional-update
pour installer un nouveau paquet dans un instantané basé sur l'instantané 13, puis comment le réexécuter pour installer un autre paquet :>
sudo
transactional-update pkg install package_1
>
sudo
transactional-update --continue 13 pkg install package_2
-
--no-selfupdate
Désactive la mise à jour automatique de
transactional-update
.-
--drop-if-no-change, -d
Ignore l'instantané créé par
transactional-update
si aucune modification n'a été apportée au système de fichiers racine. Si des modifications sont apportées au répertoire/etc
, elles sont fusionnées avec le système de fichiers actuel.-
--quiet
La commande
transactional-update
n'envoie pas de résultat dansstdout
.-
--help, -h
Imprime l'aide pour la commande
transactional-update
.-
--version
Affiche la version de la commande
transactional-update
.
2.1 Commandes générales #
Cette section répertorie les commandes générales de transactional-update
.
-
grub.cfg
Utilisez cette commande pour reconstruire le fichier de configuration du chargeur de démarrage GRUB.
-
bootloader
La commande réinstalle le chargeur de démarrage.
-
initrd
Utilisez la commande pour reconstruire
initrd
.-
kdump
Si vous modifiez votre matériel ou votre stockage, vous devrez peut-être reconstruire le fichier initrd de Kdump.
-
shell
Ouvre un shell en lecture-écriture dans le nouvel instantané avant de quitter. La commande est généralement utilisée à des fins de débogage.
-
reboot
Le système redémarre une fois la commande
transactional-update
terminée.-
run <command>
Exécute la commande fournie dans un nouvel instantané.
-
setup-selinux
Installe et active la stratégie SELinux ciblée.
3 Application de plusieurs modifications sans redémarrage #
La commande transactional-update
applique les modifications au système de fichiers racine sur un système transactionnel. Le comportement par défaut consiste à créer un instantané à partir du système de fichiers racine actuel après chaque modification et à redémarrer pour que les modifications soient prises en compte.
Pour apporter plusieurs modifications au système de fichiers racine sans redémarrer, vous disposez de plusieurs options, décrites dans les sections suivantes :
3.1 Option transactional-update
--continue
#
Utilisez la commande transactional-update
avec l'option --continue
pour effectuer plusieurs modifications sans redémarrer. Un instantané distinct est créé à chaque exécution et contient toutes les modifications apportées à l'instantané précédent, ainsi que vos nouvelles modifications. L'instantané final inclut toutes les modifications. Pour les appliquer, redémarrez le système et votre instantané final devient le nouveau système de fichiers racine.
3.2 Commande transactional-update run
#
La commande transactional-update
run
n'exécute normalement qu'une seule commande. Cependant, vous pouvez l'utiliser pour exécuter plusieurs commandes dans une même session transactionnelle en les concaténant dans un shell de commande tel que bash
, par exemple :
>
sudo
transactional-update run bash -c 'ls && date; if [ true ]; then echo -n "Hello "; echo '\''world'\''; fi'
La commande transactional-update run
présente les mêmes limites que la commande transactional-update shell
décrite à la Section 3.3, « Shell transactional-update
», sauf que les commandes entrées sont consignées dans le fichier /var/log/transactional-update.log
.
3.3 Shell transactional-update
#
La commande transactional-update shell
ouvre un shell dans l'environnement transactionnel-update. Ce shell vous permet d'entrer presque n'importe quelle commande Linux pour apporter des modifications au système de fichiers, par exemple, installer plusieurs paquets avec la commande zypper
ou modifier des fichiers qui font partie du système de fichiers en lecture seule. Vous pouvez également vérifier que les modifications effectuées précédemment avec la commande transactional-update
sont correctes.
Le shell transactionnel présente plusieurs limitations. Par exemple, vous ne pouvez pas lancer ou arrêter les services à l'aide de commandes systemd
, ni modifier la partition /var
, car elle n'est pas montée. En outre, les commandes entrées au cours d'une session de shell ne sont pas consignées dans le fichier /transactional-update.log
.
Toutes les modifications que vous apportez au système de fichiers font partie d'un seul instantané. Une fois que vous avez terminé d'apporter des modifications au système de fichiers et que vous avez quitté le shell à l'aide de la commande exit
, vous devez redémarrer l'hôte pour que les modifications soient prises en compte.
4 Nettoyage des instantanés #
Vous pouvez utiliser transactional-update
pour nettoyer les instantanés de système de fichiers inutilisés ainsi que les répertoires superposés /etc
non référencés.
transactional-update
reconnaît les commandes de nettoyage suivantes :
-
cleanup-snapshots
Cette commande marque tous les instantanés inutilisés en vue de leur suppression par Snapper.
-
cleanup-overlays
Cette commande supprime toutes les couches superposées inutilisées du fichier
/etc
dans le répertoire/var/lib/overlay
.-
cleanup
Cette commande combine les commandes
cleanup-snapshots
etcleanup-overlays
.
4.1 Fonctionnement du nettoyage #
Si vous exécutez la commande transactional-update cleanup
, tous les anciens instantanés sans algorithme de nettoyage s'en verront attribuer un. Tous les instantanés importants sont également marqués. La commande supprime également tous les répertoires superposés /etc
non référencés (et donc inutilisés) de /var/lib/overlay
.
Les instantanés dont l'algorithme de nettoyage est défini sur number
seront supprimés en fonction des règles configurées dans /etc/snapper/configs/root
par les paramètres suivants :
- NUMBER_MIN_AGE
Définit l'âge minimum d'un instantané (en secondes) pour pouvoir être supprimé automatiquement.
- NUMBER_LIMIT/NUMBER_LIMIT_IMPORTANT
Définit le nombre maximal d'instantanés conservés. Les algorithmes de nettoyage suppriment les instantanés supérieurs à la valeur maximale spécifiée, sans tenir compte de l'instantané ni de l'espace du système de fichiers. Les algorithmes suppriment également les instantanés supérieurs à la valeur minimale jusqu'à avoir atteint les limites pour l'instantané et le système de fichiers.
Le nettoyage des instantanés est également régulièrement effectué par systemd
.
5 Enregistrement des produits #
La commande transactional-update register
vous permet de gérer toutes les tâches relatives à l'enregistrement du produit et à la gestion de ses abonnements. Vous pouvez fournir les options suivantes :
-
--list-extensions
Avec cette option, la commande répertorie les extensions disponibles pour votre système. Vous pouvez utiliser la sortie afin de rechercher un identificateur de produit pour l'activation du produit.
-
-p, --product
Utilisez cette option pour spécifier un produit à activer. L'identificateur de produit présente le format suivant : <nom>/<version>/<architecture>, par exemple
sle-module-live-patching/15.3/x86_64
. La commande correspondante se présente sous la forme suivante :>
sudo
transactional-update register -p sle-module-live-patching/15.3/x86_64-
-r, --regcode
Enregistrez votre système avec le code d'enregistrement fourni. La commande enregistre l'abonnement et active les dépôts de logiciels.
-
-d, --de-register
L'option désenregistre le système ou, lorsqu'elle est utilisée avec l'option
-p
, désenregistre une extension.-
-e, --email
Indiquez une adresse électronique utilisée dans SUSE Customer Center pour l'enregistrement.
-
--url
Spécifiez l'URL de votre serveur d'enregistrement. L'URL est stockée dans la configuration et est utilisée dans les invites de commande suivantes. Par exemple :
>
sudo
transactional-update register --url https://scc.suse.com-
-s, --status
Affiche l'état actuel de l'enregistrement au format JSON.
-
--write-config
Écrit la valeur des options fournies dans le fichier de configuration
/etc/SUSEConnect
.-
--cleanup
Supprime les anciennes informations d'identification du système.
-
--version
Imprime la version.
-
--help
Affiche l'utilisation de la commande.
6 Gestion des paquets logiciels #
La commande transactional-update
vous permet d'installer, de mettre à jour ou de supprimer des paquets logiciels.
SLE Micro obtient les paquets logiciels à partir des dépôts disponibles après l'enregistrement du produit.
transactional-update
utilise les commandes suivantes pour gérer les paquets logiciels.
pkg
et options Zypper
Les commandes transactional-update pkg
vous permettent d'utiliser n'importe quelle option Zypper qui correspond à la sous-commande utilisée. Par exemple, transactional-update pkg install
comprend toutes les options effectuées par zypper install
.
-
pkg install
Installe des paquets individuels à partir des canaux disponibles à l'aide de la commande
zypper install
. Cette commande peut également être utilisée pour installer les fichiers RPM de correctif temporaire de programme (Program Temporary Fix, PTF). L'option par défaut de cette commande est--interactive
.>
sudo
transactional-update pkg install package_name
ou
>
sudo
transactional-update pkg install rpm1 rpm2
ou pour installer un modèle de logiciel :
>
sudo
transactional-update pkg install -t pattern pattern_name
-
pkg remove
Supprime des paquets individuels de l'instantané actif à l'aide de la commande
zypper remove
. Cette commande peut également être utilisée pour supprimer les fichiers RPM de PTF. L'option par défaut de cette commande est--interactive
.>
sudo
transactional-update pkg remove package_name
-
pkg update
Met à jour des paquets individuels de l'instantané actif à l'aide de la commande
zypper update
. Seuls les paquets qui font partie de l'instantané du système de fichiers de base peuvent être mis à jour. L'option par défaut de cette commande est--interactive
.>
sudo
transactional-update pkg update package_name
-
patch
Recherche les correctifs disponibles et les installe. L'option par défaut de cette commande est
--non-interactive
.-
dup
Effectue une mise à niveau de votre système. L'option par défaut de cette commande est
--non-interactive
.-
up
Met à jour les paquets installés vers des versions plus récentes. L'option par défaut de cette commande est
--non-interactive
.-
migration
La commande migre votre système vers une cible sélectionnée. En règle générale, elle est utilisée pour mettre à niveau votre système s'il a été enregistré via SUSE Customer Center.
7 Retour à l'état initial du système #
GRUB 2 permet de démarrer à partir des instantanés btrfs et vous permet donc d'utiliser n'importe quel instantané fonctionnel plus ancien si le nouvel instantané ne fonctionne pas correctement.
Lors du démarrage d'un instantané, les parties du système de fichiers incluses dans l'instantané sont montées en lecture seule ; tous les autres systèmes de fichiers et parties exclus des instantanés sont montés en lecture-écriture et peuvent être modifiés.
Un instantané de démarrage initial est créé à la fin de l'installation initiale du système. Vous pouvez revenir à cet état à tout moment en démarrant cet instantané. L'instantané peut être identifié par la description first root file system
.
Deux méthodes permettent d'effectuer un retour à l'état initial du système.
À partir d'un système en cours d'exécution, vous pouvez définir l'instantané par défaut. Pour plus d'informations, reportez-vous à la Procédure 2, « Retour à l'état initial à partir d'un système en cours d'exécution ».
En particulier dans les cas où l'instantané actuel est corrompu, vous pouvez démarrer dans le nouvel instantané et le définir comme instantané par défaut. Pour plus d'informations, reportez-vous à la Procédure 3, « Retour à l'état initial d'un instantané opérationnel ».
Si votre instantané actuel est fonctionnel, vous pouvez utiliser la procédure suivante pour restaurer l'état initial du système.
Identifiez l'instantané à définir comme celui par défaut et notez son numéro.
>
sudo
snapper listDéfinissez l'instantané par défaut.
>
sudo
transactional-update rollback snapshot_numberSi vous ne spécifiez pas de numéro pour snapshot number, l'instantané actuel est défini comme celui par défaut.
Astuce : définition du dernier instantané actifPour définir le dernier instantané actif comme celui par défaut, exécutez
rollback last
.Redémarrez votre système pour démarrer dans le nouvel instantané par défaut.
La procédure suivante est utilisée lorsque l'instantané actuel est corrompu et que vous ne pouvez pas démarrer dans celui-ci.
Redémarrez votre système, puis sélectionnez
Start bootloader from a read-only snapshot
.Choisissez un instantané à démarrer. Les instantanés sont triés en fonction de leur date de création, la plus récente étant placée en haut de la liste.
Connectez-vous à votre système et vérifiez si tout fonctionne comme prévu. Les données inscrites dans les répertoires exclus des instantanés ne seront pas modifiées.
Si l'instantané dans lequel vous avez démarré ne peut pas être restauré dans son état initial, redémarrez votre système et choisissez-en un autre.
Si l'instantané fonctionne comme prévu, vous pouvez effectuer le retour à l'état initial en exécutant la commande suivante :
>
sudo
transactional-update rollback
Ensuite, redémarrez.
8 Gestion des mises à jour transactionnelles automatiques #
Les mises à jour automatiques sont contrôlées par systemd.timer
qui s'exécute une fois par jour. Toutes les mises à jour sont effectuées et rebootmgrd
est informé que la machine doit être redémarrée. Vous pouvez régler l'heure d'exécution des mises à jour. Consultez la documentation relative à systemd.timer(5).
8.1 Désactivation des mises à jour automatiques #
Les mises à jour automatiques sont activées par défaut. Cependant, vous pouvez les désactiver à l'aide de la commande suivante :
>
sudo
systemctl --now disable transactional-update.timer
8.2 Configuration des notifications d'échec des mises à jour #
En cas d'échec d'une mise à jour transactional-update
automatique, l'instantané ayant échoué est supprimé. Pendant ce temps, le système peut redémarrer et vous ne pourrez pas savoir si la dernière mise à jour automatique a échoué. Par conséquent, vous pouvez configurer un service systemd
qui vous informera de l'échec de la mise à jour transactional-update
automatique. La procédure pour ce faire peut se résumer aux étapes suivantes :
Installation des paquets requis s'ils ne sont pas présents sur le système. Pour plus d'informations, reportez-vous à la Section 8.2.1, « Installation des paquets requis ».
Configuration du service
systemd-status-mail
. Pour plus d'informations, reportez-vous à la Section 8.2.2, « Configuration du servicesystemd-status-mail
».
8.2.1 Installation des paquets requis #
Les paquets mailx
et systemd-status-mail
sont requis pour configurer les notifications. Ils sont présents sur le système par défaut. Toutefois, si vous ne les avez pas installés, installez les paquets à l'aide de la commande suivante :
>
sudo
transactional-update pkg in systemd-status-mail mailx
Redémarrez le système.
8.2.2 Configuration du service systemd-status-mail
#
Pour configurer le service systemd-status-mail
, vous pouvez créer un fichier de configuration ou utiliser l'outil jeos-config
.
8.2.2.1 Configuration du service à l'aide de jeos-config
#
Pour configurer les notifications par message électronique, vous pouvez utiliser les outils jeos-config
décrits ci-dessous.
Pour ouvrir la fenêtre de configuration, exécutez la commande :
>
sudo
jeos-config status_mailDans la boîte de dialogue, configurez les éléments en fonction de vos besoins.
Cliquez sur
pour confirmer.
8.2.2.2 Configuration du service en modifiant un fichier de configuration #
Le fichier de configuration par défaut se trouve à l'emplacement /usr/etc/default/systemd-status-mail
. Pour le modifier, créez une copie à l'emplacement /etc/default/
, puis modifiez les éléments suivants :
- ADDRESS
Cette entrée est obligatoire. Indiquez l'adresse électronique à laquelle envoyer la notification. Par exemple :
ADDRESS=“tux@example.com”
- FROM
Adresse électronique de l'expéditeur du message de notification. Assurez-vous que l'adresse est valide. Par exemple :
FROM=“geeko@example.com”
- MAILER
Type d'application de messagerie pour l'envoi de notifications. Utilisez la valeur
mailx
comme suit :MAILER=“mailx”
- RELAYHOST
Spécifiez le relais de messagerie utilisé par mailx.
RELAYHOST=“mail.example.com:587”
- MAILX_OPTIONS
Spécifiez les options nécessaires pour vous assurer que le fournisseur des services de messagerie acceptera le message de notification.
MAILX_OPTIONS="-Sverbose -Ssmtp-use-starttls -Ssmtp-auth=login -Ssmtp-auth-user='tux@example.com' -Ssmtp-auth-password='TopSecret'"
9 Mentions légales #
Copyright © 2006–2024 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.