停用或移除 VM 與映像中的 Linux 代理程式
適用於:✔️ Linux VM ✔️ 彈性擴展集
移除 Linux 代理程式之前,您必須了解移除 Linux 代理程式後,將無法使用哪些虛擬機器。
Azure 虛擬機器 (VM) 擴充功能是小型的應用程式,擴充功能是由 Azure 控制平面安裝並管理,可在 Azure VM 上提供部署後設定及自動化工作。 Azure Linux 代理程式的目的為處理平台擴充功能命令,並確保 VM 中的擴充功能處於正常狀態。
Azure 平台裝載許多擴充功能,包括 VM 設定、監視、安全性和公用程式應用程式等等。 有多種第一方與第三方擴充功能可供選擇,使用擴充功能的主要案例包括下列範例:
- 支援第一方 Azure 服務,例如 Azure 備份、監視、磁碟加密、安全性、網站複寫等。
- SSH/密碼重設
- VM 設定 - 執行自訂指令碼、安裝 Chef 或 Puppet 代理程式等。
- 第三方產品,例如 AV 產品、VM 弱點工具、VM 與應用程式監視工具。
- 擴充功能可以與新的 VM 部署配套。 例如,這些擴充功能可以是較大部署的一部分、可以在 VM 佈建時設定應用程式,或者可以在部署之後針對任何支援的擴充功能操作系統來執行。
停用擴充功能處理
根據您的需求,可以透過多種方式停用擴充功能處理,但在此之前,您必須移除部署至 VM 的所有擴充功能。例如,可以使用 Azure CLI 以列出並刪除擴充功能:
az vm extension delete -g MyResourceGroup --vm-name MyVm -n extension_name
注意
如果沒有執行上述操作,則平台會嘗試傳送擴充功能設定,並在 40 分鐘後逾時。
在控制平面執行停用
如果不確定未來是否需要擴充功能,則可以保存 VM 上的 Linux 代理程式,然後從平台停用擴充功能處理功能。 此為 Microsoft.Compute
api 版本 2018-06-01
與更新版本提供的選項,與所安裝的 Linux 代理程式版本無關。
az vm update -g <resourceGroup> -n <vmName> --set osProfile.allowExtensionOperations=false
將上述命令設定為「true」並使用,便能輕鬆從平台重新啟用擴充功能處理功能。
移除執行中虛擬機器的 Linux 代理程式
請確定已根據上述步驟,移除了 VM 中的所有現有擴充功能。
步驟 1:移除 Azure Linux 代理程式
如果僅移除 Linux 代理程式,而未移除相關聯的設定成品,則可以在稍後重新安裝。 若要移除 Linux 代理程式,請以 root 身分執行下列其中一項命令:
針對 Ubuntu 18.04+
sudo apt -y remove walinuxagent
針對 Redhat 7.X、8.X 和 9.X
sudo yum -y remove WALinuxAgent
針對 SUSE 12.X、15.X
sudo zypper --non-interactive remove python-azure-agent
步驟 2:(選擇性) 移除 Azure Linux 代理程式成品
重要
您可以移除 Linux 代理程式所有相關聯的成品,但如此一來,便無法在稍後重新安裝。 因此,強烈建議您先考慮停用 Linux 代理程式,只使用上述命令進行移除。
如果您確認永遠不會重新安裝 Linux 代理程式,則可執行下列命令:
針對 Ubuntu 18.04+
sudo pt -y purge walinuxagent
sudo cp -rp /var/lib/waagent /var/lib/waagent.bkp
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log
針對 Redhat 7.X、8.X 和 9.X
sudo yum -y remove WALinuxAgent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log
針對 SUSE 12.X、15.X
sudo zypper --non-interactive remove python-azure-agent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log
準備不含 Linux 代理程式的映像
如果您擁有已包含 cloud-init 的映像,而且想要移除 Linux 代理程式,但未來仍會使用 cloud-init 進行佈建,請以 root 身分執行步驟 2 (並在必要時執行步驟 3) 以移除 Azure Linux 代理程式,下列命令便會移除 cloud-init 設定和快取資料,並準備 VM 以建立自訂映像。
sudo cloud-init clean --logs --seed
取消佈建並建立映像
Linux 代理程式能利用「waagent -deprovision+user」步驟清除部分現有映像中繼資料,但移除中繼資料之後,您必須執行以下動作,移除映像內的其他敏感性資料。
移除所有現有的 SSH 主機金鑰
sudo rm /etc/ssh/ssh_host_*key*
刪除管理帳戶
sudo touch /var/run/utmp sudo userdel -f -r <admin_user_account>
刪除根密碼
sudo passwd -d root
完成上述步驟後,便可以使用 Azure CLI 建立自訂映像。
建立一般受控映像
az vm deallocate -g <resource_group> -n <vm_name>
az vm generalize -g <resource_group> -n <vm_name>
az image create -g <resource_group> -n <image_name> --source <vm_name>
在 Azure Compute Gallery 中建立映像版本
az sig image-version create \
-g $sigResourceGroup
--gallery-name $sigName
--gallery-image-definition $imageDefName
--gallery-image-version 1.0.0
--managed-image /subscriptions/00000000-0000-0000-0000-00000000xxxx/resourceGroups/imageGroups/providers/images/MyManagedImage
從不含 Linux 代理程式的映像建立 VM
從不含 Linux 代理程式的映像建立 VM 時,必須確定 VM 部署設定指出此 VM 不支援擴充功能。
注意
如果沒有執行上述操作,則平台會嘗試傳送擴充功能設定,並在 40 分鐘後逾時。
若要部署已停用擴充功能的 VM,可以將 Azure CLI 搭配 --enable-agent 使用。
az vm create \
--resource-group $resourceGroup \
--name $prodVmName \
--image RedHat:RHEL:8.1-ci:latest \
--admin-username azadmin \
--ssh-key-value "$sshPubkeyPath" \
--enable-agent false
或者,也可以透過設定 "provisionVMAgent": false,
,使用 Azure Resource Manager (ARM) 範本以執行此操作。
"osProfile": {
"computerName": "[parameters('virtualMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"linuxConfiguration": {
"disablePasswordAuthentication": "true",
"provisionVMAgent": false,
"ssh": {
"publicKeys": [
{
"path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
"keyData": "[parameters('adminPublicKey')]"
下一步
如需詳細資訊,請參閱佈建 Linux。