Aller au contenu principal

Macros personnalisées

Les macros vous permettent d’ajouter des données variables (paramètres de configuration) à un fichier sans opérateur ou un script de post-installation. Lenovo XClarity Administrator vous permet de définir vos propres paramètres personnalisés en créant un fichier de paramètres de configuration personnalisés, en utilisant le format JSON.

La valeur de chaque paramètre de configuration personnalisée varie en fonction de l'entrée utilisateur spécifiée pendant le déploiement du système d’exploitation.

Lorsque vous importez des paramètres de configuration personnalisés dans XClarity Administrator, XClarity Administrator valide le schéma JSON. Si la validation réussit, XClarity Administrator génère des macros personnalisées pour chaque paramètre.

Pour injecter des macros personnalisés dans un fichier sans opérateur ou un script de post-installation, utilisez le nom unique de l’objet, les objets imbriqués distincts à l’aide d’un point, puis placez le nom de macro entre des dièses (#), par exemple, #server_settings.server0.locale#.

Remarque
  • N'incluez pas le nom d'objet supérieur.

  • Lorsqu’un objet est créé à partir d’un modèle, le nom est ajouté avec un numéro unique, en commençant par 0 (par exemple, server0 et server1).

  • Vous pouvez également voir le nom de chaque macro à partir de la boîte de dialogue Déployer des images SE sous les onglets Paramètres personnalisés en passant le curseur sur l'icône Aide (Icône Aide) en regard de chaque paramètre personnalisé.

Paramètres de configuration

Vous pouvez définir des paramètres de configuration personnalisés qui :
  • Sont communs à tous les serveurs cible ou uniques sur un serveur cible spécifique.

  • Comportent des valeur statiques (non configurables) ou avec des valeurs dynamiques (configurables) qui sont entrées lors du déploiement de votre profil d'image SE.

  • Comportent un nombre variable d’éléments basé sur un modèle. Par exemple, vous pouvez définir un paramètre de configuration qui vous permet d'indiquer 0 à 3 serveurs NTP pendant le déploiement.

Paramètres globaux

Pendant le déploiement SE, les éléments de l’interface utilisateur au niveau des onglets Paramètres globaux dans la boîte de dialogue Déployer l’image SE sont rendus d’après les objets qui sont représentés dans l’objet content. Les objets décrivent les paramètres et les valeurs nécessaires à tous les serveurs cible pour le déploiement SE.

Pour représenter les paramètres communs à tous les serveurs, le fichier JSON doit contenir un objet parent avec un objet imbriqué qui contient la paire nom/valeur "common":true.

L'exemple suivant utilise les mêmes serveurs NTP configurables (dynamiques) pour tous les serveurs.
{
"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"
},
...,
}
L'exemple suivant utilise le même répertoire de journal de script de post-installation (statique) non configurable.
{
"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"
},
...,
}
Paramètres spécifiques au serveur

Pendant le déploiement SE, les éléments de l’interface utilisateur au niveau de l’onglet Paramètres spécifiques au serveur dans la boîte de dialogue Déployer l’image SE sont rendus d’après les objets qui sont représentés dans les objets content du modèle. Les objets décrivent les paramètres et les valeurs nécessaires à un serveur cible spécifique pour le déploiement SE.

Une fois les valeurs spécifiques au serveur collectées dans l’interface utilisateur, un objet content est créée dans JSON pour chaque serveur cible d’après l’objet template. Chaque objet content contient une zone name et targetServer uniques, et les valeurs qui ont été entrées pour ce serveur.

Pour représenter les paramètres spécifiques au serveur, le fichier JSON doit contenir un objet parent avec le contenu suivant :

  • La paire nom/valeur "category":"dynamic".

  • Un objet imbriqué qui contient la paire nom/valeur "common":false. Un seul objet "common": false est pris en charge dans le contenu de l'objet parent.

  • Un objet modèle avec un objet content imbriqué. Ce tableau modèle peut contenir un seul objet.

Par exemple, si vous souhaitez définir des paramètres régionaux SE uniques pour chaque serveur cible
{
"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"
},
...,
}

spécification JSON

Le tableau suivant décrit les zones qui sont autorisées dans la spécification JSON.

ParamètreObligatoire / FacultativeTypeDescription
autoCreateInstanceen optionbooléenneIndique si une instance de l’objet modèle est créée automatiquement dans un fichier JSON lors du déploiement. Les valeurs possibles sont les suivantes.
  • true. Une instance de l’objet modèle est créée automatiquement dans un fichier JSON lors du déploiement.
  • false. (par défaut) Une instance de l’objet modèle n'est pas créée automatiquement dans un fichier JSON lors du déploiement.
Remarque
Cette zone peut être placée uniquement dans l’objet modèle.
catégorieRequisStringIndique la façon dont la valeur de chaque paramètre est indiquée. Les valeurs possibles sont les suivantes :
  • dynamique. La valeur est entrée par l’utilisateur lors de l'exécution. Lenovo XClarity Administrator vous invite à saisir cette valeur pendant le déploiement SE.

  • prédéfini. La valeur est prédéfinie par Lenovo XClarity Administrator.

  • statique. La valeur est indiquée dans le schéma et ne change pas lors de l'exécution.

Les objets imbriqués héritent de la valeur de cette zone à partir de son objet parent.

Si le paramètre category est défini sur static dans l’objet parent, il doit être défini sur static dans tous les objets imbriqués également. Si le paramètre category est défini sur dynamic dans l’objet parent, il peut être défini sur static ou dynamic dans les objets imbriqués.

choixen optionTableau de valeurs correspondant à la propriété typeTableau de valeurs statiques (chaînes ou entiers, par exemple) pour le paramètre de configuration que l'utilisateur peut choisir pendant le déploiement SE (par exemple, ["enabled","disabled"]).
communen optionbooléenneIndique si ce schéma de configuration s'applique à tous les serveurs cible.
  • true. L'objet s'applique à tous les serveurs cible.

  • false. (default) L'objet s'applique à un serveur cible spécifique.

Les objets imbriqués héritent de la valeur de cette zone à partir de son objet parent.

Si le paramètre common est défini sur true dans l’objet parent, il doit être défini sur true dans tous les objets imbriqués également. Si le paramètre common est défini sur false dans l’objet parent, il doit être défini sur false dans tous les objets imbriqués.

contenten optionTableau d'objetsModèle qui représente les objets imbriqués dans le schéma.

Une fois les données entrées par l'utilisateur collectées lors du déploiement SE, cette zone est utilisée pour représenter les valeurs finales d'un modèle donné dans l’instance du fichier de paramètres de configuration qui est créé pour le déploiement.

par défauten optionVarie en fonction du typeValeur par défaut.
descriptionen optionStringDescription de l'objet
étiquetteen optionStringÉtiquette pour le paramètre dans l’interface utilisateur qui s’affiche lors du déploiement SE
maxen optionEntierValeur maximale, lorsque type est défini sur integer.

La valeur par défaut est unlimited.

maxElementsen optionEntierNombre maximum d'entrées du tableau pour cet objet.
minen optionEntierValeur minimale, lorsque type est défini sur integer.

La valeur par défaut est 0.

minElementsen optionEntierNombre minimum d'entrées du tableau pour cet objet.
nameRequisStringNom unique de l'objet.

Ce nom peut contenir uniquement les caractères suivants : caractères alphanumériques (a-z, A-Z et 0-9), traits de soulignement (_) et tirets (-).

Vous pouvez faire référence à name en tant que macro personnalisée dans le fichier sans opérateur. Lors de la référence à un objet name imbriqué, séparez chaque objet à l’aide d’un point (par exemple, mydeploy.node.locale).

optionalRequisbooléenneIndique si l’objet est facultatif. Les valeurs possibles sont les suivantes.
  • true. La zone est facultative.

  • false. La zone est obligatoire.

regexen optionStringExpression régulière pour la validation de la valeur (par exemple, "[\\w\\.]{1,64}$")
scripten optionTableau de chaînesListe de scripts, séparés par une virgule, qui ont des dépendances sur les données dans ce objet (par exemple, ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]).
Remarque
Les scripts doivent être disponibles pour le profil d'image SE en tant que script d'installation ou logiciel personnalisé.
targetServeren optionStringUUID du serveur qui est la cible du déploiement SE.

Si common est défini sur true, cette zone peut être vide ou nulle, et le serveur cible est spécifié pendant le déploiement SE.

templateen optionTableau d'objetsModèle qui représente les objets réutilisables.

Pendant le déploiement SE, ce modèle peut représenter plusieurs instances de l'objet. Les zones minElements et maxElements peuvent être utilisées pour limiter le nombre d’instances.

L'exemple suivant utilise un modèle pour représenter un groupe de serveurs NTP 1-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"
},
Une fois les données entrées par l'utilisateur collectées lors du déploiement SE, une instance du fichier de paramètres de configuration est créée avec du contenu spécifique pour chaque appareil sur lequel le SE doit être déployé.
{
"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"
}
Remarque
  • Un modèle est requis au niveau supérieur des objets serveur (common=false).

  • Si le paramètre category est défini sur static, la zone de modèle est ignorée.

typeRequisStringType de données de l'objet. Les valeurs possibles sont les suivantes.
  • array

  • assoc_array

  • boolean

  • integer

  • password

  • string

  • user_data

valueen optionStringValeur statique unique pour le paramètre de configuration.
Remarque
  • Si default est défini, cette zone peut être vide ou nulle. Sinon, indiquez une valeur qui correspond à type.

  • Si type est défini sur password, spécifiez une chaîne non chiffrée.

  • Si type est défini sur assoc_array ou array, vous devez également spécifier une zone content vide.

  • Si type est défini sur user_data, indiquez une value au format JSON valide.

  • Si regex est défini, cette valeur est validée à l’aide de l’expression régulière spécifiée.

Les exemples de paramètres de configuration suivants définissent les paramètres régionaux pour les déploiements SLES qui peuvent être ajoutés à un profil personnalisé.
{
"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"
}
L'exemple suivant est l'instance du fichier de paramètres de configuration qui est créée sur le système hôte, une fois les valeurs entrée par l'utilisateur définies lors du déploiement.
{
"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"
}