Saltar al contenido principal

Macros personalizadas

Las macros ofrecen la posibilidad de añadir datos de variable (valores de configuración) a un archivo desatendido o de script posterior a la instalación. Lenovo XClarity Administrator le permite definir sus propios valores personalizados mediante la creación de un archivo de valores personalizados de configuración, utilizando el formato JSON.

El valor de cada valor de configuración personalizado varía basándose en la entrada del usuario que se especifica durante el despliegue del SO.

Al importar valores de configuración personalizada a XClarity Administrator, XClarity Administrator valida el esquema JSON. Si la validación se realiza correctamente, XClarity Administrator genera macros personalizadas para cada valor.

Para inyectar macros personalizadas en un archivo de instalación desatendida o script posterior a la instalación, utilice el nombre único del objeto, separe los objetos anidados con un punto y luego rodee el nombre de la macro con un símbolo de número (#), por ejemplo, #server_settings.server0.locale#.

Nota
  • No incluya el nombre de objeto superior.

  • Cuando se crea un objeto desde una plantilla, el nombre se conecta con un número único, comenzando con 0 (por ejemplo, server0 y server1).

  • Puede ver el nombre de cada macro en el cuadro de diálogo Desplegar imágenes de SO en las pestañas Valores personalizados colocando el puntero sobre el icono Ayuda (Icono Ayuda) situado junto a cada configuración personalizada.

Valores de configuración

Puede definir los valores de configuración personalizada que:
  • Sean comunes para todos los servidores de destino o únicos para un servidor de destino específico.

  • Tengan valores estáticos (que no se pueden configurar) o valores dinámicos (configurables) que se introducen al desplegar el perfil de la imagen del SO.

  • Tiene un número variable de elementos basados en una plantilla. Por ejemplo, puede definir un valor de configuración que le permite especificar 0 a 3 servidores NTP durante el despliegue.

Valores comunes

Durante el despliegue del SO, los elementos de la interfaz de usuario en la pestaña Valores comunes del cuadro de diálogo Desplegar imagen de SO se representan en función de los objetos que aparecen en el objeto content. Los objetos describen la configuración y los valores que requieren los servidores de destino para el despliegue del SO.

Para representar los valores comunes a todos los servidores, el archivo JSON debe contener un objeto primario con un objeto anidado que contenga el par nombre/valor "common":true.

El ejemplo siguiente utiliza los mismos servidores NTP configurables (dinámicos) para todos los servidores.
{
"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"
},
...,
}
El siguiente ejemplo usa el mismo directorio de registro de script de instalación posterior no configurable (estática).
{
"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"
},
...,
}
Valores específicos de servidor

Durante el despliegue del SO, los elementos de la interfaz de usuario en la pestaña Valores específicos del servidor del cuadro de diálogo Desplegar imagen de SO se representan en función de los objetos que aparecen en los objetos content de la plantilla. Los objetos describen la configuración y los valores que requieren un servidor de destino específico para el despliegue del SO.

Una vez que se recopilan los valores específicos del servidor en la interfaz de usuario, se crea un objeto content en el JSON para cada servidor de destino en función del objeto template. Cada objeto content contiene campos name y targetServer únicos, además de los valores ingresados en dicho servidor.

Para representar los valores específicos del servidor, el archivo JSON debe contener un objeto primario con el siguiente contenido:

  • El par nombre/valor "category":"dynamic".

  • Un objeto anidado que contiene el par nombre/valor "common":false. Solo un objeto "common": false es compatible con el contenido del objeto primario.

  • Un objeto de la plantilla con un objeto contenido integrado. La matriz de plantilla puede contener solo un objeto.

Por ejemplo, si desea definir una configuración regional de SO única para cada servidor de destino
{
"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"
},
...,
}

especificación JSON

La siguiente tabla describe los campos que se admiten en la especificación de JSON.

ParámetroNecesario/OpcionalTipoDescripción
autoCreateInstanceopcionalBooleanoIndica si se creó una instancia del objeto de plantilla automáticamente en el archivo JSON durante el despliegue. Puede presentar uno de los valores siguientes.
  • verdadero. Se crea una instancia del objeto de plantilla automáticamente en el archivo JSON durante el despliegue.
  • falso. (predeterminado) No se crea una instancia del objeto de plantilla automáticamente en el archivo JSON durante el despliegue.
Nota
Este campo puede colocarse únicamente en el objeto de la plantilla.
categoryObligatorioCadenaIndica cómo se rellena el valor de cada configuración. Puede presentar uno de los valores siguientes:
  • dynamic. El usuario ingresa el valor en tiempo de ejecución. Lenovo XClarity Administrator solicita este valor durante el despliegue del SO.

  • predefined. El valor está preestablecido por Lenovo XClarity Administrator.

  • static. El valor está especificado en el esquema y no cambia en el tiempo de ejecución.

