Macros personalizadas
As macros fornecem a capacidade de adicionar dados variáveis (definições de configuração) a um arquivo sem supervisão ou script de pós-instalação. O Lenovo XClarity Administrator permite definir suas próprias configurações personalizadas, criando um arquivo de definições de configuração personalizada, usando o formato JSON.
O valor para cada definição de configuração personalizada varia de acordo com a entrada do usuário especificada durante a implantação do SO.
Quando você importa as configurações personalizadas no XClarity Administrator, o XClarity Administrator valida o esquema JSON. Se a validação for aprovada, o XClarity Administrator gerará macros personalizadas para cada configuração.
Para inserir macros personalizadas em um arquivo sem supervisão ou script pós-instalação, use o nome exclusivo do objeto, separe objetos aninhados usando um ponto e, em seguida, coloque uma cerquilha (#) ao redor do nome da macro, por exemplo, #server_settings.server0.locale#.
Não inclua o nome do objeto mais alto.
Quando um objeto é criado de um modelo, o nome é anexado com um número exclusivo, começando com 0 (por exemplo, server0 e server1).
Você pode ver o nome de cada macro da caixa de diálogo Implantar imagens de SO nas guias de Configurações personalizadas passando o mouse sobre o ícone Ajuda () próximo de cada configuração personalizada.
Definições de configuração
São comuns para todos os servidores de destino ou exclusivas de um servidor de destino específico.
Tenham valores estáticos (não configurável) ou valores dinâmicos (configuráveis) que são inseridos ao implantar o perfil da imagem do SO.
Tenham um número variável de elementos com base em um modelo. Por exemplo, é possível definir uma configuração que permite que você especifique 0 – 3 servidores NTP durante a implantação.
- Configurações comuns
Durante a implantação do SO, os elementos da interface do usuário nas guias Configurações comuns na caixa de diálogo Implantar imagens de SO são processados com base nos objetos representados no objeto content. Os objetos descrevem as configurações e valores de que todos os servidores de destino precisam para a implantação do SO.
Para representar as configurações que são comuns para todos os servidores, o arquivo JSON deve conter um objeto pai com um objeto aninhado que contém o par nome/valor "common":true.
O exemplo a seguir usa os mesmos servidores NTP configuráveis (dinâmicos) para todos os 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"
},
...,
}O exemplo a seguir usa o mesmo log de script pós-instalação não configurável (estático).{
"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"
},
...,
}- Configurações específicas de servidor
Durante a implantação do SO, os elementos da interface do usuário na guia Configurações específicas do servidor na caixa de diálogo Implantar imagens de SO são processados com base nos objetos representados nos objetos content do modelo. Os objetos descrevem as configurações e valores de que um servidor de destino específico precisa para a implantação do SO.
Depois que os valores específicos de servidor são coletados na interface do usuário, um objeto content é criado em JSON para cada servidor de destino com base no objeto template. Cada objeto content contém um campo name e um targetServer exclusivos, e todos os valores inseridos para o servidor em questão.
Para representar as configurações específicas do servidor, o arquivo JSON deve conter um objeto pai com o conteúdo a seguir:
O par nome/valor "category":"dynamic".
Um objeto aninhado que contém o par nome/valor "common":false. Há suporte para apenas um objeto "common": false no conteúdo do objeto pai.
Um objeto de modelo com um objeto de conteúdo integrado. Esta matriz do modelo pode conter apenas um objeto.
Por exemplo, se você deseja definir um local de SO exclusivo 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"
},
...,
}
Especificação JSON
A tabela a seguir descreve os campos que são permitidos na especificação JSON.
Parâmetro | Obrigatório / opcional | Tipo | Descrição | ||
---|---|---|---|---|---|
autoCreateInstance | opcional | Booleano | Indica se uma instância do objeto de modelo é criada automaticamente no arquivo JSON durante a implantação. Este pode ser um dos valores a seguir.
Nota Esse campo pode ser colocado apenas no objeto de modelo. | ||
categoria | Obrigatório | Sequência | Indica como o valor de cada configuração é preenchido. Este pode ser um dos valores a seguir:
Os objetos aninhados herdam o valor desse campo de seu objeto pai. Se category estiver definido como static no objeto pai, deverá ser definido como static em todos os objetos aninhados também. Se category estiver definido como dynamic no objeto pai, poderá ser static ou dynamic nos objetos aninhados. | ||
choices | opcional | Matriz de valores que correspondem à propriedade type | Matriz de valores estáticos (como strings ou números inteiros) para a configuração na qual o usuário pode selecionar durante a implantação do SO (por exemplo, ["enabled","disabled"]). | ||
comum | opcional | Booleano | Indica se este esquema de configuração se aplica a todos os servidores de destino.
Os objetos aninhados herdam o valor desse campo de seu objeto pai. Se common estiver definido como true no objeto pai, deverá ser definido como true em todos os objetos aninhados também. Se common estiver definido como false no objeto pai, deverá ser definido como false em todos os objetos aninhados. | ||
content | opcional | Matriz de objetos | Padrão que representa objetos aninhados no esquema. Depois que os dados inseridos pelo usuário são coletados durante a implantação do SO, esse campo é usado para representar os valores finais para um determinado modelo na instância do arquivo de definições de configuração que é criado para a implantação. | ||
padrão | opcional | Varia dependendo do type | O valor padrão. | ||
descrição | opcional | Sequência | Descrição do objeto | ||
label | opcional | Sequência | Rótulo para a configuração na interface do usuário que é exibida durante a implantação do SO | ||
max | opcional | Número inteiro | Valor máximo, quando type estiver configurado como inteiro. O valor padrão é unlimited. | ||
maxElements | opcional | Número inteiro | Número máximo de entradas na matriz para este objeto. | ||
min | opcional | Número inteiro | Valor mínimo, quando type estiver configurado como inteiro. O valor padrão é 0. | ||
minElements | opcional | Número inteiro | Número mínimo de entradas na matriz para este objeto. | ||
nome | Obrigatório | Sequência | Nome exclusivo do objeto. Esse nome só pode conter os seguintes caracteres: alfanuméricos (a-z, A-Z e 0-9), sublinhado (_) e traço (-). Você pode fazer referência a name como uma macro personalizada no arquivo sem supervisão. Ao fazer referência a um objeto aninhado name, separe cada objeto usando um ponto (por exemplo, mydeploy.node.locale). | ||
opcional | Obrigatório | Booleano | Indica se o objeto é opcional. Este pode ser um dos valores a seguir.
| ||
regex | opcional | Sequência | Expressão regular para validar o valor (por exemplo, "[\\w\\.]{1,64}$") | ||
script | opcional | Matriz de cadeias de caracteres | Lista de scripts, separados por vírgula, que têm dependências nos dados de objeto (por exemplo, ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]). Nota Os scripts devem estar disponíveis para o perfil de imagem do SO como um script de instalação ou software personalizado. | ||
targetServer | opcional | Sequência | UUID de servidor de destino para a implantação do sistema operacional. Se common for verdadeiro, esse campo poderá ser vazio ou nulo e o servidor de destino será especificado durante a implantação do SO. | ||
modelo | opcional | Matriz de objetos | Padrão que representa objetos reutilizáveis. Durante a implantação do SO, este modelo pode representar várias instâncias do objeto. Os campos minElements e maxElements podem ser usados para limitar o número de instâncias. O exemplo a seguir usa um modelo para representar uma matriz de servidores NTP de 1 a 3.
Depois que os valores inseridos pelo usuário são coletados durante a implantação do SO, uma instância do arquivo de definições de configuração é criada com conteúdo específico para cada dispositivo no qual o sistema operacional deve ser implantado.
Nota
| ||
tipo | Obrigatório | Sequência | Tipo de dados para o objeto. Este pode ser um dos valores a seguir.
| ||
value | opcional | Sequência | Um valor estático único para a configuração. 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"
}