Перейти к основному содержимому

Пользовательские макросы

Макросы предоставляют возможность добавить переменные данные (параметры конфигурации) в файл автоматической установки или послеустановочный скрипт. 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 во время развертывания. Может иметь одно из следующих значений.
  • true. Экземпляр объекта шаблона создается автоматически в файле JSON во время развертывания.
  • false. (По умолчанию) Экземпляр объекта шаблона автоматически не создается в файле JSON во время развертывания.
Прим.
Это поле можно разместить только в объекте шаблона.
categoryОбязательноеСтрокаУказывает, как задается значение каждого параметра. Может иметь одно из следующих значений:
  • dynamic. Значение вводится пользователем во время выполнения. Lenovo XClarity Administrator запрашивает это значение во время развертывания ОС.

  • predefined. Значение устанавливается программным обеспечением Lenovo XClarity Administrator.

  • static. Значение указывается в схеме и во время выполнения не изменяется.

Вложенные объекты наследуют значение этого поля от своего родительского объекта.

Если в родительском объекте для поля category задано значение static, во всех вложенных объектах для него также должно быть задано значение static. Если в родительском объекте для поля category задано значение dynamic, во вложенных объектах это поле может иметь значение static или dynamic.

choicesНеобязательноеМассив значений, соответствующих свойству typeМассив статических значений (строк или целых чисел) для настройки конфигурации. Эти значения можно выбирать при развертывании ОС (например, ["enabled","disabled"]).
commonНеобязательноеЛогическое значениеУказывает, относится ли эта схема настройки ко всем целевым серверам.
  • true. Объект относится ко всем целевым серверам.

  • false. (По умолчанию) Этот объект применяется для определенного целевого сервера.

Вложенные объекты наследуют значение этого поля от своего родительского объекта.

Если в родительском объекте для поля 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ОбязательноеЛогическое значениеУказывает, является ли объект необязательным. Может иметь одно из следующих значений.
  • true. Поле является необязательным.

  • false. Поле является обязательным.

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.
{
"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).

  • Если поле category имеет значение static, поле template игнорируется.

typeОбязательноеСтрокаТип данных объекта. Может иметь одно из следующих значений.
  • array

  • assoc_array

  • boolean

  • integer

  • password

  • string

  • user_data

valueНеобязательноеСтрокаЕдинственное статическое значение для настройки конфигурации.
Прим.
  • Если поле default задано, это поле может быть пустым или иметь значение null. В противном случае укажите значение, соответствующее значению поля type.

  • Если поле type имеет значение password, укажите строку без шифрования.

  • Если поле type имеет значение assoc_array или array, необходимо также указать пустое поле content.

  • Если поле type имеет значение user_data, укажите допустимое значение value в формате JSON.

  • Если задано значение поля regex, это значение проверяется с помощью заданного регулярного выражения.

В следующем примере параметры конфигурации определяют параметры языкового стандарта для развертывания 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"
}