跳至主要内容

自訂巨集

巨集讓您能夠將可變資料(配置設定)新增至自動安裝檔案或安裝後 Script。Lenovo XClarity Administrator 允許您使用 JSON 格式建立自訂配置設定檔案,藉此定義自訂設定。

每一項自訂配置設定的值因 OS 部署期間所指定的使用者輸入而異。

當您匯入自訂配置設定至 XClarity Administrator 時,XClarity Administrator 會驗證 JSON 綱目。如果驗證通過,XClarity Administrator 會針對每個設定產生自訂巨集。

若要將自訂巨集插入自動安裝檔案或安裝後 Script,請使用物件的唯一名稱,以句號分隔巢狀物件,然後用 # 字號括住巨集名稱,例如 #server_settings.server0.locale#

  • 切勿含括最上方的物件名稱。

  • 根據範本建立物件時,名稱後面會附加獨一無二的數字(從 0 開始),例如 server0 和 server1。

  • 在「部署 OS 映像檔」對話框的「自訂設定」標籤下,將滑鼠停留在每一項自訂設定旁的說明圖示 (說明圖示) 上,即可查看每個巨集的名稱。

配置設定

您可以定義自訂配置設定如下:
  • 所有目標伺服器通用,或專屬於特定目標伺服器。

  • 具有靜態(不可配置)值,或是在部署 OS 映像檔 Profile 時輸入的動態(可配置)值。

  • 視範本而定具有可變數目的元素。例如,您可以定義一項配置設定,讓您在部署期間指定 0 – 3 部 NTP 伺服器。

一般設定

在 OS 部署期間,「部署 OS 映像檔」對話框之一般設定標籤上的 UI 元素呈現方式,取決於 content 物件中所代表的物件。這些物件描述所有目標伺服器進行 OS 部署所需的設定和值。

若要代表所有伺服器通用的設定,JSON 檔案必須包含上層物件及含有 "common":true 名稱/值配對的巢狀物件。

