11.2. Mise à jour des images RHEL for Edge
11.2.1. Comment les mises à jour des images RHEL for Edge sont-elles déployées ?
Avec les images RHEL for Edge, vous pouvez déployer les mises à jour manuellement ou automatiser le processus de déploiement. Les mises à jour sont appliquées de manière atomique, c'est-à-dire que l'état de chaque mise à jour est connu, et les mises à jour sont stockées et appliquées uniquement au redémarrage. Comme aucun changement n'est visible avant le redémarrage de l'appareil, vous pouvez planifier un redémarrage pour garantir un temps de fonctionnement optimal.
Lors de la mise à jour de l'image, seul le contenu du système d'exploitation mis à jour est transféré sur le réseau. Cela rend le processus de déploiement plus efficace par rapport au transfert de l'image entière. Les binaires et les bibliothèques du système d'exploitation dans /usr
sont read-only
, et l'état read and write
est maintenu dans les répertoires /var
et /etc
.
Lors du passage à un nouveau déploiement, les répertoires /etc
et /var
sont copiés dans le nouveau déploiement avec les autorisations read and write
. Le répertoire /usr
est copié en tant que lien logiciel vers le répertoire du nouveau déploiement, avec les autorisations read-only
.
Le diagramme suivant illustre le processus de déploiement de la mise à jour de l'image RHEL for Edge :
![Image Deployment](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Composing_installing_and_managing_RHEL_for_Edge_images-fr-FR/images/fce86ffb0e9c5a01ceed74d72d223153/edge-os-upgrade.png)
Par défaut, le nouveau système est démarré en utilisant une procédure similaire à une opération chroot
. Le nouveau répertoire /sysroot
se compose principalement des éléments suivants :
-
Base de données du référentiel dans le répertoire
/sysroot/ostree/repo
. -
Révisions du système de fichiers dans le répertoire
/sysroot/ostree/deploy/rhel/deploy
, créées par chaque opération de mise à jour du système. -
Le répertoire
/sysroot/ostree/boot
, qui renvoie aux déploiements du point précédent. Notez que/ostree
est un lien souple vers/sysroot/ostree
. Les fichiers du répertoire/sysroot/ostree/boot
ne sont pas dupliqués. Le même fichier est utilisé s'il n'est pas modifié pendant le déploiement. Les fichiers sont des liens en dur vers un autre fichier stocké dans le répertoire/sysroot/ostree/repo/objects
.
Le système d'exploitation sélectionne le déploiement de la manière suivante :
-
L'outil
dracut
analyse l'argument du noyauostree
dans le système de fichiersinitramfs root
et configure le répertoire/usr
en tant que montage bindread-only
. -
Lier le répertoire de déploiement dans
/sysroot
au répertoire/
. -
Remonter le système d'exploitation déjà monté
dirs
à l'aide de l'indicateur de montageMS_MOVE
En cas de problème, vous pouvez effectuer un retour en arrière en supprimant les anciens déploiements à l'aide de la commande rpm-ostree
cleanup. Chaque machine cliente contient un référentiel OSTree
stocké dans /ostree/repo
, et un ensemble de déploiements stockés dans /ostree/deploy/$STATEROOT/$CHECKSUM
.
Avec les mises à jour de déploiement de l'image RHEL for Edge, vous pouvez bénéficier d'une meilleure cohérence du système sur plusieurs appareils, d'une reproductibilité plus facile et d'une meilleure isolation entre le changement d'état du système avant et après.
11.2.2. Déploiement manuel des mises à jour d'images RHEL for Edge
Après avoir modifié un plan RHEL for Edge, vous pouvez mettre à jour le commit de l'image. Image builder génère un nouveau commit pour l'image RHEL for Edge mise à jour. Utilisez ce nouveau commit pour déployer l'image avec les dernières versions des paquets ou avec des paquets supplémentaires.
Pour déployer les mises à jour des images RHEL for Edge, assurez-vous que vous remplissez les conditions préalables, puis suivez la procédure.
Conditions préalables
- Sur un système RHEL, vous avez accédé au tableau de bord du constructeur d'images.
- Vous avez créé un modèle d'image RHEL for Edge.
- Vous avez modifié le modèle d'image RHEL for Edge. Voir Modifier un modèle d'image RHEL for Edge à l'aide du constructeur d'images dans la console Web RHEL.
Procédure
- Dans le tableau de bord du constructeur d'images, cliquez sur .
Dans la fenêtre Create Image, procédez comme suit :
Dans la page de sortie des images :
- Dans la liste déroulante Select a blueprint, sélectionnez le plan que vous avez modifié.
-
Dans la liste déroulante Image output type, sélectionnez
RHEL for Edge Commit (.tar)
. Cliquez sur .
Dans la page OSTree settings, entrez :
- Dans le champ Repository URL, saisissez l'URL du référentiel OSTree de la livraison à intégrer dans l'image. Par exemple, http://10.0.2.2:8080/repo/. Voir Configuration d'un serveur web pour l'installation de l'image RHEL for Edge.
- Dans le champ Parent commit, indiquez l'ID du commit parent qui a été généré précédemment. Voir Extraction du commit de l'image RHEL for Edge.
-
Dans le champ Ref, vous pouvez soit spécifier un nom pour votre livraison, soit le laisser vide. Par défaut, la console web spécifie
Ref
commerhel/9/arch_name/edge
. Cliquez sur .
Sur la page Review, vérifiez les personnalisations et cliquez sur . Le constructeur d'images commence à créer une image RHEL for Edge pour le plan mis à jour. Le processus de création d'image prend quelques minutes.
Pour visualiser la progression de la création de l'image RHEL for Edge, cliquez sur le nom du plan dans les fils d'Ariane, puis sur l'onglet Images.
L'image résultante inclut les derniers paquets que vous avez ajoutés, le cas échéant, et a pour parent l'original
commit ID
.
Téléchargez l'image RHEL for Edge Commit (
.tar
) qui en résulte.-
Dans l'onglet Images, cliquez sur pour enregistrer l'image RHEL for Edge Commit (
.tar
) sur votre système.
-
Dans l'onglet Images, cliquez sur pour enregistrer l'image RHEL for Edge Commit (
Extraire le fichier OSTree commit (
.tar
).# tar -xf UUID-commit.tar -C UPGRADE_FOLDER
Mettre à jour le répertoire OSTree :
# ostree pull-local --repo http://10.0.2.2:8080/repo UPGRADE_FOLDER/repo OSTREE_REF # ostree summary --update --repo http://10.0.2.2:8080/repo
Construire un conteneur docker, en utilisant cette fois l'ID du commit enfant.
# podman build -t name-of-server --build-arg commit=UUID-child_commit.tar .
Exécuter le conteneur.
# podman run --rm -p 8000:80 name-of-server
Sur le système RHEL approvisionné, à partir de l'image de bord originale, vérifiez l'état actuel.
$ rpm-ostree status
S'il n'y a pas de nouvel identifiant de livraison, exécutez la commande suivante pour vérifier si une mise à niveau est disponible :
$ rpm-ostree upgrade --check
La sortie de la commande fournit l'identifiant de l'engagement OSTree actif.
Mettre à jour OSTree pour rendre disponible le nouvel identifiant de livraison OSTree.
$ rpm-ostree upgrade
OSTree vérifie s'il existe une mise à jour dans le référentiel. Si c'est le cas, il récupère la mise à jour et vous demande de redémarrer votre système afin que vous puissiez activer le déploiement de cette nouvelle mise à jour.
Vérifiez à nouveau l'état actuel :
$ rpm-ostree status
Vous pouvez maintenant voir qu'il y a 2 commits disponibles :
- L'engagement actif du parent.
- Un nouvel engagement qui n'est pas actif et qui contient une différence ajoutée.
Pour activer le nouveau déploiement et rendre la nouvelle validation active, redémarrez votre système.
# systemctl reboot
L'installateur Anaconda redémarre dans le nouveau déploiement. Sur l'écran de connexion, vous pouvez voir un nouveau déploiement disponible pour démarrer.
-
Si vous souhaitez démarrer sur le déploiement le plus récent (commit), la commande
rpm-ostree
upgrade ordonne automatiquement les entrées de démarrage de manière à ce que le nouveau déploiement soit le premier de la liste. En option, vous pouvez utiliser la touche fléchée de votre clavier pour sélectionner l'entrée du menu GRUB et appuyer sur . - Fournissez les informations d'identification de votre compte d'utilisateur.
Vérifier l'état de l'OSTree :
$ rpm-ostree status
La sortie de la commande fournit l'identifiant de l'engagement actif.
Pour voir les paquets modifiés, s'il y en a, lancez un diff entre le commit parent et le nouveau commit :
$ rpm-ostree db diff parent_commit new_commit
La mise à jour indique que le paquet que vous avez installé est disponible et prêt à être utilisé.
11.2.3. Déploiement manuel des mises à jour d'images RHEL for Edge à l'aide de la ligne de commande
Après avoir modifié un plan RHEL for Edge, vous pouvez mettre à jour le commit de l'image. Image builder génère un nouveau commit pour l'image RHEL for Edge mise à jour. Utilisez le nouveau commit pour déployer l'image avec les dernières versions des paquets ou avec des paquets supplémentaires à l'aide de la CLI.
Pour déployer des mises à jour d'images RHEL for Edge à l'aide de l'interface de programmation, assurez-vous de remplir les conditions préalables, puis suivez la procédure.
Conditions préalables
- Vous avez créé le modèle d'image RHEL for Edge.
- Vous avez modifié le plan directeur de l'image RHEL for Edge. Voir Modification d'un modèle d'image RHEL for Edge à l'aide de l'interface de ligne de commande.
Procédure
Créez l'image RHEL for Edge Commit (
.tar
) avec les arguments suivants :# composer-cli compose start-ostree --ref ostree_ref --url URL-OSTree-repository -blueprint_name_ image-type
où
-
ref
est la référence que vous avez fournie lors de la création du commit RHEL for Edge Container. Par exemple,rhel/9/x86_64/edge
. -
URL-OSTree-repository
est l'URL du dépôt OSTree de l'engagement à intégrer dans l'image. Par exemple, http://10.0.2.2:8080/repo/. Voir Configuration d'un serveur web pour l'installation de l'image RHEL for Edge. image-type
estedge-commit
.Le constructeur d'images crée une image RHEL for Edge pour le plan mis à jour.
-
Vérifiez la progression de la création de l'image RHEL for Edge :
# composer-cli compose status
NoteLes processus de création d'images peuvent durer de dix à trente minutes.
L'image résultante inclut les derniers paquets que vous avez ajoutés, le cas échéant, et a pour parent l'image originale
commit ID
.- Téléchargez l'image RHEL for Edge obtenue. Pour plus d'informations, voir Téléchargement d'une image RHEL for Edge à l'aide de l'interface de ligne de commande du constructeur d'images.
Extraire le commit OSTree.
# tar -xf UUID-commit.tar -C UPGRADE_FOLDER
- Servez le commit OSTree en utilisant httpd. Voir Configuration d'un serveur web pour l'installation de RHEL for Edge image.
Mettre à jour le répertoire OSTree :
# ostree pull-local --repo http://10.0.2.2:8080/repo UPGRADE_FOLDER/repo OSTREE_REF # ostree summary --update --repo http://10.0.2.2:8080/repo
Sur le système RHEL approvisionné à partir de l'image de bord originale, vérifiez l'état actuel :
$ rpm-ostree status
S'il n'y a pas de nouvel identifiant de livraison, exécutez la commande suivante pour vérifier si une mise à niveau est disponible :
$ rpm-ostree upgrade --check
La sortie de la commande fournit l'identifiant de l'engagement OSTree actif.
Mettre à jour OSTree pour rendre disponible le nouvel identifiant de livraison OSTree :
$ rpm-ostree upgrade
OSTree vérifie s'il existe une mise à jour dans le référentiel. Si c'est le cas, il récupère la mise à jour et vous demande de redémarrer votre système afin que vous puissiez activer le déploiement de la nouvelle mise à jour.
Vérifiez à nouveau l'état actuel :
$ rpm-ostree status
Vous devriez maintenant voir qu'il y a 2 commits disponibles :
- L'engagement parental actif
- Un nouvel engagement qui n'est pas actif et qui contient 1 différence ajoutée
Pour activer le nouveau déploiement et rendre la nouvelle validation active, redémarrez votre système :
# systemctl reboot
L'installateur Anaconda redémarre dans le nouveau déploiement. Sur l'écran de connexion, vous pouvez voir un nouveau déploiement disponible pour démarrer.
-
Si vous souhaitez démarrer sur le déploiement le plus récent, la commande
rpm-ostree upgrade
ordonne automatiquement les entrées de démarrage de sorte que le nouveau déploiement soit le premier de la liste. En option, vous pouvez utiliser la touche fléchée de votre clavier pour sélectionner l'entrée du menu GRUB et appuyer sur . - Connectez-vous en utilisant les informations d'identification de votre compte.
Vérifier l'état de l'OSTree :
$ rpm-ostree status
La sortie de la commande fournit l'identifiant de l'engagement actif.
Pour voir les paquets modifiés, s'il y en a, lancez un diff entre le commit parent et le nouveau commit :
$ rpm-ostree db diff parent_commit new_commit
La mise à jour indique que le paquet que vous avez installé est disponible et prêt à être utilisé.
11.2.4. Déploiement manuel des mises à jour d'images RHEL for Edge pour les déploiements non basés sur le réseau
Après avoir modifié un plan RHEL for Edge, vous pouvez mettre à jour le commit de l'image. Image builder génère un nouveau commit pour l'image RHEL for Edge mise à jour. Utilisez ce nouveau commit pour déployer l'image avec les dernières versions des paquets ou avec des paquets supplémentaires.
Pour déployer les mises à jour des images RHEL for Edge, assurez-vous que vous remplissez les conditions préalables, puis suivez la procédure.
Conditions préalables
- Un système RHEL for Edge est opérationnel.
- Un référentiel OSTree est servi via HTTP.
- Vous avez créé un modèle d'image RHEL for Edge.
- Vous avez modifié le modèle d'image RHEL for Edge. Voir Modifier un modèle d'image RHEL for Edge à l'aide du constructeur d'images dans la console Web RHEL.
Procédure
- Dans le tableau de bord du constructeur d'images, cliquez sur .
Dans la fenêtre Create Image, procédez comme suit :
Dans la page de sortie des images :
- Dans la liste déroulante Select a blueprint, sélectionnez le plan que vous avez modifié.
-
Dans la liste déroulante Image output type, sélectionnez
RHEL for Edge Container (.tar)
. Cliquez sur .
Dans la page OSTree settings, entrez :
- Dans le champ Repository URL, saisissez l'URL du référentiel OSTree de la livraison à intégrer dans l'image. Par exemple, http://10.0.2.2:8080/repo/. Voir Configuration d'un serveur web pour l'installation de l'image RHEL for Edge.
- Dans le champ Parent commit, indiquez l'ID du commit parent qui a été généré précédemment. Voir Extraction du commit de l'image RHEL for Edge.
-
Dans le champ Ref, vous pouvez soit spécifier un nom pour votre livraison, soit le laisser vide. Par défaut, la console web spécifie
Ref
commerhel/9/arch_name/edge
. Cliquez sur .
Dans la page Review, vérifiez les personnalisations et cliquez sur .
Le constructeur d'images crée une image RHEL for Edge pour le plan mis à jour.
Pour visualiser la progression de la création de l'image RHEL for Edge, cliquez sur l'onglet Images.
NoteLe processus de création de l'image prend quelques minutes.
L'image résultante inclut les derniers paquets que vous avez ajoutés, le cas échéant, et a pour parent l'image originale
commit ID
.
Télécharger l'image RHEL for Edge résultante
-
Dans l'onglet Images, cliquez sur pour enregistrer l'image RHEL for Edge Container (
.tar
) sur votre système.
-
Dans l'onglet Images, cliquez sur pour enregistrer l'image RHEL for Edge Container (
Charger l'image du conteneur RHEL for Edge dans Podman, en utilisant cette fois l'identifiant de livraison de l'enfant.
$ cat ./child-commit_ID-container.tar | sudo podman load
Exécuter
Podman
.# sudo podman run -p 8080:8080 localhost/edge-test
Mettre à jour le répertoire OSTree :
# ostree pull-local --repo http://10.0.2.2:8080/repo UPGRADE_FOLDER/repo OSTREE_REF # ostree summary --update --repo http://10.0.2.2:8080/repo
Sur le système RHEL approvisionné, à partir de l'image de bord originale, vérifiez l'état actuel.
$ rpm-ostree status
S'il n'y a pas de nouvel identifiant de livraison, exécutez la commande suivante pour vérifier si une mise à niveau est disponible :
$ rpm-ostree upgrade --check
Si des mises à jour sont disponibles, la sortie de la commande fournit des informations sur les mises à jour disponibles dans le référentiel OSTree, telles que l'ID du commit OSTree actif. Dans le cas contraire, la commande affiche un message indiquant qu'aucune mise à jour n'est disponible.
Mettre à jour OSTree pour rendre disponible le nouvel identifiant de livraison OSTree.
$ rpm-ostree upgrade
OSTree vérifie s'il existe une mise à jour dans le référentiel. Si c'est le cas, il récupère la mise à jour et vous demande de redémarrer votre système afin que vous puissiez activer le déploiement de cette nouvelle mise à jour.
Vérifier l'état actuel :
$ rpm-ostree status
Vous pouvez maintenant voir qu'il y a 2 commits disponibles :
- L'engagement actif du parent.
- Un nouvel engagement qui n'est pas actif et qui contient une différence ajoutée.
Pour activer le nouveau déploiement et rendre la nouvelle validation active, redémarrez votre système.
# systemctl reboot
L'installateur Anaconda redémarre dans le nouveau déploiement. Sur l'écran de connexion, vous pouvez voir un nouveau déploiement disponible pour démarrer.
-
Si vous souhaitez démarrer sur le dernier commit/déploiement, la commande
rpm-ostree upgrade
ordonne automatiquement les entrées de démarrage de manière à ce que le nouveau déploiement soit le premier de la liste. En option, vous pouvez utiliser la touche fléchée de votre clavier pour sélectionner l'entrée du menu GRUB et appuyer sur . - Fournissez les informations d'identification de votre compte d'utilisateur.
Vérifier l'état de l'OSTree :
$ rpm-ostree status
La sortie de la commande fournit l'identifiant de l'engagement actif.
Pour voir les paquets modifiés, s'il y en a, lancez un diff entre le commit parent et le nouveau commit :
$ rpm-ostree db diff parent_commit new_commit
La mise à jour indique que le paquet que vous avez installé est disponible et prêt à être utilisé.