バージョン管理されたリポジトリによる確定的アップグレードの使用 - Amazon Linux 2023

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

バージョン管理されたリポジトリによる確定的アップグレードの使用

確定的なアップグレードシステムを使用する

注記

パッケージマネージャーのデフォルトの動作が AL2 から変更されました。

確定的アップグレードは、すべての変更を本番環境に本格的にデプロイする前に詳細にテストできる強力な方法です。新しい各 AL2023 AMI は、特定バージョンの AL2023 にロックされます。これにより、特定の AMI の起動時に、どのバージョンの OS パッケージをインストールするかが確定的に判断されます。インプレース更新はリリースバージョンを特定できるため、フリート全体の確定的な動作が保証されます。新しい AMI またはインプレース更新バージョンに移行する際は、各バージョンを CI/CD パイプラインでテストし、本番環境にデプロイする前に潜在的な問題を検出できます。

AWS Systems Manager Patch Manager などのツールを使用して、フリート全体での更新の適用をオーケストレーションできます。新しい AL2023 AMI のリリース時に派生 AMI を構築する場合は、EC2 Image Builder により、AMI の自動的な構築、パッチ適用、テストができます。または新しいアップデートの通知を受け取るにより、新しいベース AMI がいつ利用可能になるかを確認したり、独自の AMI 構築パイプラインをトリガーしたりできます。

特定のアドバイザリからの更新のみに制限する方法については、「セキュリティ更新プログラムのインプレースでの適用」を参照してください。

インプレースのパッチ適用には、dnf パッケージマネージャーを使用できます。dnf upgrade コマンドを実行すると、システムは releasever 変数が指定するリポジトリ内のアップグレードをチェックします。有効な releaseverは、最新または 2023.10.20260120 などの日付スタンプ付きバージョンです。

以下のいずれかの方法を使用して、releasever の値を変更できます。これらの方法は、システム優先度の降順で一覧表示されています。つまり、方法 1 は方法 2 と 3 を上書きし、方法 2 は方法 3 を上書きします。

  1. コマンドラインフラグ内の値 --releasever=latest (使用する場合)。

  2. 上書き変数ファイル で指定されている値 /etc/dnf/vars/releasever (設定されている場合)。

  3. 現在インストールされている system-release パッケージのバージョン。

以下の例ではバージョンは、2023.0.20230210 です。

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

新しくインストールされたシステムには、上書き変数は存在しません。システムはインストールした system-release のバージョンのにロックされているため、アップグレードはできません。

$ 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!

releasever フラグを使用して必要なバージョンを指定することで、特定のバージョンのパッケージを取得できます。

$ 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

--releasever オプションは system-release/etc/dnf/vars/releasever の両方を上書きするため、このアップグレードの結果は以下のようになります。

  1. アップグレードにより、以前のバージョンと新しいバージョンとの間で変更されたインストール済みパッケージがすべて置き換えられます。

  2. アップグレードすると、システムは新しい system-release のバージョンのリポジトリにロックされます。

どの releasever (AL2023 リリース) を更新するかを常に指定することで、フリート全体での変更を確定的に把握できます。バージョン A を起動して、B に更新し、さらに C に更新しました。

確定的なアップグレードされたシステムの選択的更新

注記

特定の更新を選択するのではなく、新しいリリースのすべての更新をインストールすることをお勧めします。OS に更新の一部のみを適用することは、更新全体を適用するという標準プラクティスの例外です。

システムを元のリリースバージョンにロックしたまま、最近のリリースから選択したパッケージをインストールするとします。

dnf check-update を使用して、アップグレードするパッケージを特定します。

$ 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

アップグレードしたいパッケージをインストールします。sudo dnf upgrade --releasever=latest とパッケージ名を使用して、system-release パッケージが変更されないようにします。

$ 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
注記

sudo dnf upgrade --releasever=latest を使用すると、system-release を含むすべてのパッケージが更新されます。その後、永続的な上書きを設定しない限り、バージョンは新しい system-release にロックされたままになります。

確定的なアップグレードでの永続的上書きの使用

注記

確定的な更新により、OS の変更を CI/CD パイプラインに統合できます。確定的な更新を無効にすると、デプロイ前にテストできなくなります。

--releasever=latest を追加する代わりに、変数値を最新に設定することで、永続的な上書きを使用してシステムのロックを解除できます。latest を常に使用すると、AL2023 の動作は AL2 更新モデルに戻ります。パッケージマネージャーへのすべての呼び出しは、常に最新のリリースを参照し、特定のバージョンの OS にロックされません。

警告

確定的な更新の永続的な上書きを使用してパッケージマネージャーをロック解除することで、アプリケーションと本番環境の OS 更新との潜在的な非互換性が判明するというリスクがあります。

非互換性はまれに存在しますが、OS 更新で新しいコード変更を環境に統合する場合、統合テストにより、本番環境に悪影響を及ぼすコード変更のデプロイを防止できます。

$ 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
注記

上書き変数 /etc/dnf/vars/releasever を使用した場合は、以下のコマンドを使用して上書き値を消去してデフォルトのロック動作に戻します。

$ sudo rm /etc/dnf/vars/releasever

特定のバージョンではなく、latest の使用に対する永続的な上書きの使用は、AL2 のデフォルトの動作に似ています。AL2 に基づく AMI を構築するサービスの中には、この動作を無効にして、AL2023 でデフォルトで取得される特定のパッケージバージョンにロックするものがあります。

確定的な更新を無効にするのではなく、インスタンスを新しい AMI から起動したインスタンスに置き換えることをお勧めします。インスタンスの置き換えが不可能な場合は、AWS Systems Manager Patch Manager などのツールを使用して、フリート全体への更新の適用をオーケストレーションすることをお勧めします。EC2 Image Builder により、AL2023 ベースイメージから派生した独自の AMI の自動的な構築、パッチ適用、テストを行うこともできます。また、新しいアップデートの通知を受け取ることで、独自の AMI 構築パイプラインをトリガーすることもできます。

本番稼働前の環境で latest を使用し、次に latest を使用して本番稼働環境にデプロイすることは、OS 更新とアプリケーション間の問題から保護することになりません。新しい AL2023 リリースは随時発生する可能性があるため、本番環境での latest のすべての使用にはリスクが伴います。