跳到主要内容

定制宏

可使用 向无人参与文件或安装后脚本中添加变量数据(配置设置)。借助 Lenovo XClarity Administrator,您可以使用 JSON 格式通过创建定制配置设置文件来定义自己的定制设置。

各项定制配置设置的值因操作系统部署期间指定的用户输入而异。

将定制配置设置导入到 XClarity Administrator 时,XClarity Administrator 将验证该 JSON 架构。如果验证通过,XClarity Administrator 将为每个设置生成定制宏。

要向无人参与文件或安装后脚本中注入定制宏,请使用唯一的对象名称、用句点分隔嵌套对象并在宏名称前后添加井号(#),例如,#server_settings.server0.locale#

  • 请勿在其中包括最顶端的对象名称。

  • 使用模板创建对象时,会在对象名称中附加一个唯一编号(从 0 开始)(例如,server0 和 server1)。

  • 可通过将鼠标悬停到每项定制设置旁边的帮助图标(“帮助”图标)来查看“部署操作系统映像”对话框中的各个宏的名称。

配置设置

可定义符合以下条件的定制配置设置:
  • 对所有目标服务器通用或只适用于特定目标服务器。

  • 具有静态(不可配置)值或具有部署操作系统映像 profile 时输入的动态(可配置)值。

  • 元素数量因模板而异。例如,您可以在部署期间定义一项配置设置,以指定 0 - 3 个 NTP 服务器。

公共设置

操作系统部署期间,“部署操作系统映像”对话框中公共设置选项卡上的 UI 元素根据 content 对象中的对象显示。这些对象描述所有目标服务器均需要才能进行操作系统部署的设置和值。

要表示对所有服务器通用的设置,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"
},
...,
}
以下示例使用同一个不可配置(静态)的安装后脚本日志目录。
{
"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"
},
...,
}
特定于服务器的设置

操作系统部署期间,“部署操作系统映像”对话框中特定于服务器的设置选项卡上的 UI 元素将根据模板的 content 对象中呈现的对象显示。这些对象描述特定目标服务器需要才能进行操作系统部署的设置和值。

在该 UI 中收集了特定于服务器的值之后,将根据 template 对象在 JSON 中为每个目标服务器创建一个 content 对象。每个 content 对象中均包含一个唯一的 nametargetServer 字段,以及为相应服务器输入的任何值。

要表示特定于服务器的设置,JSON 文件中必须包含带以下内容的父对象:

  • "category":"dynamic" 名称/值对。

  • 一个包含 "common":false 名称/值对的嵌套对象。父对象内容仅支持一个 "common": false 对象。

  • 一个带嵌入的 content 对象的 template 对象。此模板阵列仅可包含一个对象。

例如,如果要为每个目标服务器定义唯一操作系统区域设置
{
"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 文件中创建 template 对象的实例。此项可以是以下某个值。
  • true。部署时自动在 JSON 文件中创建 template 对象的实例。
  • false。(默认)部署时 自动在 JSON 文件中创建 template 对象的实例。
仅可在 template 对象中添加此字段。
类别必需字符串指示如何填充每个设置的值。此项可以是以下某个值:
  • dynamic。该值由用户在运行时输入。Lenovo XClarity Administrator 将在操作系统部署期间提示用户提供该值。

  • predefined。该值由 Lenovo XClarity Administrator 预设。

  • static。该值在架构中指定,在运行时不会改变。

嵌套对象从其父对象继承此字段的值。

如果 category 在父对象中设置为 static,则在所有嵌套对象中也必须设置为 static。如果 category 在父对象中设置为 dynamic,则在嵌套对象中可以为 staticdynamic

选项可选匹配 type 属性的值阵列操作系统部署期间可供用户选择的配置设置静态值阵列(如字符串或整数)(例如["enabled","disabled"])。
公共可选布尔指示此配置架构是否应用于所有目标服务器。
  • true。此对象应用于所有目标服务器。

  • false。(默认)此对象应用于特定目标服务器。

嵌套对象从其父对象继承此字段的值。

如果 common 在父对象中设置为 true,则在所有嵌套对象中也必须设置为 true。如果 common 在父对象中设置为 false,则在所有嵌套对象中也必须设置为 false

内容可选对象数组用于表示架构中的嵌套对象的 pattern。

操作系统部署期间收集了用户输入的数据之后,将使用此字段表示为部署创建的配置设置文件实例中给定模板的最终值。

默认值可选根据 type 确定默认值。
description可选字符串对象的描述
标签可选字符串操作系统部署期间用户界面内显示的设置标签
max可选Integertype 设置为 integer 时的最大值。

默认值为 unlimited。

maxElements可选Integer此对象的数组中的最大条目数量。
min可选Integertype 设置为 integer 时的最小值。

默认值为 0。

minElements可选Integer此对象的数组中的最小条目数量。
name必需字符串对象的唯一名称。

此名称中只能包含以下字符:字母数字字符(a-z、A-Z 和 0-9)、下划线(_)和短横线(-)。

可在无人参与文件中将 name 作为定制宏引用。引用嵌套的 name 对象时,请使用句点分隔各对象(如 mydeploy.node.locale)。

optional必需布尔指示对象是否可选。此项可以是以下某个值。
  • true。此字段为可选字段

  • false。此字段为必填字段。

regex可选字符串用于验证该值的正则表达式(如 "[\\w\\.]{1,64}$"
script可选字符串阵列依赖于此对象中的数据且以逗号分隔的脚本的列表(例如,["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"])。
这些脚本必须以安装脚本或定制软件的形式提供给操作系统映像 profile。
targetServer可选字符串充当操作系统部署目标的服务器的 UUID。

如果 common 为 true,则此字段可以为空或 null,而目标服务器则在操作系统部署期间指定。

template可选对象数组用于表示可重用对象的 pattern。

操作系统部署期间,该模板可表示对象的多个实例。可使用 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"
},
操作系统部署期间收集了用户输入的值之后,将使用特定内容为要部署操作系统的每个设备创建一个配置设置文件实例。
{
"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 字段。

类型必需字符串对象的数据类型。此项可以是以下某个值。
  • 阵列

  • assoc_array

  • boolean

  • integer

  • 密码

  • string

  • user_data

可选字符串配置设置的一个静态值。
  • 如果设置 default,则该字段可以为空或 null,否则请指定与 type 匹配的值。

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

  • 如果 typeassoc_arrayarray,还必须指定空的 content 字段。

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

  • 如果设置 regex,则使用指定的正则表达式验证该值。

以下示例配置设置为 SLES 部署定义可添加到定制 profile 的区域设置。
{
"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"
}