透過版本化的儲存庫使用確定性升級 - Amazon Linux 2023

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過版本化的儲存庫使用確定性升級

使用確定性升級的系統

注意

套件管理員的預設行為已變更AL2。

確定性升級是確保生產環境的所有變更都能在廣泛部署之前完全測試的強大方法。每個新的 AL2 023 AMI 都會鎖定到特定版本的 AL2 023。這會提供啟動特定作業系統套件時所安裝的 OS 套件版本的決定AMI性行為。就地更新可以是特定的發行版本,以確保叢集的確定性行為。當您移至新版AMIs或就地更新版本時,您可以在 CI/CD 管道中測試每個版本,並在部署到生產環境之前找到任何潛在問題。

您可以使用 Amazon EC2 系統管理員修補程式管理員等工具,協調跨叢集套用更新。對於在新的 AL2 023 發布AMIs時派生AMIs的建築,EC2Image Builder 可以自動構建,修補和測試AMIs,或者您可接收有關新更新的通知以知道新基礎AMIs何時可用,或者觸發自己的構AMI建管道。

如需將更新限制為來自特定公告的資訊,請參閱 就地套用安全性更新

對於就地修補,您可以使用dnf套件管理員。當您執行 dnf upgrade 命令時,系統會檢查 releasever 變數指定的儲存庫中是否有升級。有效的releaseverlatest 或日期加蓋的版本,例如 2023.5.20240730.

您可以使用下列其中一種方法,來變更 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(即 AL2 023 版本),您可以在叢集中獲得確定性的一組更改。您推出了版本 A,已更新至 B,然後更新為 C.

確定性升級系統的選擇性更新

注意

我們建議您安裝新版本中的所有更新,而不是選取特定的更新。只將部分更新套用至作業系統應該是進行整個更新的標準做法的例外狀況。

您可能想要安裝最新版本的特定套件,並將系統鎖定為原始發行版本。

您可以使用 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

使用具決定性升級的持續覆寫

注意

透過確定性更新,您可以將作業系統變更整合到 CI/CD 管道中。停用確定性更新會移除部署前進行測試的能力。

透過將變數值設定為--releasever=latest,您可以使用永久取代來解鎖系統,而不是加入 latest。 通過始終使用latest,這將 AL2 023 的行為恢復為AL2更新模型,其中任何對軟件包管理器的調用都將始終查看最新版本,並且不會鎖定到任何特定版本的操作系統。

警告

藉由使用決定性更新的持續性覆寫來解除鎖定套件管理員,您可以承擔發現應用程式與生產環境中作業系統更新之間可能不相容的風險。

雖然不相容性少見,但在作業系統更新中,您將新的程式碼變更整合到您的環境中,整合測試可以防止部署對生產環境產生負面影響的程式碼變更。

$ 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有些服務會AMIs根據AL2它們禁用此行為構建,並鎖定到特定的軟件包版本,就像默認在 AL2 023 上獲得的那樣。

我們建議您將執行個體取代為新的執行個體,而不是停用確定性更新AMI。如果不是替換執行個體的選項,我們建議您使用 Amazon EC2 系統管理員修補程式管理員之類的工具,協調跨叢集套用更新。EC2Image Builder 也可以自動建置、修補和測試您自己AMIs衍生自 AL2 023 基礎映像檔。您也可以使用接收有關新更新的通知它來觸發自己的AMI建築管道。

latest在生產前環境中使用,然後使用部署到生產環境latest會提供 OS 更新和應用程式之間的任何問題的保護。一個新的 AL2 023 版本可以在任何時間點,因此在生產latest中的所有用途攜帶風險。