自訂巨集
巨集讓您能夠將可變資料(配置設定)新增至自動安裝檔案或安裝後 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 物件包含唯一的 name 和 targetServer 欄位,以及針對該伺服器輸入的任何值。
若要代表伺服器特定設定,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 檔案中自動建立範本物件的實例。這可能是下列其中一個值。
 註 此欄位只能放在範本物件中。  | ||
| category | 必要 | 字串 | 指出如何填入每個設定的值。這可能是下列其中一個值:
 巢狀物件會從其上層物件繼承此欄位的值。 如果category 在上層物件中設定為 static,則在所有巢狀物件中也必須設定為 static。如果 category 在上層物件中設定為 dynamic,在巢狀物件中可以是 static 或 dynamic。  | ||
| choices | 選用的 | 符合 type 屬性的值陣列 | 使用者可在 OS 部署期間從中選取配置設定的靜態值(如字串或整數)陣列(例如 ["enabled","disabled"])。 | ||
| 通用 | 選用的 | 布林值 | 指出此配置綱目是否適用於所有目標伺服器。
 巢狀物件會從其上層物件繼承此欄位的值。 如果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 | 必要 | 布林值 | 指出物件是否為選用。這可能是下列其中一個值。
  | ||
| 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 部署期間,此範本可以代表物件的多個實例。可使用 minElements 和 maxElements 欄位來限制實例數目。 下列範例會使用範本來代表 1-3 部 NTP 伺服器的陣列。 在 OS 部署期間收集使用者輸入的值之後,會為要部署 OS 的每部裝置,建立具有特定內容的配置設定檔案實例。 註 
  | ||
| type | 必要 | 字串 | 物件的資料類型。這可能是下列其中一個值。
  | ||
| 值 | 選用的 | 字串 | 配置設定的單一靜態值。 註 
  | ||
{
   "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"
}