Verwendung deterministischer Upgrades über versionierte Repositorys - Amazon Linux 2023

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung deterministischer Upgrades über versionierte Repositorys

Verwendung eines aktualisierten deterministischen Systems

Anmerkung

Das Standardverhalten des Paketmanagers wurde von AL2 geändert.

Deterministische Upgrades sind eine leistungsstarke Methode, um sicherzustellen, dass alle Änderungen an Produktionsumgebungen vor der umfassenden Bereitstellung vollständig getestet werden können. Jedes neue AL2 023-AMI ist an eine bestimmte Version von AL2 023 gebunden. Dies ermöglicht ein deterministisches Verhalten darüber, welche Versionen von Betriebssystempaketen installiert werden, wenn das spezifische AMI gestartet wird. Direkte Updates können sich auf eine bestimmte Release-Version beziehen, wodurch ein deterministisches Verhalten innerhalb einer Flotte gewährleistet wird. Bei der Umstellung auf neue AMIs oder direkte Aktualisierungsversionen können Sie jede Version in Ihrer CI/CD Pipeline testen und dabei potenzielle Probleme erkennen, bevor Sie sie in Produktionsumgebungen bereitstellen.

Sie können Tools wie AWS Systems Manager Patch Manager verwenden, um die Installation von Updates innerhalb einer Flotte zu koordinieren. Für Builds, die abgeleitet werden, AMIs wenn neue AL2 023 veröffentlicht AMIs werden, kann EC2 Image Builder automatisch erstellen, patchen und testen AMIs, oder Sie können Erhalten Sie Benachrichtigungen über neue Updates wissen, wann neue Basisversionen verfügbar AMIs sind, oder um Ihre eigenen AMI-Building-Pipelines auszulösen.

Informationen zur Beschränkung von Updates auf die Updates aus einem bestimmten Advisory finden Sie unter Direktes Anwenden von Sicherheitsupdates

Für direkte Patches können Sie den dnf Paketmanager verwenden. Wenn Sie den dnf upgrade-Befehl ausführen, sucht das System im von der releasever-Variablen angegebenen Repository nach Upgrades. Eine gültige Version releasever ist entweder latest oder eine Version mit Datumsstempel wie. 2023.8.20250818

Sie können den Wert releasever mit einer der folgenden Methoden ändern. Diese Methoden sind in absteigender Systempriorität aufgeführt. Das bedeutet, dass Methode 1 die Methoden 2 und 3 überschreibt und Methode 2 Methode 3 überschreibt.

  1. Der Wert im Befehlszeilen-Flag, --releasever=latest, falls dieser verwendet wird.

  2. Der Wert, der in der Override-Variablendatei angegeben ist, /etc/dnf/vars/releasever, falls dieser gesetzt ist.

  3. Die aktuell installierte Version des system-release-Pakets.

Im folgenden Beispiel lautet die Version: 2023.0.20230210

$ rpm -q system-release system-release-2023.0.20230210-0.amzn2023.noarch

In einem neu installierten System ist die Override-Variable nicht vorhanden. Es sind keine Upgrades verfügbar, da das System an die installierte system-release-Version gebunden ist.

$ cat /etc/dnf/vars/releasever cat: /etc/dnf/vars/releasever: No such file or directory
$ sudo dnf upgrade Last metadata expiration check: 0:00:02 ago on Wed 15 Feb 2023 06:14:12 PM UTC. Dependencies resolved. Nothing to do. Complete!

Sie können Pakete einer bestimmten Version abrufen, indem Sie das releasever-Flag verwenden, um die gewünschte Version anzugeben.

$ rpm -q system-release system-release-2023.0.20230222-0.amzn2023.noarch
$ sudo dnf upgrade --releasever=2023.0.20230329 Amazon Linux 2023 repository 26 MB/s | 12 MB 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: kernel aarch64 6.1.21-1.45.amzn2023 amazonlinux 26 M Upgrading: amazon-linux-repo-s3 noarch 2023.0.20230329-0.amzn2023 amazonlinux 18 k ca-certificates noarch 2023.2.60-1.0.amzn2023.0.1 amazonlinux 828 k cloud-init noarch 22.2.2-1.amzn2023.1.7 amazonlinux 1.1 M ... [ list edited for clarity ] system-release noarch 2023.0.20230329-0.amzn2023 amazonlinux 29 k ... [ list edited for clarity ] vim-data noarch 2:9.0.1403-1.amzn2023.0.1 amazonlinux 25 k vim-minimal aarch64 2:9.0.1403-1.amzn2023.0.1 amazonlinux 753 k Transaction Summary ================================================================================ Install 1 Package Upgrade 42 Packages Total download size: 56 M

Da die --releasever-Option sowohl system-release als auch /etc/dnf/vars/releasever überschreibt, ist das Ergebnis dieses Upgrades wie folgt:

  1. Das Upgrade ersetzt alle installierten Pakete, die zwischen der vorherigen und der neuen Version geändert wurden.

  2. Das Upgrade bindet das System für die neue Version von system-release an das Repository.

Wenn Sie immer angeben, auf welche Version releasever (d. h. Version AL2 023) aktualisiert werden soll, haben Sie eine deterministische Reihe von Änderungen in einer Flotte. Sie haben die Version gestartet AB, auf aktualisiert und dann auf aktualisiert. C

Selektives Update eines deterministisch aktualisierten Systems

Anmerkung

Wir empfehlen, dass alle Updates in einer neuen Version installiert werden, anstatt bestimmte Updates auszuwählen. Es sollte eine Ausnahme von der üblichen Praxis sein, das gesamte Update nur teilweise auf das Betriebssystem anzuwenden.

Sie können beispielsweise ausgewählte Pakete aus einer neu veröffentlichten Version installieren, während das System auf die ursprüngliche Release-Version beschränkt bleibt.

Mithilfe von dnf check-update können Sie die zu aktualisierenden Pakete identifizieren.

$ sudo dnf check-update --releasever=latest --security Amazon Linux 2023 repository 13 MB/s | 10 MB 00:00 Last metadata expiration check: 0:00:02 ago on Wed 15 Feb 2023 02:52:21 AM UTC. bind-libs.aarch64 32:9.16.27-1.amzn2023.0.1 amazonlinux bind-license.noarch 32:9.16.27-1.amzn2023.0.1 amazonlinux bind-utils.aarch64 32:9.16.27-1.amzn2023.0.1 amazonlinux cryptsetup.aarch64 2.4.3-2.amzn2023.0.1 amazonlinux cryptsetup-libs.aarch64 2.4.3-2.amzn2023.0.1 amazonlinux curl-minimal.aarch64 7.85.0-1.amzn2023.0.1 amazonlinux glibc.aarch64 2.34-40.amzn2023.0.2 amazonlinux glibc-all-langpacks.aarch64 2.34-40.amzn2023.0.2 amazonlinux glibc-common.aarch64 2.34-40.amzn2023.0.2 amazonlinux glibc-locale-source.aarch64 2.34-40.amzn2023.0.2 amazonlinux gmp.aarch64 1:6.2.1-2.amzn2023.0.1 amazonlinux gnupg2-minimal.aarch64 2.3.7-1.amzn2023.0.2 amazonlinux gzip.aarch64 1.10-5.amzn2023.0.1 amazonlinux kernel.aarch64 6.1.12-17.42.amzn2023 amazonlinux kernel-tools.aarch64 6.1.12-17.42.amzn2023 amazonlinux libarchive.aarch64 3.5.3-2.amzn2023.0.1 amazonlinux libcurl-minimal.aarch64 7.85.0-1.amzn2023.0.1 amazonlinux libsepol.aarch64 3.4-3.amzn2023.0.2 amazonlinux libsolv.aarch64 0.7.22-1.amzn2023.0.1 amazonlinux libxml2.aarch64 2.9.14-1.amzn2023.0.1 amazonlinux logrotate.aarch64 3.20.1-2.amzn2023.0.2 amazonlinux lua-libs.aarch64 5.4.4-3.amzn2023.0.1 amazonlinux lz4-libs.aarch64 1.9.4-1.amzn2023.0.1 amazonlinux openssl.aarch64 1:3.0.5-1.amzn2023.0.3 amazonlinux openssl-libs.aarch64 1:3.0.5-1.amzn2023.0.3 amazonlinux pcre2.aarch64 10.40-1.amzn2023.0.1 amazonlinux pcre2-syntax.noarch 10.40-1.amzn2023.0.1 amazonlinux rsync.aarch64 3.2.6-1.amzn2023.0.2 amazonlinux vim-common.aarch64 2:9.0.475-1.amzn2023.0.1 amazonlinux vim-data.noarch 2:9.0.475-1.amzn2023.0.1 amazonlinux vim-enhanced.aarch64 2:9.0.475-1.amzn2023.0.1 amazonlinux vim-filesystem.noarch 2:9.0.475-1.amzn2023.0.1 amazonlinux vim-minimal.aarch64 2:9.0.475-1.amzn2023.0.1 amazonlinux xz.aarch64 5.2.5-9.amzn2023.0.1 amazonlinux xz-libs.aarch64 5.2.5-9.amzn2023.0.1 amazonlinux zlib.aarch64 1.2.11-32.amzn2023.0.3 amazonlinux

Installieren Sie die Pakete, die Sie aktualisieren möchten. Verwenden Sie sudo dnf upgrade --releasever=latest und die Paketnamen, um sicherzustellen, dass das system-release-Paket unverändert bleibt.

