端點組態合併
在這個部分中:
關於端點組態合併
「端點組態合併」會使用 應用程式控制 代理程式將儲存在同一個端點上的多個 AAMP 組態檔案合併為單一組態。例如群組、使用者、自訂等屬性和其他規則類型,會與每個組態的應用程式和原則程式庫一併新增至合併的組態。
您可以將個別組態新增至端點上的目錄,並在資訊清單檔案中指定要合併的組態以完成合併。「代理程式」會監控合併目錄,並在資訊清單檔案新增至目錄時自動合併組態。
「端點組態合併」可讓不同區域的業務在特殊的組態區中各自運作,然後會進行合併以建立單一組態。
「端點組態合併」不支援 System Center Configuration Manager 整合。
合併組件
基本元件
每個合併都必須有基本組態 - 這是合併中的第一個組態,同時也是用來新增其他組態的位置。合併的組態會擷取全域屬性,例如訊息設定、稽核,以及基本組態中的任何預設設定。
因此必須先在基本組態中定義未合併的設定。
依預設,基本組態會設為 AAMP 檔案,也就是將即時組態儲存至端點時建立的檔案:
%PROGRAMDATA%\AppSense\Application Manager\Configuration\configuration.aamp
不過,合併中的任何組態皆可設為基本組態。
只有最新版本的 AAMP 檔案可包含在合併中。
元件組態
合併的組態是由基本組態和一個或多個元件組態所組成。元件組態就是在合併期間新增至基本組態中的 AAMP 檔案。作為合併的一部分,元件組態必須儲存在 MergeConfigs 目錄中。
MergeConfigs 目錄
此目錄是儲存要合併之元件組態的位置,也是在偵測有效資訊清單時觸發合併的目錄。
當您在端點上啟動 AMAgentService 時會建立 MergeConfigs 目錄:
%PROGRAMDATA%\AppSense\Application Manager\MergeConfigs
此為受保護的目錄,因此只有管理員可寫入該目錄。這可確保一般使用者不會影響合併組態
ManifestGen Tool
應用程式控制 包含可協助組態和片段合併的指令列工具。ManifestGen 工具可建立用來定義及觸發組態合併的 XML 資訊清單檔案。XML 檔案包含要合併之 AAMP 檔案的詳細資訊,並指示要使用系統 configuration.aamp 或元件組態作為合併中的基底。
若要讓工具的使用更為容易,可將其位置添加至進階系統屬性 > 環境變數 > 路徑:
%PROGRAMFILES%\AppSense\Application Manager\Console
資訊清單
資訊清單是一種 XML 檔案,其中包含要合併之組態的詳細資訊,並指示是否包含基本組態。資訊清單會在 MergeConfigs 目錄中偵測到時開始合併 - 當代理程式偵測到時合併開始。
資訊清單是使用 ManifestGen 指令列工具所建立。
下表會顯示組成資訊清單 XML 檔案的屬性和標記:
屬性/標記 | 說明 |
---|---|
MergeManifest
|
組態的根節點。 |
MergeFiles
|
要包含在合併中的 AAMP 檔案清單容器標記。 |
FileEntry Name
|
識別要包含在合併內的組態。檔案必須位於 MergeConfigs 目錄才能包含在合併中 |
UseSystemBase
|
如果不存在於資訊清單中,UseSystemBase 依預設會設為 "true" 。它可設為 "true" 或 "false",並指示要在合併中包含或排除預設 Configuration.aamp。這項即時 Configuration.aamp 檔案可在 %ProgramData%\AppSense\Application Manager\Configuration\configuration.aamp 中找到。 如果設為 "true",則當部署資訊清單時端點上必須存在基本組態,否則合併將會失敗。 如果設為 "false",MergeFiles 清單中的第一個組態會作為基本組態使用,除非已由 BaseConfig 屬性另行定義。 |
WaitForConfigs
|
判斷在 MergeConfigs 目錄中偵測到資訊清單 .xml,且並非所有具名組態皆存在時的行為。可設定為: True - 此為其不存在於資訊清單時的預設設定。此合併會無限期暫止,直到資訊清單中參照的所有組態皆存在,然後完成合併。如果您要使用組態來部署資訊清單且不確定它們新增至目錄中的順序,這將會是最理想的方式。例如,當您使用 MSI 時。 False - 如果在 MergeConfigs 目錄中偵測到資訊清單,且其參照的組態不存在時,合併將會失敗。 如果您使用如 MSI 等安裝程式將組態和資訊清單推送至端點,建議您可以將此設為 "true",因為您不能保證新增組態和資訊清單的順序為何。 使用 SystemBase Configuration.aamp 檔案時,此方法並不適用。如果已觸發資訊清單合併且 Configuration.aamp 不存在,合併將會失敗 - 不會等待基本組態 |
總和檢查碼 (Optional) |
MD5 總和檢查碼對於 AAMP 檔案來說是獨一無二的。當包含在資訊清單中時,MergeConfigs 資料夾中的 AAMP 檔案必須有相同的總和檢查碼包含在合併中。 總和檢查碼並未參考基本組態。 |
建立資訊清單
-
儲存要在 MergeConfigs 目錄中合併的組態:
%PROGRAMDATA%\AppSense\Application Manager\MergeConfigs
- 開啟指令列介面。
- 輸入 cd %programdata%\AppSense\Application Manager 以變更目錄。
- 輸入 manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp"。
如果您在 MergeConfigs 資料夾中執行 ManifestGen,一旦建立資訊清單,代理程式即會將它提取並立即啟動合併。
若成功,merge_manifest.xml 檔案便會在下列位置建立:
%PROGRAMDATA%\AppSense\Application Manager
資訊清單現在可用來觸發合併並建立組態。
如果 merge_manifest.xml 已存在於輸出目錄,工具會失敗且不會建立新的資訊清單 - 不會覆寫目前的資訊清單。
其他指令
尾碼 | 說明與用途 |
---|---|
-o
|
輸出檔案 - 例如,指定產生合併組態的位置, manifestGen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -o C:\Configs 建立一個資訊清單,它將會在 C 磁碟機的 Configs 資料夾中建立一個合併組態。 |
-b
|
基本組態 - 識別基本組態並排除系統基本組態。例如, manifestGen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -b Config1.aamp 建立一個資訊清單,它將會建立一個合併組態且 Config1.aamp 會設為基本組態。 |
-nc
|
無總和檢查碼項目 - 依預設,列於資訊清單中的每個組態都會有一個 MD5 總和檢查碼,允許組態的唯一識別。若資訊清單與組態兩者的總和檢查碼不符,合併將會失敗。使用 -nc 尾碼以及 ManifestGen 工具將不會在資訊清單中列出總和檢查碼,意即若組態檔案名稱正確,則無論總和檢查碼值為何,合併都會成功。例如: manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -nc |
-nw
|
資訊清單新增至 MergeConfigs 目錄時的預設行為就是會無限期等候,直到資訊清單中的所有組態皆存在,然後執行合併。不過,當 baseconfig 和層遺失時合併不會等候且將會立即失敗。 使用 -nw 尾碼,當資訊清單新增至 MergeConfigs 目錄時列出的組態不存在,合併將會失敗。例如: manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -nw 當資訊清單新增至 MergeConfigs 目錄時,若資訊清單列出五個組態但只存在四個,合併將會失敗。 如果您使用如 MSI 等安裝程式將組態和資訊清單推送至端點,建議您不要使用尾碼,因為您不能保證新增組態和資訊清單時的順序為何。 |
編輯資訊清單
可編輯已建立的資訊清單檔案以變更屬性,例如基本組態以及合併的執行順序。
雖然您可以使用文字編輯器編輯資訊清單,但還是建議您使用 ManifestGen 工具,因為它能確保 merge_manifest.xml 檔案的格式正確無誤。例如,如果檔案名稱中有 "&" 符號,ManifestGen 工具會將其逸出以確認其為有效的 XML 檔案。
例如,命令:
manifestgen "C:\ProgramData\AppSense\Application Manager\MergeConfigs\*.aamp" -b mergeconfigs\config3.aamp
建立一個不包含系統基本組態的資訊清單,且 config3.aamp 會設為基本組態。
<MergeManifest UseSystemBase="false" WaitForConfigs="true">
<MergeFiles>
<FileEntry Name="config3.aamp" BaseConfig="true" Checksum="e899e0f9a5afee4eb502072a61c2eo" />
<FileEntry Name="config2.aamp" Checksum="e899e0f9a5afef5e4eb502072ac2e0" />
<FileEntry Name="config1.aamp" Checksum="b50576a6d743cf361c37b64bcaca75" />
</MergeFiles>
</MergeManifest>
若要編輯資訊清單,請在文字編輯器中開啟資訊清單,然後在進行必要的變更後儲存檔案。
在此範例中,UseSystemBase 會設為 "true",且 BaseConfig-"true" 指令會從 config3.aamp 中移除。合併的順序亦已變更。
<MergeManifest UseSystemBase="true" WaitForConfigs="true">
<MergeFiles>
<FileEntry Name="config1.aamp" Checksum="b50576a6d743cf361c37b64bcaca75" />
<FileEntry Name="config2.aamp" Checksum="e899e0f9a5afef5e4eb502072ac2e0" />
<FileEntry Name="config3.aamp" Checksum="e899e0f9a5afee4eb502072a61c2eo" />
</MergeFiles>
</MergeManifest>
當合併時,系統基本 configuration.aamp 檔案會包含在合併中作為基本組態,並反轉元件組態合併至基本組態時的順序。
將組態設為 BaseConfig="true" 且相同資訊清單中的 UseSystemBase="true" 將會導致衝突,且合併將會失敗。
空白資訊清單
將空白資訊清單新增至 MergeConfigs 目錄,會自動合併該目錄中的所有 AAMP 組態。它會以字母順序合併所有組態,並將基底設為以下位置中的 configuration.aamp:
%ProgramData%\AppSense\Application Manager\Configuration
若找不到此 AAMP,則合併將會失敗。
若要建立空白資訊清單,請在文字編輯器中開啟新檔案,建立一個零位元組的檔案並另存為 merge_manifest.xml。
您也可以使用儘管非全空但不包含待合併之 AAMP 檔案詳細資訊的資訊清單,完成相同的合併:
<MergeManifest UseSystemBase="true" WaitForConfigs="true"
</MergeManifest>
這會造成與空白資訊清單相同的結果,不同的是您可以使用 UseSystemBase 屬性。如果您將其設為 "false",合併將會使用 MergeConfigs 目錄中按字母順序排列在第一的組態作為基底。
合併組態
一旦您建立了資訊清單且端點上已有待合併的組態,您就可以觸發合併並建立新組態。
在 MergeConfigs 目錄中偵測到 merge_manifest.xml (其中應包含您要合併的所有組態) 時將會觸發合併。
當資訊清單列出不存在於 MergeConfigs 目錄中的組態時,合併將會延後,直到所有組態皆存在為止。
當使用 -nw 標記時,若不存在所有組態,可建立的資訊清單將造成合併失敗
成功合併
如果資訊清單正確無誤,且列出的組態存在於 MergeConfigs 目錄中,則會建立 merged_configuration.aamp 並在端點上作為即時組態使用。
除了新組態 (merged_configuration.aamp) 以外,系統會將成功資訊清單 (last_merge_manifest.xml) 的副本新增至資料夾,以提供合併的紀錄與資訊清單的備份。當合併完成時會刪除原始的 merge_manifest.xml 檔案。
configuration.aamp 檔案在合併期間不會變更且不再供代理程式使用,除非已進行更新或 Merged_Configuration.aamp 不存在。
失敗的合併
當合併期間發生錯誤時,合併將會失敗且不會建立新組態檔案。合併失敗的情況:
- 在資訊清單中指定的總和檢查碼與實際組態不相符,且 WaitForConfigs 已設為為 "false"。
- 資訊清單包含 -nw 指令,且資訊清單中列出的一個或多個組態在新增時不存在於 MergeConfigs 目錄中。
- 進行合併之兩個組態中的易記名稱相同。
- UseSystemBase 已設為 "true",且在觸發合併時不存在基本 Configuration.aamp。
- 資訊清單無效。
- 一個或多個組態損毀。
若合併不成功,系統會刪除 merge_manifest.xml 檔案,並將失敗的資訊清單 (failed_merge_manifest.xml) 的副本新增至目錄中。
您可以使用 Windows事件檢視器 (選取 Windows 記錄檔 > 應用程式) 查看與合併錯誤有關的詳細資訊。事件將會顯示失敗的原因以及導致合併失敗的組態。
合併行為
下表會列出合併的組態屬性,並提供與其行為有關的說明。
組態屬性 | 已合併? | 行為 |
---|---|---|
規則 (群組、使用者、已編寫指令碼、自訂、裝置和處理序) | Yes | 合併的組態會包含來自每個個別組態的所有「規則」。如果會影響相同應用程式的兩個規則存在於相同觸發器中,則會同時執行。不會合併個別規則的內容。 |
應用程式群組 | Yes | 合併的組態將包含組態層的所有「應用程式群組」。「應用程式群組」對於非基本組態來說仍是唯一的,並且會全部合併至最後合併的組態。 |
URM 原則 | Yes | 合併的組態將包含組態層的所有「URM 原則」。「URM 原則」對於非基本組態來說仍是唯一的,並且會全部合併至最後合併的組態。 |
稽核 | 否 | 基底中的事件會在合併的組態中使用,並忽略元件組態中的事件。 |
工程金鑰 | 否 | 合併的組態會繼承其在基本組態中的「工程金鑰」。將捨棄合併之中任何組件組態的設定。因此,您在合併組態中需要的「工程金鑰」必須新增至基本組態。 |
預設選項 | 否 | 合併的組態會繼承其在基本組態中的「預設選項」,例如「啟用使用者權限管理」。將捨棄合併之中任何組件組態的設定。因此,您在合併組態中需要的「預設」金鑰必須新增至基本組態。 |
訊息設定 | 否 | 合併的組態會繼承其在基本組態中的「設定」,例如當使用者在自行提高某個項目的權限時看到的訊息。將捨棄合併之中任何組件組態的設定。 |
封存設定 | 否 | 合併的組態會繼承其在基本組態中的「封存設定」,例如「啟用封存」。將捨棄合併之中任何組件組態的設定。 |
權限搜尋模式組態 | 否 | 合併的組態會繼承其在基本組態中的「權限搜尋模式設定」,例如隱藏的應用程式和檔案。將捨棄合併之中任何組件組態的設定。 |
URL 重新導向設定 | 否 | 合併的組態會繼承其在基本組態中的任何「URL 設定」,例如設定的連線類型或 IP 範圍。將捨棄合併之中任何組件組態的設定。 |
稽核事件篩選設定 | 否 | 合併的組態會繼承其在基本組態中的「稽核事件篩選設定」。將捨棄合併之中任何組件組態的設定。 |
即時組態規則
在端點上開啟或儲存即時組態時,會將其參照:
%ProgramData%\AppSense\Application Manager\Configuration\configuration.aamp
若要允許組態合併,即時組態也可參照:
%ProgramData%\AppSense\Application Manager\Configuration\Merged_Configuration.aamp
代理程式會針對新組態監控 %ProgramData%\AppSense\Application Manager\Configuration 目錄。當偵測到變更時,代理程式會使用以下優先順序載入新組態:
- Merged_Configuration.aamp
- configuration.aamp
若 Merged_Configuration.aamp 存在於目錄中,它將會是即時組態。若遭到移除,代理程式會使用記憶體內部的版本 - 它不會切換至 configuration.aamp 檔案,直到重新啟動代理程式為止。
即時組態更新行為
BaseConfigMergeBehavior 工程金鑰可讓您定義當 管理中心 或其他部署方式將 Configuration.aamp 檔案推送至端點時會如何影響即時組態。
在定義 BaseConfigMergeBehavior 工程金鑰時,您可以修改即時組態行為:
- 重新合併 - 當代理程式在端點上偵測到組態時,系統會觸發以 last_merge_manifest.xml 為基礎的合併並包含新的 configuration.aamp。合併會建立新的 Merged_Configuration.aamp 以取代目前的即時組態。last_merge_manifest.xml 必須存在,否則合併將會失敗。
- 取代 - 當代理程式在端點上偵測到組態時,它會取代 Merged_Configuration.aamp 作為即時組態。在成功部署新的 Configuration.aamp 之後,會將 Merged_Configuration.aamp 從目錄中刪除。
端點組態合併稽核事件
「組態端點合併」的新稽核事件已新增至 應用程式控制。在 Windows 事件檢視器中檢視時 (選取 Windows 記錄檔 > 應用程式),事件會提供其他詳細資訊,例如造成合併失敗的原因