Azure Linux VM 代理程式概觀

警告

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

Microsoft Azure Linux 代理程式 (waagent) 管理 Linux 和 FreeBSD 佈建,以及虛擬機器 (VM) 與 Azure 網狀架構控制器之間的互動。 除了提供佈建功能的 Linux 代理程式之外,Azure 提供針對部分 Linux 作業系統使用 cloud-init 的選項。

Linux 代理程式為 Linux 和 FreeBSD Azure 虛擬機器部署提供下列功能。 如需詳細資訊,請參閱 GitHub 上的 Azure Linux VM 代理程式讀我檔案

映像佈建

  • 建立使用者帳戶
  • 設定 SSH 驗證類型
  • 部署 SSH 公開金鑰和金鑰組
  • 設定主機名稱
  • 將主機名稱發佈至平台 DNS
  • 將 SSH 主機金鑰和指紋報告給平台
  • 管理資源磁碟
  • 格式化和掛接資源磁碟
  • 設定交換空間

網路

  • 管理路由以提高平台 DHCP 伺服器的相容性
  • 確保網路介面名稱的穩定性

核心

  • 設定虛擬 NUMA (對核心 2.6.37 停用)
  • 取用 /dev/random 的 Hyper-V Entropy
  • 設定根裝置 (可能在遠端) 的 SCSI 逾時

診斷

  • 提供序列連接埠的主控台重新導

System Center Virtual Machine Manager 部署

  • 在 System Center Virtual Machine Manager 2012 R2 環境中執行時偵測和啟動 Linux 的 Virtual Machine Manager 代理程式

VM 延伸模組

  • 將 Microsoft 和合作夥伴所撰寫的元件插入 Linux VM,以啟用軟體和設定自動化

您可以在 GitHub 上找到 VM 延伸模組參考實作。

通訊

資訊經由兩個管道從平台流向代理程式:

  • 在 VM 部署中,開機時連接的 DVD。 此 DVD 包含開放虛擬化格式 (OVF) 相容的設定檔,其中包含 SSH 金鑰組以外的全部佈建資訊。
  • TCP 端點,公開可用來取得部署和拓撲組態的 REST API。

需求

測試已確認下列系統可與 Azure Linux VM 代理程式搭配運作。

注意

此清單可能與 Azure 上背書的 Linux 散發套件不同。

Distribution x64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+、8.x+ 7.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ 不支援
Oracle Linux 6.4+、7.x+、8.x+ 不支援
Red Hat Enterprise Linux 6.7+、7.x+、8.x+、9.x+ 8.6+、9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+、15.x+ 15.x SP4+
Ubuntu 18.04+、20.04+、22.04+ 20.04+、22.04+

重要

RHEL/Oracle Linux 6.10 是唯一提供擴充生命週期支援的 RHEL/OL 6 版本。 延長維護將於 2024年 6 月 30 日結束

其他支援的系統:

  • 代理程式在系統上的運作方式比文件中所列的系統還多。 不過,我們不會測試或提供支援不在背書清單上的散發版本。 特別是未背書 FreeBSD。 客戶可以嘗試 FreeBSD 8,如果他們遇到問題,他們可以在我們的 GitHub 存放庫中開啟問題,我們或許可以提供説明。

Linux 代理程式必須仰賴下列系統套件才能正常運作:

  • Python 2.6+
  • OpenSSL 1.0+
  • OpenSSH 5.3+
  • 檔案系統公用程式:sfdisk、fdisk、mkfs、parted
  • 密碼工具:chpasswd、sudo
  • 文字處理工具:sed、grep
  • 網路工具:ip-route
  • 掛接 UDF 檔案系統的核心支援

請確定您的 VM 可以存取 IP 位址 168.63.129.16。 如需相關資訊,請參閱什麼是 IP 位址 168.63.129.16

安裝

安裝和升級 Azure Linux VM 代理程式的支援方法使用散發套件的封裝儲存機制所提供的 RPM 或 DEB 封裝。 全部認可的散發套件提供者都會將 Azure Linux VM 代理程式套件整合於本身的映像和儲存機制中。 某些 Linux 散發套件可能會停用 Azure Linux VM 代理程式自動更新功能,有些存放庫可能也包含較舊的版本,這些版本可能會有新式延伸模組的問題,因此,建議您安裝最新的穩定版本。 若要確定 Azure Linux VM 代理程式已正確更新,建議您在 /etc/waagent.conf 檔案中擁有選項 AutoUpdate.Enabled=Y,或只註解該選項會導致其預設值。 擁有 AutoUpdate.Enabled=N 將不會允許 Azure Linux VM 代理程式正確更新。

