Microsoft Azure Linux Agent
Downcodes小編將為您介紹Microsoft Azure Linux Agent (waagent),它是一種管理Linux 預配和虛擬機器與Azure Fabric Controller 互動的工具。它為Linux IaaS 部署提供以下功能:
1. 映像預配:waagent 負責管理Linux 虛擬機器的初始預配過程,包括設定網路、安裝驅動程式和設定初始使用者帳戶。
2. 網路管理:waagent 與Azure Fabric Controller 協調,以配置虛擬機器的網路設置,例如IP 位址、子網路遮罩和網關。
3. 核心管理:waagent 可管理虛擬機器的核心更新,確保它始終運行最新且安全的核心版本。
4. 診斷:waagent 可收集和報告虛擬機器運作狀況訊息,幫助診斷問題並解決故障。
5. SCVMM 部署:waagent 支援與System Center Virtual Machine Manager (SCVMM) 集成,以管理和預配虛擬機器。
6. 虛擬機器擴展:waagent 支援運行虛擬機器擴展,這些擴展提供額外的功能和客製化,例如安裝軟體或監控指標。
7. 通訊:waagent 透過兩種通道與Azure Fabric Controller 通訊:
* 啟動時附加的DVD:對於IaaS 部署,一個包含OVF 相容設定檔的啟動時附加DVD 提供預配資訊(除了SSH 金鑰對)。
* REST API:一個公開REST API 的TCP 端點用於取得部署和拓撲配置。
waagent 可以透過httpproxy(用於HTTP 請求)或httpsproxy(用於HTTPS 請求)環境變數使用HTTP 代理程式。由於Python 的限制,waagent 不支援需要身份驗證的HTTP 代理程式。
類似地,如果設定了no_proxy 環境變量,waagent 將繞過代理。
請注意,在不同發行版中為waagent 服務定義這些環境變數的方式會有所不同。對於使用systemd 的發行版,常見的方法是在服務定義的[Service] 部分使用Environment 或EnvironmentFile,例如使用覆蓋或插入檔案(有關覆蓋,請參閱systemctl edit)。
範例
`
cat /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[Service]
Environment="http_proxy=http://proxy.example.com:80/"
Environment="https_proxy=http://proxy.example.com:80/"
#
`
waagent 將其環境傳遞給它執行的虛擬機器擴展,包括httpproxy 和httpsproxy,因此為waagent 定義代理程式也將為虛擬機器擴展定義代理程式。
如果使用HttpProxy.Host 和HttpProxy.Port 配置變量,它們將覆蓋環境設定。請注意,這些配置變數是waagent 進程的本機變量,不會傳遞給虛擬機器擴充。
waagent 需要一些系統軟體包才能正常運作。這些軟體包因發行版而異。
透過發行版軟體包庫進行安裝是唯一支援的安裝方法。
您可以從原始程式碼安裝以獲得更多進階選項,例如安裝到自訂位置或建立自訂映像。但是,從原始碼安裝可能會覆蓋發行版對waagent 所做的自訂,並且僅供進階使用者使用。我們對此方法的支持非常有限。
要從原始碼安裝,可以使用setuptools:
`
sudo python setup.py install --register-service
`
對於Python 3,請使用:
`
sudo python3 setup.py install --register-service
`
您可以透過執行以下命令查看更多安裝選項:
`
sudo python setup.py install --help
`
waagent 的日誌檔案保存在/var/log/waagent.log 中。
最後,您也可以使用下方DEB 和RPM 部分提供的設定範例來自訂自己的RPM 或DEB 軟體套件。此方法也適用於高級用戶,我們對此方法的支援非常有限。
透過發行版軟體包庫或使用自動更新進行升級是唯一支援的方法。您可以在這裡找到更多資訊:更新Linux Agent。
要從原始碼升級waagent,可以使用setuptools。從原始碼升級僅供高級用戶使用,我們對此方法的支援非常有限。
`
sudo python setup.py install --force
`
重新啟動waagent 服務:
`
sudo service waagent restart
`
對於Ubuntu,請使用:
`
sudo service walinuxagent restart
`
對於CoreOS,請使用:
`
sudo systemctl restart waagent
`
-verbose:增加指定指令的詳細程度。
-force:跳過某些指令的互動式確認。
-help:列出支援的指令和標誌。
-deprovision:嘗試清理系統並使其適合重新預配,方法是刪除以下內容:
* 所有SSH 主機金鑰(如果設定檔中的Provisioning.RegenerateSshHostKeyPair 為'y')。
* /etc/resolv.conf 中的名稱伺服器設定。
* /etc/shadow 中的root 密碼(如果設定檔中的Provisioning.DeleteRootPassword 為'y')。
* 快取的DHCP 用戶端租約。
* 將主機名稱重設為localhost.localdomain。
警告! deprovision 無法保證映像已清除所有敏感訊息,並且適合重新分發。
-deprovision+user:執行deprovision(如上所述)下的所有操作,以及刪除上次預配的使用者帳號及其關聯資料。
-version:顯示waagent 的版本。
-serialconsole:設定GRUB 以將ttyS0(第一個序列埠)標記為引導控制台。這將確保內核啟動日誌發送到串行端口,並可用於調試。
-daemon:將waagent 作為守護程序運行,以管理與平台的交互。此參數在waagent 初始化腳本中指定給waagent。
-start:將waagent 作為後台進程運行。
-collect-logs [-full]:運行日誌收集實用程序,該實用程式將收集與代理相關的日誌以進行偵錯,並將它們儲存在磁碟上的代理程式資料夾中。運行時將顯示確切位置。使用-full 標誌進行更全面的日誌收集。
一個設定檔(/etc/waagent.conf) 控制waagent 的操作。空白行和首字符為# 的行將被忽略(不支援行尾註解)。
下面顯示了一個範例設定檔:
`
Extensions.Enabled=y
Extensions.GoalStatePeriod=6
Provisioning.Agent=auto
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Logs.Verbose=n
Logs.Collect=y
Logs.CollectPeriod=3600
OS.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
OS.EnableFIPS=n
OS.OpensslPath=None
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=None
HttpProxy.Port=None
`
下面詳細描述了各種配置選項。配置選項分為三種類型:布林型、字串型和整數。布林型配置選項可以指定為"y" 或"n"。特殊關鍵字"None" 可用於某些字串型配置項,如下所述。
類型:布林型
預設值:y
此選項允許使用者啟用或停用代理程式中的擴充處理功能。有效值為"y" 或"n"。如果停用擴展處理,則目標狀態仍將被處理,並且仍會報告虛擬機器狀態,但僅每5 分鐘一次。目標狀態中的擴充配置將被忽略。請注意,密碼重設、SSH 金鑰更新和備份等功能依賴於擴充。僅在您完全不需要擴充功能時停用此選項。
注意:以這種方式停用擴充功能與完全不使用代理程式不同。要做到這一點,必須在預配時透過所使用的任何API 設定provisionVMAgent 標誌。我們將在我們的wiki 上提供有關此方面的更多詳細信息,但該wiki 目前尚不可用。
類型:布林型
預設值:n
在執行虛擬機器擴充之前等待cloud-init 完成(cloud-init status --wait)。
cloud-init 和虛擬機器擴充都是常見的初始部署期間自訂虛擬機器的方法。預設情況下,代理程式將在cloud-init 可能仍處於'config' 階段時開始執行擴展,並且不會等待'final' 階段完成。 cloud-init 和擴充功能可能會執行彼此衝突的操作(例如,它們都可能嘗試安裝軟體包)。將此選項設為'y' 可確保僅在cloud-init 完成所有階段後執行虛擬機器擴充。
請注意,使用此選項需要建立自訂映像並將此選項的值設為'y',以確保在虛擬機器的初始部署期間執行等待操作。
類型:整數
預設值:3600
代理等待cloud-init 的超時時間(以秒為單位)。如果逾時時間到期,代理程式將繼續執行虛擬機器擴充。有關更多詳細信息,請參見Extensions.WaitForCloudInit。
類型:整數
預設值:6
輪詢新目標狀態(以秒為單位)的頻率,並報告虛擬機器和擴充的狀態。目標狀態描述了虛擬機器上擴充的期望狀態。
注意:將此參數設定為超過幾分鐘的時間可能會導致Azure 入口網站上報告虛擬機器狀態為無回應/不可用。此外,此設定會影響代理開始執行擴充的速度。
類型:布林型
預設值:y
啟用擴充處理程序的自動更新。擴展處理程序負責管理擴展並報告虛擬機器狀態。代理程式的核心功能包含在擴充處理程序中,我們鼓勵使用者啟用此選項以維護最新的版本。
啟用此選項後,代理將在新版本可用時安裝它們。停用後,代理將不會安裝任何新版本,但它將使用已安裝在虛擬機器上的最新版本。
說明:
有關代理版本的更多信息,請參見我們的常見問題。
有關代理更新的更多信息,請參見我們的常見問題。
有關AutoUpdate.UpdateToLatestVersion 與AutoUpdate.Enabled 的更多信息,請參見我們的常見問題解答。
類型:布林型
預設值:y
啟用擴充處理程序的自動更新。此標誌出於遺留原因而受支持,我們強烈建議使用AutoUpdate.UpdateToLatestVersion 而不是此標誌。
這兩個標誌之間的差異在於,當設定為'n' 時,AutoUpdate.Enabled 將使用預先安裝在映像上的擴充處理程序版本,而AutoUpdate.UpdateToLatestVersion 將使用已安裝在虛擬機器上的最新版本(透過自動更新)。
在大多數發行版中,預設值為'y'。
類型:字串型
預設值:auto
選擇要使用的預配代理程式(或允許waagent 透過指定"auto" 來自行確定)。可能的選項包括"auto"(預設)、"waagent"、"cloud-init" 或"disabled"。
類型:布林型
預設值:y
此選項允許使用者啟用或停用代理程式中的預配功能。有效值為"y" 或"n"。如果停用預配,則映像中的SSH 主機和使用者金鑰將被保留,並且Azure 預配API 中指定的任何設定將被忽略。
注意:此配置選項已移除,不再運作。 waagent 現在自動偵測cloud-init 作為預配代理(可以選擇使用Provisioning.Agent 覆寫)。
類型:布林型
預設值:n
監控主機名稱更改,並透過DHCP 請求發布更改。
類型:整數
預設值:30
監控主機名稱更改的頻率(以秒為單位)。如果未設定MonitorHostName,則忽略此設定。
類型:布林型
預設值:n
此選項啟用/停用透過cloud-init 進行預配的支援。
如果為真("y"),代理程式將在安裝擴充功能和處理最新的目標狀態之前等待cloud-init 完成。 Provisioning.Enabled 必須停用("n") 才能使此選項生效。將Provisioning.Enabled 設定為真("y") 將覆蓋此選項並執行內建的代理預配程式碼。
注意:此配置選項已移除,不再運作。 waagent 現在自動偵測cloud-init 作為預配代理(可以選擇使用Provisioning.Agent 覆寫)。
類型:布林型
預設值:n
如果設定此選項,則預配過程中將刪除/etc/shadow 檔案中的root 密碼。
類型:布林型
預設值:y
如果設定此選項,則預配過程中將刪除/etc/ssh/ 中的所有SSH 主機金鑰對(ecdsa、dsa 和rsa)。並產生一個新的密鑰對。
新密鑰對的加密類型可以透過Provisioning.SshHostKeyPairType 條目配置。請注意,某些發行版將在SSH 守護程序重新啟動時(例如,重新開機後)為任何缺少的加密類型重新建立SSH 金鑰對。
類型:字串型
預設值:rsa
可以將其設定為虛擬機器上的SSH 守護程序支援的加密演算法類型。通常支援的值包括"rsa"、"dsa" 和"ecdsa"。
請注意,Windows 上的"putty.exe" 不支援"ecdsa"。因此,如果您打算使用Windows 上的putty.exe 連線到Linux 部署,請使用"rsa" 或"dsa"。
類型:布林型
預設值:y
如果設定此選項,waagent 將監控Linux 虛擬機器的主機名稱變更(如"hostname" 命令返回),並自動更新映像中的網路設定以反映變更。為了將名稱變更推送到DNS 伺服器,將重新啟動虛擬機器中的網路。這將導致短暫的網路連線遺失。
類型:布林型
預設值:n
如果設定此選項,waagent 將從Base64 解碼CustomData。
類型:布林型
預設值:n
如果設定此選項,waagent 將在預配後執行CustomData。
類型:字串型
預設值:6
產生密碼雜湊時crypt 所使用的演算法。
類型:字串型
預設值:10
產生密碼雜湊時使用的隨機鹽的長度。
類型:布林型
預設值:y
如果設定此選項,則平台提供的資源磁碟將由waagent 格式化並掛載,前提是使用者在"ResourceDisk.Filesystem" 中要求的檔案系統類型不是"ntfs"。將在磁碟上提供一個類型為Linux (83) 的單一分割區。請注意,如果可以成功掛載此分割區,則不會將其格式化。
類型:字串型
預設值:ext4
這指定了資源磁碟的檔案系統類型。支援的值因Linux 發行版而異。如果字串為X,則mkfs.X 應該存在於Linux 映像中。 SLES 11 映像通常應該使用'ext3'。 BSD 映像檔應該在此使用'ufs2'。
類型:字串型
預設值:/mnt/resource
這指定了掛載資源磁碟的路徑。
類型:字串型
預設值:None
指定要傳遞給mount -o 指令的磁碟掛載選項。這是一個以逗號分隔的值列表,例如'nodev,nosuid'。有關詳細信息,請參見mount(8)。
類型:布林型
預設值:n
如果設定此選項,則將在資源磁碟上建立一個交換檔案(/swapfile) 並將其新增至系統交換空間。
類型:布林型
預設值:n
如果設定此選項,則交換檔案(/swapfile) 將被掛載為加密的檔案系統(僅在FreeBSD 上支援的標誌)。
類型:整數
預設值:0
交換文件的尺寸(以兆位元組為單位)。
類型:布林型
預設值:n
如果設定此選項,則日誌詳細程度將提高。 waagent 將日誌記錄到/var/log/waagent.log,並利用系統logrotate 功能來輪替日誌。
類型:布林型
預設值:y
如果設定此選項,則代理日誌將定期收集並上傳到安全位置,以提高可支援性。
注意:此功能依賴代理程式的資源使用功能(cgroups);此標誌在不支援的任何發行版上不會生效。
類型:整數
預設值:3600
這配置了收集和上傳日誌的頻率。預設值為每小時一次。
注意:這僅在啟用Logs.Collect 選項時才會生效。
類型:布林型
預設值:n
如果Python 中未編譯SSL 支持,代理將使所有HTTPS 請求失敗。您可以將此選項設為'y',以使代理回退到HTTP,而不是使請求失敗。
注意:允許HTTP 可能會無意中公開安全資料。
類型:布林型
預設值:n
如果設定此選項,代理程式將嘗試安裝並載入與底層硬體上的韌體版本相符的RDMA 核心驅動程式。
類型:布林型
預設值:n
如果設定此選項,代理將在執行OpenSSL 命令時將"OPENSSL_FIPS=1" 發射到環境中。這指示OpenSSL 使用任何已安裝的FIPS 相容程式庫。
請注意,代理本身沒有與FIPS 相關的程式碼。如果沒有安裝FIPS 相容證書,則啟用此選項會導致所有OpenSSL 指令失敗。
類型:整數
預設值:30
代理程式監控DHCP 用戶端的重新啟動,並在發生重新啟動時恢復網路規則。此設定決定了監控重新啟動的頻率(以秒為單位)。
類型:整數
預設值:300
這配置了根設備上的SCSI 逾時時間(以秒為單位)。如果未設置,則使用系統預設值。
類型:整數
預設值:30
在根設備上設定SCSI 逾時時間的頻率(以秒為單位)。如果未設定RootDeviceScsiTimeout,則忽略此設定。
類型:字串型
預設值:None
這可以用來指定用於加密操作的openssl 二進位檔案的替代路徑。
類型:整數
預設值:30
刪除持久網路介面名稱的udev 規則的頻率(75-persistent-net-generator.rules 和/etc/udev/rules.d/70-persistent-net.rules)(以秒為單位)。
類型:整數
預設值:180
此值設定代理用於SSH ClientAliveInterval 配置選項的秒數。
類型:字串型
預設值:/etc/ssh
此選項可用於覆寫SSH 配置目錄的預設位置。
類型:字串型
預設值:None
如果設定此選項,代理將使用此代理伺服器進行HTTP/HTTPS 請求。這些值將覆蓋httpproxy 或httpsproxy 環境變數。最後,HttpProxy.Host 是必要的(如果要使用),HttpProxy.Port 是可選的。
類型:布林型
預設值:y
如果設定此選項,代理程式將嘗試為代理程式本身以及擴充進程設定CPU 和記憶體的cgroups 限制。有關此方面的更多詳細信息,請參見wiki。
類型:字串型
預設值:customscript,runcommand
將從cgroups 限制中排除的擴充清單。這應該是以逗號分隔的。
WALinuxAgent 收集使用情況資料並將其發送給Microsoft,以幫助我們改進產品和服務。收集的數據用於追蹤服務運作狀況,並協助處理Azure 支援請求。收集的資料不包含任何個人識別資訊。閱讀我們的隱私權聲明以了解更多資訊。
WALinuxAgent 目前不支援停用遙測。若要停用遙測收集,必須刪除WALinuxAgent。如果您需要此功能,請在GitHub 上開啟問題並說明您的需求。
我們不會在此倉庫中維護打包訊息,但下面展示了一些範例作為參考。有關正式維護的打包,請參閱下游發行版倉庫。
可以在這裡找到官方Ubuntu WALinuxAgent 軟體包。
執行一次:
安裝所需的軟體包
`
sudo apt-get -y install ubuntu-dev-tools pbuilder python-all debhelper
`
創建pbuilder 環境
`
sudo pbuilder create --debootstrapopts --variant=buildd
`
從下游軟體包庫取得waagent.dsc
若要編譯軟體包,請從最頂層目錄執行以下操作:
建構原始碼包
`
dpkg-buildpackage -S
`
建構軟體包
`
sudo pbuilder build waagent.dsc
`
取得建置的軟體包,通常位於/var/cache/pbuilder/result
以下說明描述如何建構rpm 軟體包。
安裝setuptools
`
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
`
以下命令將建置二進位和來源RPM:
`
python setup.py bdist_rpm
`
此項目已採用Microsoft 開源程式碼行為準則。有關更多信息,請參見行為準則常見問題解答,或聯繫[email protected] 提出任何其他問題或意見。
範例:
Apache-2.0 許可證