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#.
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 () situado junto a cada configuración personalizada.
Valores de configuración
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ámetro | Necesario/Opcional | Tipo | Descripción | ||
---|---|---|---|---|---|
autoCreateInstance | opcional | Booleano | Indica 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.
Nota Este campo puede colocarse únicamente en el objeto de la plantilla. | ||
category | Obligatorio | Cadena | Indica cómo se rellena el valor de cada configuración. Puede presentar uno de los valores siguientes:
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. | ||
choices | opcional | Matriz de valores que coinciden con la propiedad type | Matriz 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ún | opcional | Booleano | Indica si este esquema de configuración se aplica a todos los servidores de destino.
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. | ||
content | opcional | Matriz de objetos | Patró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. | ||
predeterminado | opcional | Varía según type | El valor predeterminado. | ||
descripción | opcional | Cadena | Descripción del objeto | ||
etiqueta | opcional | Cadena | Etiqueta de la configuración de la interfaz de usuario que se muestra durante el despliegue del SO | ||
max | opcional | Entero | Valor máximo, cuando type esté establecido como un entero. El valor predeterminado es ilimitado. | ||
maxElements | opcional | Entero | Número máximo de entradas de la matriz de este objeto. | ||
min | opcional | Entero | Valor mínimo, cuando type esté establecido como un entero. El valor predeterminado es 0. | ||
minElements | opcional | Entero | Número mínimo de entradas de la matriz de este objeto. | ||
name | Obligatorio | Cadena | Nombre ú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). | ||
optional | Obligatorio | Booleano | Indica si el objeto es opcional. Puede presentar uno de los valores siguientes.
| ||
regex | opcional | Cadena | Expresión regular para validar el valor (por ejemplo, "[\\w\\.]{1,64}$") | ||
script | opcional | Matriz de cadenas | Lista 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. | ||
targetServer | opcional | Cadena | El 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. | ||
template | opcional | Matriz de objetos | Patró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.
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.
Nota
| ||
tipo | Obligatorio | Cadena | Tipo de datos del objeto. Puede presentar uno de los valores siguientes.
| ||
value | opcional | Cadena | Un valor estático único para los valores de configuración. Nota
|
{
"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"
}