使用 cloud-init 在 Azure 上的 Linux VM 中更新和安裝封裝

警告

本文參考 CentOS,這是接近結束生命週期 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

適用於:✔️ Linux VM ✔️ 彈性擴展集

本文說明如何在 Azure 佈建期間,使用 cloud-init 在 Linux 虛擬機器 (VM) 上或虛擬機器擴展集上更新套件。 一旦 Azure 佈建資源,這些 cloud-init 指令碼就會在初次開機時執行。 如需深入了解 cloud-init 如何以原生方式在 Azure 和支援的 Linux 散發版本中運作,請參閱 cloud-init 概觀

使用 cloud-init 更新 VM

基於安全考量,您應該設定 VM 以在第一次開機時套用最新的更新。 由於 cloud-init 可在不同的 Linux 散發版本上運作,所以不需要為套件管理員指定 aptzypperyum。 相反地,您可定義 package_upgrade 並讓 cloud-init 程序判斷使用中散發版本的適當機制。

在此範例中,我們將使用 Azure Cloud Shell。 若要查看作用中的升級程序,請建立名為 cloud_init_upgrade.txt 的檔案,然後貼上下列設定。 您可以使用任何您想要的編輯器。 請確定已正確複製整個 cloud-init 檔案,特別是第一行。

複製以下文字,並將其貼入 cloud_init_upgrade.txt 檔案中。 請確定已正確複製整個 cloud-init 檔案,特別是第一行。

#cloud-config
package_upgrade: true
packages:
- httpd

部署之前,您必須使用 az group create 命令建立資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。

az group create --name myResourceGroup --location eastus

現在,請使用 az vm create 建立 VM,並以 --custom-data 參數指定 cloud-init 檔案,如下所示:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_upgrade.txt \
  --admin-username azureuser \
  --generate-ssh-keys

注意

請據以取代 myResourceGroupvmNameimageCIURN 值。 確認已選擇 Cloud-init 的映像。

以 SSH 連線到顯示於由上述命令所產生之輸出中的 VM 公用 IP 位址。 輸入您自己的 userpublicIpAddress ,如下所示:

ssh <user>@<publicIpAddress>

執行套件管理工具並檢查是否有更新:

  • 執行下列命令以確認沒有擱置中的更新
sudo yum check-update

由於 cloud-init 會在開機時檢查是否有更新並予以安裝,因此應該已經沒有要套用的其他更新。

  • 執行下列命令並檢閱輸出,您就會看到更新程序、更改過的套件數目,以及 httpd 的安裝。
sudo yum history
ID     | Command line                                | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------------
     3 | -y install httpd                            | 2022-02-18 18:30 | Install        |    7
     2 | -y upgrade                                  | 2022-02-18 18:23 | I, O, U        |  321 EE
     1 |                                             | 2021-02-04 19:20 | Install        |  496 EE

下一步

如需其他設定變更的 cloud-init 範例,請參閱下列文件: