定制宏
可使用宏 向无人参与文件或安装后脚本中添加变量数据(配置设置)。借助 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 对象中均包含一个唯一的 name 和 targetServer 字段,以及为相应服务器输入的任何值。
要表示特定于服务器的设置,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 对象的实例。此项可以是以下某个值。
注 仅可在 template 对象中添加此字段。 | ||
类别 | 必需 | 字符串 | 指示如何填充每个设置的值。此项可以是以下某个值:
嵌套对象从其父对象继承此字段的值。 如果 category 在父对象中设置为 static,则在所有嵌套对象中也必须设置为 static。如果 category 在父对象中设置为 dynamic,则在嵌套对象中可以为 static 或 dynamic。 | ||
选项 | 可选 | 匹配 type 属性的值阵列 | 操作系统部署期间可供用户选择的配置设置静态值阵列(如字符串或整数)(例如["enabled","disabled"])。 | ||
公共 | 可选 | 布尔 | 指示此配置架构是否应用于所有目标服务器。
嵌套对象从其父对象继承此字段的值。 如果 common 在父对象中设置为 true,则在所有嵌套对象中也必须设置为 true。如果 common 在父对象中设置为 false,则在所有嵌套对象中也必须设置为 false。 | ||
内容 | 可选 | 对象数组 | 用于表示架构中的嵌套对象的 pattern。 操作系统部署期间收集了用户输入的数据之后,将使用此字段表示为部署创建的配置设置文件实例中给定模板的最终值。 | ||
默认值 | 可选 | 根据 type 确定 | 默认值。 | ||
description | 可选 | 字符串 | 对象的描述 | ||
标签 | 可选 | 字符串 | 操作系统部署期间用户界面内显示的设置标签 | ||
max | 可选 | Integer | type 设置为 integer 时的最大值。 默认值为 unlimited。 | ||
maxElements | 可选 | Integer | 此对象的数组中的最大条目数量。 | ||
min | 可选 | Integer | type 设置为 integer 时的最小值。 默认值为 0。 | ||
minElements | 可选 | Integer | 此对象的数组中的最小条目数量。 | ||
name | 必需 | 字符串 | 对象的唯一名称。 此名称中只能包含以下字符:字母数字字符(a-z、A-Z 和 0-9)、下划线(_)和短横线(-)。 可在无人参与文件中将 name 作为定制宏引用。引用嵌套的 name 对象时,请使用句点分隔各对象(如 mydeploy.node.locale)。 | ||
optional | 必需 | 布尔 | 指示对象是否可选。此项可以是以下某个值。
| ||
regex | 可选 | 字符串 | 用于验证该值的正则表达式(如 "[\\w\\.]{1,64}$") | ||
script | 可选 | 字符串阵列 | 依赖于此对象中的数据且以逗号分隔的脚本的列表(例如,["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"])。 注 这些脚本必须以安装脚本或定制软件的形式提供给操作系统映像 profile。 | ||
targetServer | 可选 | 字符串 | 充当操作系统部署目标的服务器的 UUID。 如果 common 为 true,则此字段可以为空或 null,而目标服务器则在操作系统部署期间指定。 | ||
template | 可选 | 对象数组 | 用于表示可重用对象的 pattern。 操作系统部署期间,该模板可表示对象的多个实例。可使用 minElements 和 maxElements 字段限制实例数量。 以下示例使用模板表示由 1 - 3 个 NTP 服务器组成的阵列。
操作系统部署期间收集了用户输入的值之后,将使用特定内容为要部署操作系统的每个设备创建一个配置设置文件实例。
注
| ||
类型 | 必需 | 字符串 | 对象的数据类型。此项可以是以下某个值。
| ||
值 | 可选 | 字符串 | 配置设置的一个静态值。 注
|
{
"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"
}