Passa al contenuto principale

Macro personalizzate

Le macro forniscono la possibilità di aggiungere dati variabili (impostazioni di configurazione) a un file di installazione automatica o a uno script post-installazione. Lenovo XClarity Administrator consente di definire le impostazioni personalizzate creando un file di impostazioni di configurazione personalizzate, utilizzando il formato JSON.

Il valore per ogni impostazione di configurazione personalizzata varia in base all'input specificato dall'utente durante la distribuzione del sistema operativo.

Quando si importano le impostazioni di configurazione personalizzate in XClarity Administrator, XClarity Administrator convalida lo schema JSON. Se la convalida riesce, XClarity Administrator genera macro personalizzate per ogni impostazione.

Per inserire le macro personalizzate in un file di installazione automatica o in uno script post-installazione, utilizzare il nome univoco dell'oggetto, separare gli oggetti nidificati con un punto e quindi racchiudere il nome della macro con il simbolo hash (#), ad esempio, #server_settings.server0.locale#.

Nota
  • Non includere il nome dell'oggetto principale.

  • Quando viene creato un oggetto da un modello, il nome viene aggiunto con un numero univoco, a partire da 0 (ad esempio, server0 e server1).

  • È possibile visualizzare il nome per ogni macro dalla finestra di dialogo Distribuisci immagini sistema operativo sulle schede Impostazioni personalizzate, passando il mouse sull'icona Guida (Icona Guida) accanto a ciascuna impostazione personalizzata.

Impostazioni di configurazione

È possibile definire le impostazioni di configurazione personalizzate che:
  • Sono comuni a tutti i server di destinazione o univoche per un server di destinazione specifico.

  • Dispongono di valori statici (non configurabili) o di valori dinamici (configurabili) immessi quando si distribuisce il profilo immagine del sistema operativo.

  • Dispongono di un numero variabile di elementi basato su un modello. Ad esempio, è possibile definire un'impostazione di configurazione che consente di specificare i server NTP 0-3 durante la distribuzione.

Impostazioni comuni

Durante la distribuzione del sistema operativo, gli elementi dell'interfaccia utente delle schede Impostazioni comuni della finestra di dialogo "Distribuisci immagine sistema operativo" vengono visualizzati in base agli oggetti rappresentati nell'oggetto content. Gli oggetti descrivono le impostazioni e i valori necessari a tutti i server di destinazione per la distribuzione del sistema operativo.

Per rappresentare le impostazioni comuni a tutti i server, il file JSON deve contenere un oggetto principale con un oggetto nidificato che contiene la coppia nome/valore "common":true.

Nel seguente esempio vengono utilizzati gli stessi server NTP (dinamici) configurabili per tutti i server.
{
"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"
},
...,
}
Nel seguente esempio viene utilizzata la stessa directory di log degli script post-installazione (statici) non configurabile.
{
"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"
},
...,
}
Impostazioni specifiche del server

Durante la distribuzione del sistema operativo, gli elementi dell'interfaccia utente della scheda Impostazioni specifiche del server della finestra di dialogo "Distribuisci immagine sistema operativo" vengono visualizzati in base agli oggetti rappresentati nell'oggetto content del modello. Gli oggetti descrivono le impostazioni e i valori necessari a un server di destinazione specifico per la distribuzione del sistema operativo.

Una volta raccolti i valori specifici del server nell'interfaccia utente, viene creato un oggetto content in formato JSON per ciascun server di destinazione, in base all'oggetto template. Ciascun oggetto content contiene un campo name e targetServer univoco e gli eventuali valori specificati per il server.

Per rappresentare le impostazioni specifiche del server, il file JSON deve contenere un oggetto principale con il seguente contenuto:

  • La coppia nome/valore "category":"dynamic".

  • L'oggetto nidificato che contiene la coppia nome/valore "common":false. Solo un oggetto "common": false è supportato nel contenuto dell'oggetto principale.

  • Un oggetto modello con un oggetto di contenuto integrato. Questo array modello può contenere solo un oggetto.

Ad esempio, se si desidera definire le impostazioni internazionali univoche del sistema operativo per ciascun server di destinazione
{
"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"
},
...,
}

Specifica JSON

La seguente tabella descrive i campi consentiti dalle specifiche JSON.

ParametroObbligatorio/FacoltativoTipoDescrizione
autoCreateInstanceopzionaleValore booleanoIndica se un'istanza dell'oggetto modello viene creata automaticamente nel file JSON in fase di distribuzione. É possibile selezionare uno dei seguenti valori.
  • true. Un'istanza dell'oggetto modello viene creata automaticamente nel file JSON in fase di distribuzione.
  • false. (predefinito) Un'istanza dell'oggetto modello non viene creata automaticamente nel file JSON in fase di distribuzione
Nota
Questo campo può essere posizionato solo nell'oggetto modello.
categoriaObbligatorioStringIndica la modalità di popolamento del valore di ciascuna impostazione. É possibile selezionare uno dei seguenti valori:
  • dynamic. Il valore viene immesso dall'utente in fase di esecuzione. Lenovo XClarity Administrator richiede questo valore per la distribuzione del sistema operativo.

  • predefined. Il valore è preimpostato da Lenovo XClarity Administrator.

  • static. Il valore viene specificato nello schema e non cambia in fase di esecuzione.

Gli oggetti nidificati ereditano il valore di questo campo dal relativo oggetto principale.

Se category è impostato su static nell'oggetto principale, deve essere impostato su static anche in tutti gli oggetti nidificati. Se category è impostato su dynamic nell'oggetto principale, può essere static o dynamic negli oggetti nidificati.

scelteopzionaleArray di valori che corrispondono alla proprietà typeArray di valori statici (come stringhe o numeri interi) per l'impostazione di configurazione che l'utente può selezionare durante la distribuzione del sistema operativo (ad esempio, ["enabled","disabled"]).
comuneopzionaleValore booleanoIndica se questo schema di configurazione si applica a tutti i server di destinazione.
  • true. L'oggetto si applica a tutti i server di destinazione.

  • false. (predefinito) L'oggetto si applica a un server di destinazione specifico.

Gli oggetti nidificati ereditano il valore di questo campo dal relativo oggetto principale.

Se common è impostato su true nell'oggetto principale, deve essere impostato su true anche in tutti gli oggetti nidificati. Se common è impostato su false nell'oggetto principale, deve essere impostato su false in tutti gli oggetti nidificati.

contenutoopzionaleMatrice di oggettiPattern che rappresenta gli oggetti nidificati nello schema.

Una volta raccolti i dati immessi dall'utente durante la distribuzione del sistema operativo, questo campo viene utilizzato per rappresentare i valori finali di un determinato modello nell'istanza del file delle impostazioni di configurazione creato per la distribuzione.

predefinitoopzionaleVaria a seconda del campo tipoIl valore predefinito.
descrizioneopzionaleStringDescrizione dell'oggetto
etichettaopzionaleStringEtichetta per l'impostazione nell'interfaccia utente visualizzata durante la distribuzione del sistema operativo
massimoopzionaleNumero interoIl valore massimo, quando type è impostato su un numero intero.

Il valore predefinito è illimitato.

maxElementsopzionaleNumero interoNumero massimo di voci nella matrice per questo oggetto.
minopzionaleNumero interoIl valore minimo, quando type è impostato su un numero intero.

Il valore predefinito è 0.

minElementsopzionaleNumero interoNumero minimo di voci nella matrice per questo oggetto.
nameObbligatorioStringNome univoco dell'oggetto.

Questo nome può contenere solo i seguenti caratteri: caratteri alfanumerici (a-z, A-Z e 0-9), carattere di sottolineatura (_) e trattino (-).

È possibile fare riferimento al campo name come macro personalizzata nel file di installazione automatica. Quando si fa riferimento a un oggetto name nidificato, separare ogni oggetto utilizzando un punto (ad esempio, mydeploy.node.locale).

facoltativoObbligatorioValore booleanoIndica se l'oggetto è facoltativo. É possibile selezionare uno dei seguenti valori.
  • true. Il campo è facoltativo

  • false. Il campo è obbligatorio.

regexopzionaleStringEspressione regolare per la convalida del valore (ad esempio, "[\\w\\.]{1,64}$")
scriptopzionaleMatrice di stringheElenco di script, separati da una virgola, con dipendenze sui dati in questo oggetto (ad esempio, ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"]).
Nota
Gli script devono essere disponibili nel profilo immagine del sistema operativo come script di installazione o software personalizzato.
targetServeropzionaleStringL'UUID del server di destinazione per la distribuzione del sistema operativo.

Se il parametro "common" è impostato su "true", questo campo può essere vuoto o NULL e il server di destinazione viene specificato durante la distribuzione del sistema operativo.

modelloopzionaleMatrice di oggettiPattern che rappresenta gli oggetti riutilizzabili.

Durante la distribuzione del sistema operativo, questo modello può rappresentare più istanze dell'oggetto. I campi minElements e maxElements possono essere utilizzati per limitare il numero di istanze.

Nel seguente esempio viene utilizzato un modello per rappresentare un array di 1-3 server NTP.
{
"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"
},
Una volta raccolti i dati immessi dall'utente durante la distribuzione del sistema operativo, viene creata un'istanza del file delle impostazioni di configurazione con il contenuto specifico per ogni dispositivo su cui si desidera distribuire il sistema operativo.
{
"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
  • Un modello è richiesto nel livello superiore degli oggetti specifici del server (common=false).

  • Se category è impostato su static, il campo del modello viene ignorato.

tipoObbligatorioStringIl tipo di dati per l'oggetto. É possibile selezionare uno dei seguenti valori.
  • array

  • assoc_array

  • booleano

  • numero intero

  • password

  • stringa

  • user_data

valueopzionaleStringUn singolo valore statico per l'impostazione di configurazione.
Nota
  • Se default è impostato, questo campo può essere vuoto o NULL; in caso contrario, specificare un valore che corrisponda al parametro type.

  • Se type è impostato su password, specificare una stringa non crittografata.

  • Se type è impostato su assoc_array o array, è necessario specificare anche un campo content vuoto.

  • Se type è impostato su user_data, specificare un parametro value valido in formato JSON.

  • Se regex è impostato, questo valore viene convalidato utilizzando l'espressione regolare specificata.

Le seguenti impostazioni di configurazione di esempio definiscono le impostazioni internazionali per le distribuzioni SLES che possono essere aggiunte a un profilo personalizzato.
{
"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"
}
Il seguente esempio rappresenta un'istanza del file delle impostazioni di configurazione creato sul sistema host, una volta definiti i valori immessi dall'utente durante la distribuzione.
{
"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"
}