如需瞭解進階安裝選項,例如從來源安裝或安裝到自訂的位置或前置詞,請參閱 Microsoft Azure Linux VM 代理程式。 除了這些案例之外,我們不支援或建議從來源升級或重新安裝 Azure Linux VM 代理程式。

命令列選項

旗標

  • verbose:提高指定命令的詳細程度。
  • force:略過某些命令的互動式確認。

命令

  • help:列出支援的命令和旗標。

  • deprovision:嘗試清除系統,使之適合重新佈建。 作業會刪除:

    • 如果 Provisioning.RegenerateSshHostKeyPair 是位於設定檔中的 y,則為全部 SSH 主機金鑰。
    • /etc/resolv.conf 中的 Nameserver 設定。
    • 如果 Provisioning.DeleteRootPassword 是位於設定檔中的 y,則為 /etc/shadow 的根密碼。
    • 快取的 DHCP 用戶端租用。

    用戶端會將主機名稱重設為 localhost.localdomain

    警告

    取消佈建不能保證映像檔中的全部機密資訊都清除完畢而適合再度散發。

  • deprovision+user:執行 deprovision 中全部動作,並刪除最後佈建的使用者帳戶 (取自於 /var/lib/waagent) 和相關聯的資料。 您取消佈建先前在 Azure 上佈建的映像時,請使用此參數,以便擷取和重複使用映像。

  • version:顯示 waagent 的版本。

  • serialconsole:設定 GRUB,以將 ttyS0 (第一個序列連接埠) 標示為開機主控台。 此選項可確保將核心開機記錄傳送至序列連接埠且可用於偵錯。

  • daemon:以精靈方式執行 waagent 來管理與平台之間的互動。 此引數是在 waagent init 指令碼中指定給 waagent。

  • start︰以背景處理序方式執行 waagent。

組態

/etc/waagent.conf 設定檔控制 waagent 的動作。 以下是設定檔的範例:

Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.AllowResetSysUser=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
HttpProxy.Host=None
HttpProxy.Port=None
AutoUpdate.Enabled=y

設定選項有三種類型:BooleanStringInteger。 您可以指定 Boolean 設定選項成為 yn。 特殊關鍵字 None 可用於某些字串類型設定項目。

Provisioning.Enabled

Type: Boolean
Default: y

此選項可讓使用者啟用或停用代理程式的佈建功能。 有效值為 yn。 如果停用佈建,則會保留映像檔中的 SSH 主機金鑰和使用者金鑰,並忽略 Azure 佈建 API 中的設定。

注意

針對使用 cloud-init 執行佈建工作的 Ubuntu 雲端映像,Provisioning.Enabled 參數的預設值為 n

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

如果值為 y,代理流程會在佈建流程期間清除 /etc/shadow 檔案中的根密碼。

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

如果值為 y,代理流程會在佈建流程期間從 /etc/ssh/ 刪除全部 SSH 主機金鑰組,包括 ECDSA、DSA 和 RSA。 代理程式會產生單一全新的金鑰組。

使用 Provisioning.SshHostKeyPairType 項目來設定新金鑰組的加密類型。 重新啟動 SSH 精靈時 (例如重新開機後),某些散發套件會針對任何缺少的加密類型重建 SSH 金鑰組。

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

您可以將此選項設定為 SSH 精靈在 VM 上支援的加密演算法類型。 通常支援的值是 rsadsaecdsa。 Windows 上的 putty.exe 檔案不支援 ecdsa。 如果想要在 Windows 上使用 putty.exe 來連線至 Linux 部署,請使用 rsadsa

Provisioning.MonitorHostName

Type: Boolean
Default: y

如果值為 y,waagent 會監視 Linux VM 的主機名稱變更,如 hostname 命令所傳回。 Waagent 接著會自動更新映像中的網路設定,以反映變更。 若要將名稱變更推送至 DNS 伺服器,網路功能會在 VM 上重新啟動。 此重新啟動會導致網際網路連線短暫中斷。

Provisioning.DecodeCustomData

Type: Boolean
Default: n

如果值為 y,waagent 會從 Base64 譯碼 CustomData

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

如果值為 y,waagent 會在佈建之後執行 CustomData

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

此選項可允許重設系統使用者的密碼。 此項目預設為停用。

