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#.
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 () en regard de chaque paramètre personnalisé.
Paramètres de configuration
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ètre | Obligatoire / Facultative | Type | Description | ||
---|---|---|---|---|---|
autoCreateInstance | en option | booléenne | Indique 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.
Remarque Cette zone peut être placée uniquement dans l’objet modèle. | ||
catégorie | Requis | String | Indique la façon dont la valeur de chaque paramètre est indiquée. Les valeurs possibles sont les suivantes :
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. | ||
choix | en option | Tableau de valeurs correspondant à la propriété type | Tableau 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"]). | ||
commun | en option | booléenne | Indique si ce schéma de configuration s'applique à tous les serveurs cible.
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. | ||
content | en option | Tableau d'objets | Modè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éfaut | en option | Varie en fonction du type | Valeur par défaut. | ||
description | en option | String | Description de l'objet | ||
étiquette | en option | String | Étiquette pour le paramètre dans l’interface utilisateur qui s’affiche lors du déploiement SE | ||
max | en option | Entier | Valeur maximale, lorsque type est défini sur integer. La valeur par défaut est unlimited. | ||
maxElements | en option | Entier | Nombre maximum d'entrées du tableau pour cet objet. | ||
min | en option | Entier | Valeur minimale, lorsque type est défini sur integer. La valeur par défaut est 0. | ||
minElements | en option | Entier | Nombre minimum d'entrées du tableau pour cet objet. | ||
name | Requis | String | Nom 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). | ||
optional | Requis | booléenne | Indique si l’objet est facultatif. Les valeurs possibles sont les suivantes.
| ||
regex | en option | String | Expression régulière pour la validation de la valeur (par exemple, "[\\w\\.]{1,64}$") | ||
script | en option | Tableau de chaînes | Liste 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é. | ||
targetServer | en option | String | UUID 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. | ||
template | en option | Tableau d'objets | Modè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.
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é.
Remarque
| ||
type | Requis | String | Type de données de l'objet. Les valeurs possibles sont les suivantes.
| ||
value | en option | String | Valeur statique unique pour le paramètre de configuration. Remarque
|
{
"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"
}