Пользовательские макросы
Макросы предоставляют возможность добавить переменные данные (параметры конфигурации) в файл автоматической установки или послеустановочный скрипт. Lenovo XClarity Administrator позволяет определять собственные пользовательские параметры путем создания пользовательского файла параметров конфигурации в формате JSON.
Значение каждого пользовательского параметра конфигурации отличается в зависимости от вводимых пользователем данных, которые указываются во время развертывания ОС.
При импорте пользовательских параметров конфигурации в XClarity Administrator программное обеспечение XClarity Administrator проверяет схему JSON. Если проверка завершается успешно, программное обеспечение XClarity Administrator создает для каждого параметра пользовательские макросы.
Чтобы добавить пользовательские макросы в файл автоматической установки или послеустановочный скрипт, используйте уникальное имя объекта, разделите вложенные объекты с помощью точки и заключите имя макроса в символы «решетки» (#), например #server_settings.server0.locale#.
Не включайте имя объекта верхнего уровня.
При создании объекта с помощью шаблона к имени добавляется уникальный номер, начиная с 0 (например, server0 и server1).
Имя каждого макроса отображается в диалоговом окне «Развертывание образов OC» на вкладках «Пользовательские параметры» при наведении указателя мыши на значок Справка () рядом с каждым пользовательским параметром.
Параметры конфигурации
Общие для всех целевых серверов или уникальные для конкретного целевого сервера.
Со статическими (ненастраиваемыми) или динамическими (настраиваемыми) значениями, введенными при развертывании профиля образа ОС.
С различным числом элементов в зависимости от шаблона. Например, можно определить параметр конфигурации, который позволит задать от 0 до 3 серверов NTP во время развертывания.
- Общие параметры
Во время развертывания ОС элементы пользовательского интерфейса на вкладках Общие параметры диалогового окна «Развертывание образа ОС» отображаются на основе объектов, представленных в объекте 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"
},
...,
}- Параметры для конкретного сервера
Во время развертывания ОС элементы пользовательского интерфейса на вкладке Параметры для конкретного сервера диалогового окна «Развертывание образа ОС» отображаются на основе объектов, представленных в объектах content шаблона. Эти объекты описывают параметры и значения, которые требуются конкретному целевому серверу для развертывания ОС.
После сбора значений для конкретного сервера в пользовательском интерфейсе в JSON для каждого целевого сервера создается объект content на основе объекта template. Каждый объект content содержит уникальные поля name и targetServer, а также любые значения, которые были введены для этого сервера.
Для представления параметров для конкретного сервера файл JSON должен содержать родительский объект, в который входят следующие элементы:
Пара «имя–значение» "category":"dynamic".
Вложенный объект, содержащий пару «имя–значение» "common":false. Только один объект "common": false поддерживается в содержимом родительского объекта.
Объект template со встроенным объектом content. Этот массив шаблонов может содержать только один объект.
Например, для определения уникального языка ОС для каждого целевого сервера{
"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 | Массив статических значений (строк или целых чисел) для настройки конфигурации. Эти значения можно выбирать при развертывании ОС (например, ["enabled","disabled"]). | ||
common | Необязательное | Логическое значение | Указывает, относится ли эта схема настройки ко всем целевым серверам.
Вложенные объекты наследуют значение этого поля от своего родительского объекта. Если в родительском объекте для поля common задано значение true, во всех вложенных объектах для него также должно быть задано значение true. Если в родительском объекте для поля common задано значение false, во всех вложенных объектах для него также должно быть задано значение false. | ||
content | Необязательное | Массив объектов | Шаблон, представляющий вложенные объекты в схеме. После сбора введенных пользователем данных во время развертывания ОС это поле используется для представления окончательных значений для заданного шаблона в экземпляре файла параметров конфигурации, который создан для развертывания. | ||
default | Необязательное | Изменяется в зависимости от значения поля type | Значение по умолчанию. | ||
description | Необязательное | Строка | Описание объекта | ||
label | Необязательное | Строка | Метка для параметра в пользовательском интерфейсе, который отображается при развертывании ОС. | ||
max | Необязательное | Целое число | Максимальное значение, когда для поля type задано значение integer. Значение по умолчанию — unlimited. | ||
maxElements | Необязательное | Целое число | Максимальное количество записей в массиве для этого объекта. | ||
min | Необязательное | Целое число | Минимальное значение, когда для поля type задано значение integer. Значение по умолчанию — 0. | ||
minElements | Необязательное | Целое число | Минимальное число записей в массиве для этого объекта. | ||
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"]). Прим. Скрипты должны быть доступны профилю образа ОС в качестве скриптов установки или специального программного обеспечения. | ||
targetServer | Необязательное | Строка | UUID сервера, являющегося целевым объектом развертывания ОС. Если поле common имеет значение true, это поле может быть пустым или иметь значение null, а целевой сервер указывается во время развертывания ОС. | ||
template | Необязательное | Массив объектов | Шаблон, представляющий многократно используемые объекты. Во время развертывания ОС этот шаблон может представлять несколько экземпляров объекта. Для ограничения количества экземпляров можно использовать поля minElements и maxElements. В следующем примере используется шаблон для представления массива, состоящего из 1–3 серверов NTP.
После сбора во время развертывания ОС введенных пользователем значений создается экземпляр файла параметров конфигурации с конкретным содержимым для каждого устройства, на котором должна быть развернута ОС.
Прим.
| ||
type | Обязательное | Строка | Тип данных объекта. Может иметь одно из следующих значений.
| ||
value | Необязательное | Строка | Единственное статическое значение для настройки конфигурации. Прим.
|
{
"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"
}