Los objetos anidados heredan el valor de este campo del objeto principal.

Si category está definido en static en el objeto primario, también debe establecerse static en todos los objetos anidados. Si category se establece en dynamic en el objeto primario, puede especificarse static o dynamic en los objetos anidados.

choicesopcionalMatriz de valores que coinciden con la propiedad typeMatriz de valores estáticos (como cadenas o números enteros) para los valores de configuración que el usuario puede seleccionar durante el despliegue del SO (por ejemplo, ["enabled","disabled"]).
comúnopcionalBooleanoIndica si este esquema de configuración se aplica a todos los servidores de destino.
  • true. El objeto se aplica a todos los servidores de destino.

  • false. (predeterminado) El objeto se aplica a un servidor de destino específico.

Los objetos anidados heredan el valor de este campo del objeto principal.

Si common está definido en true en el objeto primario, también debe establecerse true en todos los objetos anidados. Si common está definido en false en el objeto primario, debe establecerse false en todos los objetos anidados.

contentopcionalMatriz de objetosPatrón que representa los objetos anidados del esquema.

Después de recuperar datos ingresados por el usuario durante el despliegue del SO, este campo se utiliza para representar los valores finales de una plantilla en la instancia del archivo de valores de configuración que se creó para el despliegue.

predeterminadoopcionalVaría según typeEl valor predeterminado.
descripciónopcionalCadenaDescripción del objeto
etiquetaopcionalCadenaEtiqueta de la configuración de la interfaz de usuario que se muestra durante el despliegue del SO
maxopcionalEnteroValor máximo, cuando type esté establecido como un entero.

El valor predeterminado es ilimitado.

maxElementsopcionalEnteroNúmero máximo de entradas de la matriz de este objeto.
minopcionalEnteroValor mínimo, cuando type esté establecido como un entero.

El valor predeterminado es 0.

minElementsopcionalEnteroNúmero mínimo de entradas de la matriz de este objeto.
nameObligatorioCadenaNombre único del objeto.

Este nombre puede contener solo los siguientes caracteres: caracteres alfanuméricos (a-z, A-z y 0-9), guion bajo (_) y guion (-).

Puede hacer referencia a name como una macro personalizada del archivo de instalación desatendida. Al hacer referencia a un objeto name anidado, separe cada objeto utilizando un punto (por ejemplo, mydeploy.node.locale).

optionalObligatorioBooleanoIndica si el objeto es opcional. Puede presentar uno de los valores siguientes.
  • verdadero. El campo es opcional

  • falso. El campo es necesario.

regexopcionalCadenaExpresión regular para validar el valor (por ejemplo, "[\\w\\.]{1,64}$")
scriptopcionalMatriz de cadenasLista de scripts, separadas por coma, que tienen dependencias en los datos de este objeto (por ejemplo, ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]).
Nota
Los scripts deben estar disponibles en el perfil de imagen de SO como un script de instalación o software personalizado.
targetServeropcionalCadenaEl UUID del servidor que es el destino del despliegue del SO.

Si common es verdadero, este campo puede estar vacío o ser nulo y el servidor de destino se especifica durante el despliegue del SO.

templateopcionalMatriz de objetosPatrón que representa objetos reutilizables.

Durante el despliegue del SO, esta plantilla puede representar varias instancias del objeto. Los campos minElements y maxElements pueden utilizarse para limitar el número de instancias.

El ejemplo siguiente utiliza una plantilla que representan una matriz de 1 a 3 servidores 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"
},
Una vez que se recopilan los valores ingresados por el usuario durante el despliegue del SO, se crea una instancia del archivo de valores de configuración con contenido específico para cada dispositivo en el que se despliega el SO.
{
"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"
}
Nota
  • Se requiere una plantilla en el nivel superior de los objetos específicos para el servidor (common=false).

  • Si category es static, se omite el campo de la plantilla.

tipoObligatorioCadenaTipo de datos del objeto. Puede presentar uno de los valores siguientes.
  • matriz

  • assoc_array

  • boolean

  • integer

  • password

  • string

  • user_data

valueopcionalCadenaUn valor estático único para los valores de configuración.
Nota
  • Si se especificó default, este campo puede estar vacío o ser nulo; de lo contrario, especifique un valor que coincida con type.

  • Si type es password, especifique una cadena no cifrada.

  • Si type es assoc_array o array, también se debe especificar un campo content vacío.

  • Si type es user_data, especifique un value con un formato de JSON válido.

  • Si regex está establecido, este valor se valida utilizando las expresiones regulares especificadas.

El siguiente ejemplo de valores de configuración define los valores de configuración regional para despliegues de SLES que se pueden agregar a un perfil personalizado.
{
"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"
}
El ejemplo siguiente es la instancia del archivo de valores de configuración que se crea en el sistema host después de definir los valores ingresados por el usuario durante el despliegue.
{
"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"
}