Angepasste Makros
Makros geben Ihnen die Möglichkeit, einer Unattend-Datei oder einem Nach-Installationsskript Variablendaten (Konfigurationseinstellungen) hinzuzufügen. Lenovo XClarity Administrator ermöglicht es Ihnen, Ihre eigenen angepassten Einstellungen durch Erstellen einer angepassten Konfigurationseinstellungsdatei mithilfe des JSON-Formats zu definieren.
Der Wert für jede angepasste Konfigurationseinstellung hängt von der Benutzereingabe während der Betriebssystem-Implementierung ab.
Beim Importieren von angepassten Konfigurationseinstellungen in XClarity Administrator überprüft XClarity Administrator das JSON-Schema. Wenn die Überprüfung erfolgreich ist, erstellt XClarity Administrator angepasste Makros für jede Einstellung.
Zum Einfügen von angepassten Makros in eine Unattend-Datei oder ein Nach-Installationsskript verwenden Sie den eindeutigen Namen des Objekts, trennen Sie verschachtelte Objekte mit einem Punkt und umschließen Sie den Makronamen mit einem Rautensymbol (#), z. B. #server_settings.server0.locale#.
Beachten Sie, dass der oberste Objektname nicht enthalten sein darf.
Wenn ein Objekt von einer Vorlage erstellt wird, wird an den Namen eine eindeutige Nummer angehängt, beginnend mit 0 (z. B. server0 und server1).
Sie können den Namen für jedes Makro im Dialogfeld „BS-Images implementieren“ auf den Registerkarten „Angepasste Einstellungen“ anzeigen, indem Sie mit der Maustaste über das Symbol Hilfe () neben jeder angepassten Einstellung bewegen.
Konfigurationseinstellungen
Sie gelten für alle Zielserver oder nur für einen bestimmten Zielserver.
Sie haben statische (nicht konfigurierbare) Werte oder dynamische (konfigurierbare) Werte, die eingegeben werden, wenn Sie das BS-Image-Profil implementieren.
Sie verfügen über eine variable Anzahl an Elementen basierend auf einer Vorlage. Sie können beispielsweise eine Konfigurationseinstellung definieren, die es Ihnen ermöglicht, während der Implementierung 0 bis 3 NTP-Server anzugeben.
- Allgemeine Einstellungen
Während der BS-Implementierung werden die UI-Elemente in der Registerkarte Allgemeine Einstellungen im Dialogfeld „BS-Image implementieren“ basierend auf den Objekten gerendert, die im content-Objekt vertreten sind. Die Objekte beschreiben die Einstellungen und Werte, die alle Zielserver für die BS-Implementierung erfordern.
Um Einstellungen darzustellen, die auf allen Servern vertreten sind, muss die JSON-Datei ein übergeordnetes Objekt mit einem verschachtelten Objekt enthalten, das das Name/Wert-Paar "common":true enthält.
Im folgenden Beispiel wird derselbe konfigurierbare (dynamische) NTP-Server für alle Server verwendet.{
"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"
},
...,
}Im folgenden Beispiel wird dasselbe nicht konfigurierbare (statische) Protokollverzeichnis für Nach-Installationsskripte verwendet.{
"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"
},
...,
}- Serverspezifische Einstellungen
Während der BS-Implementierung werden die UI-Elemente in der Registerkarte Serverspezifische Einstellungen im Dialogfeld „BS-Image implementieren“ basierend auf den Objekten gerendert, die in den content-Objekten der Vorlage vertreten sind. Die Objekte beschreiben die Einstellungen und Werte, die ein bestimmter Zielserver für die BS-Implementierung erfordert.
Nachdem die serverspezifischen Werte in der Benutzeroberfläche erfasst wurden, wird in der JSON-Datei ein content-Objekt für jeden Zielserver erstellt, das auf dem template-Objekt basiert. Jedes content-Objekt enthält ein eindeutiges name‑ und targetServer-Feld und alle Werte, die für diesen Server eingegeben wurden.
Um die serverspezifischen Einstellungen darzustellen, muss die JSON-Datei ein übergeordnetes Objekt mit dem folgenden Inhalt enthalten:
Das Name/Wert-Paar "category":"dynamic".
Ein verschachteltes Objekt, das das Name/Wert-Paar "common":false enthält. Nur ein "common": false-Objekt wird im Inhalt des übergeordneten Objekts unterstützt.
Ein Vorlagenobjekt mit einem integrierten Inhaltsobjekt. Dieses Vorlagenarray kann nur ein Objekt enthalten.
Wenn Sie z. B. ein eindeutiges BS-Gebietsschema für jeden Zielserver definieren möchten:{
"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"
},
...,
}
JSON-Spezifikation
In der folgenden Tabelle werden die Felder beschrieben, die in der JSON-Spezifikation zulässig sind.
Parameter | Erforderlich/Optional | Typ | Beschreibung | ||
---|---|---|---|---|---|
autoCreateInstance | Optional | Boolesch | Gibt an, ob eine Instanz des Vorlagenobjekts bei der Bereitstellung automatisch in einer JSON-Datei erstellt wird. Es kann einen der folgenden Werte aufweisen.
Anmerkung Dieses Feld kann nur im Vorlagenobjekt platziert werden. | ||
category | Erforderlich | Zeichenkette | Gibt an, wie der Wert jeder Einstellung bestückt ist. Dies kann einer der folgenden Werte sein:
Verschachtelte Objekte übernehmen den Wert dieses Felds von ihrem übergeordneten Objekt. Wenn category im übergeordneten Objekt auf static festgelegt ist, muss es auch in allen verschachtelten Objekten auf static festgelegt werden. Wenn category im übergeordneten Objekt auf dynamic festgelegt ist, kann es in verschachtelten Objekten entweder static oder dynamic sein. | ||
choices | Optional | Array mit Werten, die mit der Eigenschaft type übereinstimmen | Array der statischen Werte (z. B. Zeichenfolgen oder Ganzzahlen) für die Konfigurationseinstellung, aus der der Benutzer während der BS-Implementierung wählen kann (z. B. ["enabled","disabled"]). | ||
common | Optional | Boolesch | Gibt an, ob dieses Konfigurationsschema für alle Zielserver gilt.
Verschachtelte Objekte übernehmen den Wert dieses Felds von ihrem übergeordneten Objekt. Wenn common im übergeordneten Objekt auf true festgelegt ist, muss es auch in allen verschachtelten Objekten auf true festgelegt werden. Wenn common im übergeordneten Objekt auf false festgelegt ist, muss es in allen verschachtelten Objekten auf false festgelegt werden. | ||
content | Optional | Objektarray | Muster, das verschachtelte Objekte im Schema darstellt. Nachdem die vom Benutzer eingegebenen Daten während der BS-Implementierung erfasst wurden, stellt dieses Feld die finalen Werte für eine angegebene Vorlage in der Instanz der Konfigurationseinstellungsdatei dar, die für die Implementierung erstellt wird. | ||
default | Optional | Abhängig von type | Der Standardwert. | ||
description | Optional | Zeichenkette | Beschreibung des Objekts. | ||
label | Optional | Zeichenkette | Bezeichnung für die Einstellung in der Benutzerschnittstelle, die während der BS-Implementierung angezeigt wird. | ||
max | Optional | Ganzzahl | Maximaler Wert, wenn type auf eine Ganzzahl festgelegt ist. Der Standardwert ist unbegrenzt. | ||
maxElements | Optional | Ganzzahl | Maximale Anzahl der Eingaben im Array für dieses Objekt. | ||
min | Optional | Ganzzahl | Minimaler Wert, wenn type auf eine Ganzzahl festgelegt ist. Der Standardwert lautet 0. | ||
minElements | Optional | Ganzzahl | Minimale Anzahl der Eingaben im Array für dieses Objekt. | ||
name | Erforderlich | Zeichenkette | Eindeutiger Name des Objekts. Dieser Name kann nur die folgenden Zeichen enthalten: alphanumerische Zeichen (a‑z, A‑Z und 0‑9), Unterstrich (_) und Bindestrich (-). Sie können in der Unattend-Datei auf name als angepasstes Makro verweisen. Beim Verweis auf ein verschachteltes name-Objekt müssen Sie jedes Objekt mit einem Punkt trennen (z. B. mydeploy.node.locale). | ||
optional | Erforderlich | Boolesch | Gibt an, ob das Objekt optional ist. Es kann einen der folgenden Werte aufweisen.
| ||
regex | Optional | Zeichenkette | Regulärer Ausdruck für die Überprüfung des Werts (z. B. "[\\w\\.]{1,64}$"). | ||
script | Optional | Zeichenfolgenarray | Liste der durch ein Komma voneinander getrennten Skripts, die von den Daten in diesem Objekt abhängig sind (z. B. ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]). Anmerkung Die Skripts müssen für das BS-Image-Profil als Installationsskript oder angepasste Software verfügbar sein. | ||
targetServer | Optional | Zeichenkette | UUID des Servers, der das Ziel für die BS-Implementierung ist. Wenn „common“ den Wert „true“ hat, kann dieses Feld null oder leer sein, und der Zielserver wird während der BS-Implementierung festgelegt. | ||
template | Optional | Objektarray | Muster, das wiederverwendbare Objekte darstellt. Während der BS-Implementierung kann diese Vorlage mehrere Instanzen des Objekts darstellen. Die Felder minElements und maxElements können zum Begrenzen der Anzahl der Instanzen verwendet werden. Im folgenden Beispiel wird eine Vorlage für die Darstellung eines Arrays von 1 bis 3 NTP-Servern verwendet.
Nachdem die vom Benutzer eingegebenen Werte während der BS-Implementierung erfasst wurden, wird eine Instanz der Konfigurationseinstellungsdatei mit bestimmten Inhalten für jede Einheit erstellt, auf der das BS implementiert werden soll.
Anmerkung
| ||
type | Erforderlich | Zeichenkette | Datentyp für das Objekt. Es kann einen der folgenden Werte aufweisen.
| ||
value | Optional | Zeichenkette | Ein einzelner statischer Wert für die Konfigurationseinstellung. Anmerkung
|
{
"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"
}