使用 cloud-init 在 Azure 上的 Linux VM 中更新和安裝封裝
適用於:✔️ Linux VM ✔️ 彈性擴展集
本文說明如何在 Azure 佈建期間,使用 cloud-init 在 Linux 虛擬機器 (VM) 上或虛擬機器擴展集上更新套件。 一旦 Azure 佈建資源,這些 cloud-init 指令碼就會在初次開機時執行。 如需深入了解 cloud-init 如何以原生方式在 Azure 和支援的 Linux 散發版本中運作,請參閱 cloud-init 概觀
使用 cloud-init 更新 VM
基於安全考量,您應該設定 VM 以在第一次開機時套用最新的更新。 由於 cloud-init 可在不同的 Linux 散發版本上運作,所以不需要為套件管理員指定 apt
、zypper
或 yum
。 相反地,您可定義 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
注意
請據以取代 myResourceGroup、vmName 和 imageCIURN 值。 確認已選擇 Cloud-init 的映像。
以 SSH 連線到顯示於由上述命令所產生之輸出中的 VM 公用 IP 位址。 輸入您自己的 user 和 publicIpAddress ,如下所示:
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 範例,請參閱下列文件: