Zum Hauptinhalt springen

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

Anmerkung
  • 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 (Symbol „Hilfe“) neben jeder angepassten Einstellung bewegen.

Konfigurationseinstellungen

Sie können angepasste Konfigurationseinstellungen definieren, auf die Folgendes zutrifft:
  • 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 Dialogfenster „BS-Image implementieren“ basierend auf den Objekten gerendert, die im Objekt content 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 Dialogfenster „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 Objekt content für jeden Zielserver erstellt, das auf dem Objekt template 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.

ParameterErforderlich/OptionalTypBeschreibung
autoCreateInstanceOptionalBooleschGibt an, ob eine Instanz des Vorlagenobjekts bei der Bereitstellung automatisch in einer JSON-Datei erstellt wird. Es kann einen der folgenden Werte aufweisen.
  • true: Eine Instanz des Vorlagenobjekts wird bei der Bereitstellung automatisch in einer JSON-Datei erstellt.
  • false: Eine Instanz des Vorlagenobjekts wird bei der Bereitstellung nicht automatisch in einer JSON-Datei erstellt. (Standardwert)
Anmerkung
Dieses Feld kann nur im Vorlagenobjekt platziert werden.
categoryErforderlichZeichenketteGibt an, wie der Wert jeder Einstellung bestückt ist. Dies kann einer der folgenden Werte sein:
  • dynamic: Der Wert wird bei der Ausführungszeit durch den Benutzer eingegeben. Während der BS-Implementierung werden Sie von Lenovo XClarity Administrator zur Eingabe dieses Werts aufgefordert.

  • predefined: Der Wert wird von Lenovo XClarity Administrator vordefiniert.

  • static: Der Wert wird im Schema festgelegt und bei der Ausführungszeit nicht geändert.

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.

choicesOptionalArray mit Werten, die mit der Eigenschaft type übereinstimmenArray 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"]).
commonOptionalBooleschGibt an, ob dieses Konfigurationsschema für alle Zielserver gilt.
  • true: Das Objekt gilt für alle Zielserver.

  • false: (default) Das Objekt gilt für einen bestimmten Zielserver.

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.

contentOptionalObjektarrayMuster, 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.

defaultOptionalAbhängig von typeDer Standardwert.
descriptionOptionalZeichenketteBeschreibung des Objekts.
labelOptionalZeichenketteBezeichnung für die Einstellung in der Benutzerschnittstelle, die während der BS-Implementierung angezeigt wird.
maxOptionalGanzzahlMaximaler Wert, wenn type auf eine Ganzzahl festgelegt ist.

Der Standardwert ist unbegrenzt.

maxElementsOptionalGanzzahlMaximale Anzahl der Eingaben im Array für dieses Objekt.
minOptionalGanzzahlMinimaler Wert, wenn type auf eine Ganzzahl festgelegt ist.

Der Standardwert lautet 0.

minElementsOptionalGanzzahlMinimale Anzahl der Eingaben im Array für dieses Objekt.
nameErforderlichZeichenketteEindeutiger 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).

optionalErforderlichBooleschGibt an, ob das Objekt optional ist. Es kann einen der folgenden Werte aufweisen.
  • true: Das Feld ist optional.

  • false: Das Feld ist erforderlich.

regexOptionalZeichenketteRegulärer Ausdruck für die Überprüfung des Werts (z.B. "[\\w\\.]{1,64}$").
scriptOptionalZeichenfolgenarrayListe 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.
targetServerOptionalZeichenketteUUID 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.

templateOptionalObjektarrayMuster, 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.
{
"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"
},
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.
{
"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"
}
Anmerkung
  • Eine Vorlage ist auf der obersten Ebene der serverspezifischen Objekte erforderlich (common = false).

  • Wenn bei category static festgelegt ist, wird das Feld „template“ ignoriert.

typeErforderlichZeichenketteDatentyp für das Objekt. Es kann einen der folgenden Werte aufweisen.
  • array

  • assoc_array

  • boolean

  • integer

  • password

  • string

  • user_data

valueOptionalZeichenketteEin einzelner statischer Wert für die Konfigurationseinstellung.
Anmerkung
  • Wenn default festgelegt ist, kann dieses Feld leer oder null sein. Andernfalls müssen Sie einen Wert eingeben, der type entspricht.

  • Wenn für type password festgelegt ist, geben Sie eine unverschlüsselte Zeichenfolge an.

  • Wenn für type assoc_array oder array festgelegt ist, müssen Sie außerdem ein leeres content-Feld festlegen.

  • Wenn bei type user_data festgelegt ist, geben Sie einen gültigen value im JSON-Format ein.

  • Wenn regex festgelegt ist, wird dieser Wert mit dem angegebenen regulären Ausdruck überprüft.

Im folgenden Beispiel definieren die Konfigurationseinstellungen Ländereinstellungen für SLES-Implementierungen, die zu einem angepassten Profil hinzugefügt werden können.
{
"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"
}
Im folgenden Beispiel wird die Instanz der Konfigurationseinstellungsdatei gezeigt, die auf dem Hostsystem erstellt wird, nachdem die vom Benutzer eingegebenen Werte während der Implementierung definiert werden.
{
"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"
}