$ sudo dnf upgrade --releasever=latest openssl openssl-libs Last metadata expiration check: 0:01:28 ago on Wed 15 Feb 2023 02:52:21 AM UTC. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Upgrading: openssl aarch64 1:3.0.5-1.amzn2023.0.3 amazonlinux 1.1 M openssl-libs aarch64 1:3.0.5-1.amzn2023.0.3 amazonlinux 2.1 M Transaction Summary ================================================================================ Upgrade 2 Packages Total download size: 3.2 M
Anmerkung

Mit sudo dnf upgrade --releasever=latest werden alle Pakete aktualisiert, einschließlich system-release. Die Version bleibt an das neue system-release gebunden, es sei denn, Sie legen eine persistente Überschreibung fest.

Persistente Überschreibung bei einem deterministischen Upgrade

Anmerkung

Mit deterministischen Updates können Sie Betriebssystemänderungen in Ihre CI/CD Pipeline integrieren. Durch die Deaktivierung deterministischer Updates können keine Tests vor der Bereitstellung durchgeführt werden.

Anstatt etwas hinzuzufügen--releasever=latest, können Sie das System mit persistenter Überschreibung entsperren, indem Sie den Variablenwert auf setzen. latest Wenn Sie diese latest Option immer verwenden, wird das Verhalten von AL2 023 auf das AL2 Aktualisierungsmodell zurückgesetzt, bei dem bei jedem Aufruf des Paketmanagers immer die neueste Version angezeigt wird und nicht an eine bestimmte Version des Betriebssystems gebunden ist.

Warnung

Wenn Sie den Paketmanager mithilfe einer persistenten Überschreibung deterministischer Updates entsperren, gehen Sie das Risiko ein, mögliche Inkompatibilitäten zwischen Ihrer Anwendung und einem Betriebssystemupdate in der Produktion zu entdecken.

Inkompatibilitäten sind zwar selten, aber mit einem Betriebssystem-Update integrieren Sie neue Codeänderungen in Ihre Umgebung. Integrationstests können jedoch verhindern, dass Codeänderungen implementiert werden, die sich negativ auf Produktionsumgebungen auswirken.

