Pular para o conteúdo principal

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#.

Nota
  • 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 (Ícone de Ajuda) próximo de cada configuração personalizada.

Definições de configuração

Você pode definir configurações personalizadas que:
  • 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 targetServer exclusivo, e os valores que foram inseridos para o servidor.

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âmetroObrigatório / opcionalTipoDescrição
autoCreateInstanceopcionalBooleanoIndica 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.
  • true. Uma instância do objeto de modelo é criada automaticamente no arquivo JSON durante a implantação.
  • false. (padrão) Uma instância do objeto de modelo não é criada automaticamente no arquivo JSON durante a implantação
Nota
Esse campo pode ser colocado apenas no objeto de modelo.
categoriaObrigatórioSequênciaIndica como o valor de cada configuração é preenchido. Este pode ser um dos valores a seguir:
  • dynamic. O valor é inserido pelo usuário em tempo de execução. O Lenovo XClarity Administrator solicita esse valor durante a implantação do SO.

  • predefined. O valor é predefinido pelo Lenovo XClarity Administrator.

  • static. O valor é especificado no esquema e não é alterado no tempo de execução.

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.

choicesopcionalMatriz de valores que correspondem à propriedade typeMatriz 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"]).
comumopcionalBooleanoIndica se este esquema de configuração se aplica a todos os servidores de destino.
  • true. O objeto se aplica a todos os servidores de destino.

  • false. (padrão) O objeto se aplica a um servidor de destino específico.

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.

contentopcionalMatriz de objetosPadrã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ãoopcionalVaria dependendo do typeO valor padrão.
descriçãoopcionalSequênciaDescrição do objeto
labelopcionalSequênciaRótulo para a configuração na interface do usuário que é exibida durante a implantação do SO
maxopcionalNúmero inteiroValor máximo, quando type estiver configurado como inteiro.

O valor padrão é unlimited.

maxElementsopcionalNúmero inteiroNúmero máximo de entradas na matriz para este objeto.
minopcionalNúmero inteiroValor mínimo, quando type estiver configurado como inteiro.

O valor padrão é 0.

minElementsopcionalNúmero inteiroNúmero mínimo de entradas na matriz para este objeto.
nomeObrigatórioSequênciaNome 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).

opcionalObrigatórioBooleanoIndica se o objeto é opcional. Este pode ser um dos valores a seguir.
  • true. O campo é opcional.

  • false. O campo é obrigatório.

regexopcionalSequênciaExpressão regular para validar o valor (por exemplo, "[\\w\\.]{1,64}$")
scriptopcionalMatriz de cadeias de caracteresLista 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.
targetServeropcionalSequênciaUUID 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.

modeloopcionalMatriz de objetosPadrã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.
{
"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"
},
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.
{
"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
  • Um modelo é necessário no nível superior de objetos específicos do servidor (comum = falso).

  • Se category for static, o campo de modelo será ignorado.

tipoObrigatórioSequênciaTipo de dados para o objeto. Este pode ser um dos valores a seguir.
  • array

  • assoc_array

  • booleano

  • inteiro

  • senha

  • string

  • user_data

valueopcionalSequênciaUm valor estático único para a configuração.
Nota
  • Se default estiver definido, esse campo poderá ser vazio ou nulo. Caso contrário, especifique um valor que corresponda a type.

  • Se type for password, especifique uma string não criptografada.

  • Se type for assoc_arrayou array, você também deverá especificar um campo content vazio.

  • Se type for user_data, especifique um value com formato JSON válido.

  • Se regex estiver definido, esse valor será validado usando a expressão regular especificada.

As definições de configuração de exemplo a seguir definem as configurações de idioma em implementações SLES que podem ser adicionadas a um 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"
}
O exemplo a seguir é a instância do arquivo de configuração que é criado no sistema de host depois que os valores inseridos pelo usuário são definidos durante a implantação.
{
"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"
}