Provisioning.PasswordCryptId

Type: String
Default: 6

此選項會指定 crypt 在產生密碼雜湊時使用的演算法。 有效值為:

  • 1:MD5
  • 2a:Blowfish
  • 5:SHA-256
  • 6:SHA-512

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

此選項會指定用來產生密碼雜湊的隨機 Salt 長度。

ResourceDisk.Format

Type: Boolean
Default: y

如果值為 y,則 waagent 會格式化並掛接平台所提供的資源磁碟,除非在 ResourceDisk.Filesystem 中要求使用者的檔案系統類型為 ntfs。 代理程式會在磁碟上提供單一 Linux 磁碟分區 (識別碼 83)。 如果可順利掛接此磁碟分割,則不會格式化。

ResourceDisk.Filesystem

Type: String
Default: ext4

此選項可指定資源磁碟的檔案系統類型。 支援的值隨 Linux 散發套件而不同。 如果字串為 X,則 Linux 映像檔上應該會出現 mkfs.X

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

此選項可指定資源磁碟的掛接路徑。 資源磁碟是暫存磁碟,可能會在 VM 取消佈建時清空。

ResourceDisk.MountOptions

Type: String
Default: None

此選項可指定要傳遞至 mount -o 指令的磁碟掛接選項。 值是以逗號分隔的值清單,例如 nodev,nosuid。 如需詳細資訊,請參閱 mount(8) 手冊頁。

ResourceDisk.EnableSwap

Type: Boolean
Default: n

如果您設定此選項,代理程式會在資源磁碟上建立分頁檔 (/swapfile),並將它新增至系統交換空間。

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

此選項會以 MB 為單位指定分頁檔的大小。

Logs.Verbose

Type: Boolean
Default: n

如果您設定此選項,則會提升記錄詳細程度。 Waagent 會記錄到 /var/log/waagent.log,並利用系統 logrotate 功能來輪換記錄。

OS.EnableRDMA

Type: Boolean
Default: n

您設定此選項時,該代理程式會嘗試安裝並載入 RDMA 核心驅動程式,這個驅動程式與基礎硬體上的軔體版本相符。

OS.RootDeviceScsiTimeout

Type: Integer
Default: 300

此選項會在 OS 磁碟和資料磁碟機上設定 SCSI 逾時 (以秒為單位)。 如果未設定,則會使用系統預設值。

OS.OpensslPath

Type: String
Default: None

您可以使用此選項指定加密作業使用的 openssl 二進位檔的替代路徑。

HttpProxy.Host、HttpProxy.Port

Type: String
Default: None

如果您設定此選項,代理程式會使用此 Proxy 伺服器存取網際網路。

AutoUpdate.Enabled

Type: Boolean
Default: y

啟用或停用目標狀態處理的自動更新。 預設值是 y

Azure Linux 客體代理程式中的自動記錄收集

Azure Linux 客體代理程式自 2.7+ 版本起,具備自動收集一些記錄並上傳的功能。 這項功能目前需要 systemd。 它會使用名為 azure-walinuxagent-logcollector.slice 的新 systemd 配量來管理資源,同時執行集合。

目的是為了方便離線分析。 代理程式會在將某些診斷記錄上傳至 VM 主機之前,產生 一些診斷記錄的 .zip 檔案。 工程小組和支援專業人員可以擷取檔案,以調查 VM 擁有者的問題。 如需 Azure Linux 客體代理程式收集檔案的技術資訊,請參閱代理程式的 GitHub 存放庫中的 azurelinuxagent/common/logcollector_manifests.py 檔案。

您可以編輯 /etc/waagent.conf 停用此選項。 將 Logs.Collect 更新為 n

Ubuntu 雲端映像

Ubuntu 雲端映像會使用 cloud-init 執行 Azure Linux VM 代理程式會管理的許多設定工作。 適用下列差異:

  • Provisioning.Enabled 會在 Ubuntu 雲端映像上預設為 n,其會使用 cloud-init 來執行佈建工作。

  • 下列組態參數不會在使用 cloud-init 來管理資源磁碟和交換空間的 Ubuntu 雲端映像上產生任何作用:

    • ResourceDisk.Format
    • ResourceDisk.Filesystem
    • ResourceDisk.MountPoint
    • ResourceDisk.EnableSwap
    • ResourceDisk.SwapSizeMB

若要在佈建期間,於 Ubuntu 雲端映像上設定資源磁碟掛接和交換空間,請參閱下列資源: