Azure Linux VM 代理程式概觀
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+ |
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 (LTS 版本) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.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
設定選項有三種類型:Boolean
、String
或 Integer
。 您可以指定 Boolean
設定選項成為 y
或 n
。 特殊關鍵字 None
可用於某些字串類型設定項目。
Provisioning.Enabled
Type: Boolean
Default: y
此選項可讓使用者啟用或停用代理程式的佈建功能。 有效值為 y
和 n
。 如果停用佈建,則會保留映像檔中的 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 上支援的加密演算法類型。 通常支援的值是 rsa
、dsa
和 ecdsa
。 Windows 上的 putty.exe 檔案不支援 ecdsa
。 如果想要在 Windows 上使用 putty.exe 來連線至 Linux 部署,請使用 rsa
或 dsa
。
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
:MD52a
:Blowfish5
:SHA-2566
: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 雲端映像上設定資源磁碟掛接和交換空間,請參閱下列資源: