Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Administration de SLE Micro à l'aide de la commande transactional-update

Administration de SLE Micro à l'aide de la commande transactional-update

Date de publication : 12 déc 2024
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 :

Procédure 1 : modification du système de fichiers racine
  1. 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é.

  2. Toutes les modifications sont appliquées (mises à jour, correctifs ou installation de paquets).

  3. L'instantané repasse en mode lecture seule.

  4. Si les modifications ont été appliquées correctement, le nouvel instantané du système de fichiers racine est défini par défaut.

  5. 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
Note
Note : exécution de 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.

Options 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écuter transactional-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 dans stdout.

--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'
Note
Note

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.

Important
Important

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-updatepour 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 et cleanup-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.

Astuce
Astuce : commande 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.

Astuce
Astuce : retour à un état d'installation spécifique

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.

Si votre instantané actuel est fonctionnel, vous pouvez utiliser la procédure suivante pour restaurer l'état initial du système.

Procédure 2 : Retour à l'état initial à partir d'un système en cours d'exécution
  1. Identifiez l'instantané à définir comme celui par défaut et notez son numéro.

    > sudo snapper list
  2. Définissez l'instantané par défaut.

    > sudo transactional-update rollback snapshot_number

    Si vous ne spécifiez pas de numéro pour snapshot number, l'instantané actuel est défini comme celui par défaut.

    Astuce
    Astuce : définition du dernier instantané actif

    Pour définir le dernier instantané actif comme celui par défaut, exécutez rollback last.

  3. 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.

Procédure 3 : Retour à l'état initial d'un instantané opérationnel
  1. Redémarrez votre système, puis sélectionnez Start bootloader from a read-only snapshot.

  2. 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.

  3. 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.

  4. 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 :

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.

  1. Pour ouvrir la fenêtre de configuration, exécutez la commande :

    > sudo jeos-config status_mail
  2. Dans la boîte de dialogue, configurez les éléments en fonction de vos besoins.

  3. Cliquez sur OK 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'"