$ echo latest | sudo tee /etc/dnf/vars/releasever latest
$ sudo dnf upgrade Last metadata expiration check: 0:03:36 ago on Wed 15 Feb 2023 02:52:21 AM UTC. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: kernel aarch64 6.1.73-45.135.amzn2023 amazonlinux 24 M Upgrading: acl aarch64 2.3.1-2.amzn2023.0.1 amazonlinux 72 k alternatives aarch64 1.15-2.amzn2023.0.1 amazonlinux 36 k amazon-ec2-net-utils noarch 2.3.0-1.amzn2023.0.1 amazonlinux 16 k at aarch64 3.1.23-6.amzn2023.0.1 amazonlinux 60 k attr aarch64 2.5.1-3.amzn2023.0.1 amazonlinux 59 k audit aarch64 3.0.6-1.amzn2023.0.1 amazonlinux 249 k audit-libs aarch64 3.0.6-1.amzn2023.0.1 amazonlinux 116 k aws-c-auth-libs aarch64 0.6.5-6.amzn2023.0.2 amazonlinux 79 k aws-c-cal-libs aarch64 0.5.12-7.amzn2023.0.2 amazonlinux 34 k aws-c-common-libs aarch64 0.6.14-6.amzn2023.0.2 amazonlinux 119 k aws-c-compression-libs aarch64 0.2.14-5.amzn2023.0.2 amazonlinux 22 k aws-c-event-stream-libs aarch64 0.2.7-5.amzn2023.0.2 amazonlinux 47 k aws-c-http-libs aarch64 0.6.8-6.amzn2023.0.2 amazonlinux 147 k aws-c-io-libs aarch64 0.10.12-5.amzn2023.0.6 amazonlinux 109 k aws-c-mqtt-libs aarch64 0.7.8-7.amzn2023.0.2 amazonlinux 61 k aws-c-s3-libs aarch64 0.1.27-5.amzn2023.0.3 amazonlinux 54 k aws-c-sdkutils-libs aarch64 0.1.1-5.amzn2023.0.2 amazonlinux 26 k aws-checksums-libs aarch64 0.1.12-5.amzn2023.0.2 amazonlinux 50 k awscli-2 noarch 2.7.8-1.amzn2023.0.4 amazonlinux 7.3 M basesystem noarch 11-11.amzn2023.0.1 amazonlinux 7.8 k bash aarch64 5.1.8-2.amzn2023.0.1 amazonlinux 1.6 M bash-completion noarch 1:2.11-2.amzn2023.0.1 amazonlinux 292 k bc aarch64 1.07.1-14.amzn2023.0.1 amazonlinux 120 k bind-libs aarch64 32:9.16.27-1.amzn2023.0.1 amazonlinux 1.2 M bind-license noarch 32:9.16.27-1.amzn2023.0.1 amazonlinux 14 k bind-utils aarch64 32:9.16.27-1.amzn2023.0.1 amazonlinux 206 k binutils aarch64 2.38-20.amzn2023.0.3 amazonlinux 4.6 M boost-filesystem aarch64 1.75.0-4.amzn2023.0.1 amazonlinux 55 k boost-system aarch64 1.75.0-4.amzn2023.0.1 amazonlinux 14 k boost-thread aarch64 1.75.0-4.amzn2023.0.1 amazonlinux 54 k bzip2 aarch64 1.0.8-6.amzn2023.0.1 amazonlinux 53 k bzip2-libs aarch64 1.0.8-6.amzn2023.0.1 amazonlinux 44 k c-ares aarch64 1.17.2-1.amzn2023.0.1 amazonlinux 107 k ca-certificates noarch 2021.2.50-1.0.amzn2023.0.3 amazonlinux 343 k checkpolicy aarch64 3.4-3.amzn2023.0.1 amazonlinux 345 k chkconfig aarch64 1.15-2.amzn2023.0.1 amazonlinux 162 k chrony aarch64 4.2-7.amzn2023.0.4 amazonlinux 314 k cloud-init noarch 22.2.2-1.amzn2023.1.7 amazonlinux 1.1 M cloud-utils-growpart aarch64 0.31-8.amzn2023.0.2 amazonlinux 31 k coreutils aarch64 8.32-30.amzn2023.0.2 amazonlinux 1.1 M coreutils-common aarch64 8.32-30.amzn2023.0.2 amazonlinux 2.0 M cpio aarch64 2.13-10.amzn2023.0.1 amazonlinux 269 k cracklib aarch64 2.9.6-27.amzn2023.0.1 amazonlinux 83 k cracklib-dicts aarch64 2.9.6-27.amzn2023.0.1 amazonlinux 3.6 M crontabs noarch 1.11-24.20190603git.amzn2023.0.1 amazonlinux 19 k crypto-policies noarch 20230128-1.gitdfb10ea.amzn2023.0.1 amazonlinux 61 k crypto-policies-scripts noarch 20230128-1.gitdfb10ea.amzn2023.0.1 amazonlinux 81 k ... Installing dependencies: amazon-linux-repo-cdn noarch 2023.0.20230210-0.amzn2023 amazonlinux 16 k xxhash-libs aarch64 0.8.0-3.amzn2023.0.1 amazonlinux 32 k Installing weak dependencies: amazon-chrony-config noarch 4.2-7.amzn2023.0.4 amazonlinux 14 k gawk-all-langpacks aarch64 5.1.0-3.amzn2023.0.1 amazonlinux 207 k Transaction Summary ================================================================================ Install 5 Packages Upgrade 413 Packages Total download size: 199 M
Anmerkung

Wenn Sie die Überschreibungsvariable /etc/dnf/vars/releasever verwendet haben, können Sie mithilfe des folgenden Befehls den Überschreibungswert löschen und so das Standardsperrverhalten wiederherstellen.

$ sudo rm /etc/dnf/vars/releasever

Die Verwendung einer dauerhaften Überschreibung der Verwendung latest anstelle einer bestimmten Version entspricht dem Standardverhalten von. AL2 Es gibt Dienste, die darauf AMIs aufbauen AL2 , dieses Verhalten deaktivieren und sich auf bestimmte Paketversionen beschränken, wie Sie es standardmäßig auf AL2 023 bekommen.

Anstatt deterministische Updates zu deaktivieren, empfehlen wir, Instances durch Instances zu ersetzen, die über ein neues AMI gestartet wurden. Wenn der Austausch von Instances keine Option ist, empfehlen wir die Verwendung von Tools wie AWS Systems Manager Patch Manager, um die Installation von Updates in einer Flotte zu koordinieren. EC2 Image Builder kann auch automatisch Ihre eigenen, aus AL2 023 Basis-Images AMIs abgeleiteten Images erstellen, patchen und testen. Sie können dies auch verwendenErhalten Sie Benachrichtigungen über neue Updates, um Ihre eigenen AMI-Gebäude-Pipelines auszulösen.

Die Verwendung latest in einer Vorproduktionsumgebung und die anschließende Bereitstellung in der Produktionsumgebung bieten latest keinen Schutz vor Problemen zwischen einem Betriebssystem-Update und Ihrer Anwendung. Eine neue Version AL2 023 kann zu jedem beliebigen Zeitpunkt verfügbar sein, weshalb jede Verwendung latest in der Produktion mit Risiken verbunden ist.