下列範例會針對所有伺服器使用相同且可配置(動態)的 NTP 伺服器。
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"template": [{
"autoCreateInstance": true,
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
...,
}
下列範例會使用相同且不可配置(靜態)的安裝後 Script 日誌目錄。
{
"category": "dynamic",
"content": [{
"category": "static",
"common": true,
"description": "Directory location for post-installation script logging.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
},
...,
}
伺服器特定設定

在 OS 部署期間,「部署 OS 映像檔」對話框的伺服器特定設定標籤上的 UI 元素呈現方式,取決於範本的 content 物件中所代表的物件。這些物件描述特定目標伺服器進行 OS 部署所需的設定和值。

在 UI 中收集伺服器特定值之後,會根據 template 物件,為每部目標伺服器建立 JSON 格式的 content 物件。每個 content 物件包含唯一的 nametargetServer 欄位,以及針對該伺服器輸入的任何值。

若要代表伺服器特定設定,JSON 檔案必須包含具有下列內容的上層物件:

  • "category":"dynamic" 名稱/值配對。

  • 含有 "common":false 名稱/值配對的巢狀物件。上層物件的內容中僅支援一個 "common": false 物件。

  • 內嵌內容物件的範本物件。此範本陣列只能包含一個物件。

例如,如果您想為每部目標伺服器定義唯一的 OS 語言環境
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"template": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
...,
}

JSON 規格

下表描述 JSON 規格允許的欄位。

參數必要/選用類型說明
autoCreateInstance選用的布林值指出部署時是否會在 JSON 檔案中自動建立範本物件的實例。這可能是下列其中一個值。
  • true:部署時會在 JSON 檔案中自動建立範本物件的實例。
  • false:(預設值)部署時不會在 JSON 檔案中自動建立範本物件的實例
此欄位只能放在範本物件中。
category必要字串指出如何填入每個設定的值。這可能是下列其中一個值:
  • dynamic。此值是由使用者在執行時期輸入。Lenovo XClarity Administrator 會在 OS 部署期間提示您輸入此值。

  • predefined。此值是由 Lenovo XClarity Administrator 預設。

  • static。此值是在綱目中指定,無法在執行時期變更。

巢狀物件會從其上層物件繼承此欄位的值。

如果category 在上層物件中設定為 static,則在所有巢狀物件中也必須設定為 static。如果 category 在上層物件中設定為 dynamic,在巢狀物件中可以是 staticdynamic

choices選用的符合 type 屬性的值陣列使用者可在 OS 部署期間從中選取配置設定的靜態值(如字串或整數)陣列(例如 ["enabled","disabled"])。
通用選用的布林值指出此配置綱目是否適用於所有目標伺服器。
  • true:此物件適用於所有目標伺服器。

  • false:(預設值)此物件適用於特定目標伺服器。

巢狀物件會從其上層物件繼承此欄位的值。

如果common 在上層物件中設定為 true,則在所有巢狀物件中也必須設定為 true。如果 common 在上層物件中設定為 false,在所有巢狀物件中就必須設定為 false

content選用的物件陣列代表綱目中巢狀物件的 Pattern。

在 OS 部署期間收集使用者輸入的資料之後,此欄位可用來代表針對部署所建立之配置設定檔案實例中指定範例的最後值。

預設值選用的type 而有所不同預設值。
說明選用的字串物件說明
標籤選用的字串在 OS 部署期間所顯示之使用者介面中的設定標籤
max選用的整數type 設定為整數時的最大值。

預設值為無限制。

maxElements選用的整數此物件陣列中的項目數上限。
min選用的整數type 設定為整數時的最小值。

預設值為 0。

minElements選用的整數此物件陣列中的項目數下限。
name必要字串物件的唯一名稱。

此名稱只能包含下列字元:英數字元(a-z、A-Z 和 0-9)、底線 (_) 和虛線 (-)。

您可以參照 name 做為自動安裝檔案中的自訂巨集。參照巢狀 name 物件時,請使用句號分隔每個物件(例如 mydeploy.node.locale)。

optional必要布林值指出物件是否為選用。這可能是下列其中一個值。
  • true:此欄位是選用的。

  • false:此欄位是必要的。

regex選用的字串用於驗證值的規則運算式(例如 "[\\w\\.]{1,64}$"
script選用的字串陣列相依於此物件中資料的 Script 清單,以逗號分隔(例如 ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"])。
OS 映像檔 Profile 必須可以使用這些 Script 做為安裝 Script 或自訂軟體。
targetServer選用的字串OS 部署之目標伺服器的 UUID。

如果 common 為 true,此欄位可為空的或空值,而且會在 OS 部署期間指定目標伺服器。

template選用的物件陣列代表可重複使用物件的 Pattern。

在 OS 部署期間,此範本可以代表物件的多個實例。可使用 minElementsmaxElements 欄位來限制實例數目。

下列範例會使用範本來代表 1-3 部 NTP 伺服器的陣列。
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"template": [{
"autoCreateInstance": true,
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
在 OS 部署期間收集使用者輸入的值之後,會為要部署 OS 的每部裝置,建立具有特定內容的配置設定檔案實例。
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"content": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver0",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string",
"value": "192.0.2.1"
}],
"template": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
}
  • 伺服器特定物件的頂層必須有範本 (common=false)。

  • 如果 categorystatic,則會忽略 template 欄位。

type必要字串物件的資料類型。這可能是下列其中一個值。
  • array

  • assoc_array

  • boolean

  • integer

  • password

  • string

  • user_data

選用的字串配置設定的單一靜態值。
  • 如果設定 default,此欄位可為空的或空值;否則,請指定符合 type 的值。

  • 如果 typepassword,請指定非加密字串。

  • 如果 typeassoc_arrayarray,您也必須指定空的 content 欄位。

  • 如果 typeuser_data,請指定有效的 JSON 格式 value

  • 如果設定 regex,則會使用指定的規則運算式來驗證此值。

下列配置設定範例會定義可新增至自訂 Profile 之 SLES 部署的語言環境設定。
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"template": [{
"autoCreateInstance": true,
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"template": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
{
"category": "static",
"common": true,
"description": "Directory for post-installation script logging.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
}],
"description": "Custom configuration file for deployment of custom locale, NTP server,
and directory for post-installation script logs.",
"label": "My Custom Deployment",
"name": "myCustomDeploy",
"optional": false,
"type": "array"
}
下列範例是在部署期間定義使用者輸入的值後,於主機系統上所建立的配置設定檔案實例。
{
"category": "dynamic",
"content": [{
"category": "dynamic",
"common": false,
"name": "server-settings",
"optional": false,
"content": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server0",
"optional": false,
"type": "assoc_array",
"targetServer": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server1",
"optional": false,
"type": "assoc_array",
"targetServer": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
}],
"template": [{
"category": "dynamic",
"common": false,
"content": [{
"category": "dynamic",
"choices": ["en_US", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the OS language locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "OS Locale",
"name": "locale",
"optional": false,
"type": "string",
"value": "en_US"
},
{
"category": "dynamic",
"choices": ["english-us", "pt_BR", "ja_JP"],
"common": false,
"description": "This parameter defines the keyboard locale to use with this deployment.
English, Brazilian Portuguese, and Japanese are supported.",
"label": "Keyboard Locale",
"name": "keyboardLocale",
"optional": false,
"type": "string",
"value": "english-us"
}],
"name": "server",
"optional": false,
"type": "assoc_array"
}],
"type": "assoc_array"
},
{
"category": "dynamic",
"common": true,
"description": "NTP Servers",
"label": "NTP Servers",
"maxElements": 3,
"minElements": 0,
"name": "common-ntpservers",
"optional": true,
"content": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver0,
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string",
"value": "192.0.2.1"
},
{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver1",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string",
"value": "192.0.2.2"
}],
"template": [{
"category": "dynamic",
"common": true,
"description": "A NTP Server",
"label": "NTP Server",
"name": "ntpserver",
"optional": true,
"regex": "[\\w\\.]{1,64}$",
"type": "string"
}],
"type": "array"
},
{
"category": "static",
"common": true,
"description": "Directory for post-installation script logs.",
"name": "logpath",
"optional": false,
"type": "string",
"value": "/tmp/mylogger.log"
}],
"description": "Custom configuration file for deployment of custom locale, NTP server,
and directory for post-installation script logs.",
"label": "My Custom Deployment",
"name": "myCustomDeploy",
"optional": false,
"type": "array"
}