メインコンテンツまでスキップ

カスタム・マクロ

マクロにより、無人ファイルまたはポスト・インストール・スクリプトに、変数データ (構成設定) を追加できます。Lenovo XClarity Administrator では、JSON 形式を使用してカスタム構成設定ファイルを作成することで、独自のカスタム設定を定義できます。

各カスタム構成設定値は、OS デプロイメント中に指定されたユーザー入力に応じて異なります。

カスタム構成設定を XClarity Administrator にインポートすると、XClarity Administrator によって JSON スキーマが検証されます。検証に合格した場合、XClarity Administrator は設定ごとにカスタム・マクロを生成します。

無人ファイルまたはポスト・インストール・スクリプトにカスタム・マクロを挿入するには、オブジェクトの一意名を使用し、ピリオドでネストされたオブジェクトを分割して、ハッシュ記号 (#) でマクロ名を囲みます。例: #server_settings.server0.locale#

  • 一番上のオブジェクト名を含めないでください。

  • テンプレートからオブジェクトが作成されると、0 から固有番号名が付加されます (例: server0、server1)。

  • 各カスタム設定の隣にある「ヘルプ」アイコン (「ヘルプ」アイコン) にマウスを合わせることで、「OS イメージのデプロイ」ダイアログの「カスタム設定」タブから、各マクロの名前を確認できます。

構成設定

以下のカスタム構成設定を定義できます。
  • すべてのターゲット・サーバーに共通の設定または特定のターゲット・サーバーに固有の設定。

  • 静的 (構成不能) 値、またはOS イメージ・プロファイルのデプロイ時に入力される動的 (構成可能) 値。

  • テンプレートに応じて異なる要素数。たとえば、デプロイメント時に 0 ~ 3 台 NTP サーバーを指定する構成設定を定義できます。

共通設定

OS デプロイメント中に、content オブジェクトに示されたオブジェクトに基づいて、「OS イメージのデプロイ」ダイアログに「共通設定」タブの UI 要素が生成されます。オブジェクトは、すべてのターゲット・サーバーが OS デプロイメントに必要とする設定と値を説明します。

全てのサーバーに共通の設定を示すには、JSON ファイルに親オブジェクトと "common":true 名前/値のペアを含むネストされたオブジェクトが含まれる必要があります。

次の例では、すべてのサーバーに同じ構成可能な (動的) NTP サーバーを使用します。
{
"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"
},
...,
}
次の例では、同じ非構成 (静的) ポスト・インストール・スクリプトのログ・ディレクトリーを使用します。
{
"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"
},
...,
}
サーバー固有設定

OS デプロイメント中に、テンプレートの content オブジェクトに示されたオブジェクトに基づいて、「OS イメージのデプロイ」ダイアログに「サーバー固有設定」タブの UI 要素が生成されます。オブジェクトは、固有のターゲット・サーバーが OS デプロイメントに必要とする設定と値を説明します。

サーバー固有の値が UI に収集された後、template オブジェクトに基づいて、各ターゲット・サーバーの content オブジェクトが JSON で作成されます。各 content オブジェクトには、固有の name および targetServer フィールド、およびそのサーバー用に入力された値が含まれています。

サーバー固有の設定を示すには、JSON ファイルに次の内容を含む親オブジェクトが含まれる必要があります。

  • "category":"dynamic" 名/値のペア。

  • "common":false 名/値のペアを含むネストされたオブジェクト。1 つの "common": false オブジェクトのみが親オブジェクトのコンテンツでサポートされています。

  • 組み込みコンテンツ・オブジェクトを使用するテンプレート・オブジェクト。このテンプレート アレイには、1 つのオブジェクトのみを含めることができます。

たとえば、各ターゲット・サーバーに固有の OS ロケールを定義する場合
{
"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 仕様

次の表では、JSON 仕様で許可されているフィールドについて説明します。

パラメーター必須/オプションタイプ説明
autoCreateInstanceオプションのブールデプロイメント時にテンプレート・オブジェクトのインスタンスが自動的に JSON ファイルで作成されるかどうかを示します。これは以下のいずれかの値です。
  • true。デプロイメント時にテンプレート・オブジェクトのインスタンスが自動的に JSON ファイルで作成されます。
  • false。(デフォルト) デプロイメント時にテンプレート・オブジェクトのインスタンスは自動的に JSON ファイルで作成されません
このフィールドは、テンプレート・オブジェクトにのみ含めることができます。
category必須ストリング各設定の値の入力方法を示します。これは以下のいずれかの値です。
  • dynamic。値はユーザーによって実行時に入力されます。Lenovo XClarity Administrator によって OS デプロイメント中にこの値の入力を求められます。

  • predefined。値は Lenovo XClarity Administrator によって事前設定されます。

  • static。値はスキーマで指定され、実行時に変更されません。

ネストされたオブジェクトは、このフィールドの値を親オブジェクトから継承します。

親オブジェクトで categorystatic に設定されている場合、すべてのネストされたオブジェクトでも static に設定される必要があります。親オブジェクトで categorydynamic に設定されている場合、ネストされたオブジェクトでは static または dynamic のいずれかに設定できます。

choicesオプションのtype プロパティに一致する値の配列ユーザーが OS デプロイメント中に選択できる構成設定の固定値の配列 (文字列または整数など) (例: ["enabled","disabled"])。
commonオプションのブールすべてのターゲット・サーバーにこの構成スキーマが適用されるかどうかを示します。
  • true。オブジェクトはすべてのターゲット・サーバーに適用されます。

  • false。(デフォルト) オブジェクトは特定のターゲット・サーバーに適用されます。

ネストされたオブジェクトは、このフィールドの値を親オブジェクトから継承します。

親オブジェクトで commontrue に設定されている場合、すべてのネストされたオブジェクトでも true に設定される必要があります。親オブジェクトで commonfalse に設定されている場合、すべてのネストされたオブジェクトで false に設定される必要があります。

contentオプションのオブジェクトのアレイスキーマのネストされたオブジェクトを表すパターン。

OS デプロイメント中にユーザー入力データが収集された後、このフィールドは、デプロイメント用に作成された構成設定ファイルのインスタンスの指定されたテンプレートの最終値を示すために使用されます。

defaultオプションの値は type によって異なりますデフォルト値。
descriptionオプションのストリングオブジェクトの説明
labelオプションのストリングOS デプロイメント中に表示されているユーザー・インターフェースの設定のラベル
maxオプションの整数type が整数に設定されている場合の最大値。

デフォルト値は無制限です。

maxElementsオプションの整数このオブジェクトのアレイ内のエントリーの最大数。
minオプションの整数type が整数に設定されている場合の最小値。

デフォルト値は 0 です。

minElementsオプションの整数このオブジェクトのアレイ内のエントリーの最小数。
name必須ストリングオブジェクトの個有名。

この名前は、次の文字のみを含めることができます。英数字 (a ~ z、A ~ Z、および 0 ~ 9)、下線 (_)、ダッシュ (-)。

name は無人ファイルでカスタム・マクロとして参照できます。ネストされた name オブジェクトを参照する場合は、各オブジェクトをピリオドで区切ります (例: mydeploy.node.locale)。

optional必須ブールオブジェクトがオプションであるかどうかを示します。これは以下のいずれかの値です。
  • true。このフィールドはオプションです

  • false。このフィールドは必須です。

regexオプションのストリング値を検証する正規表現 (例: "[\\w\\.]{1,64}$")
scriptオプションのストリングのアレイこのオブジェクトのデータに依存している、コンマで区切ったスクリプトのリスト (例: ["/opt/lenovo/saphana/bin/saphana-create-saphana.sh", "create_hana.sh"])。
スクリプトは、インストール・スクリプトまたはカスタム・ソフトウェアとして OS イメージ・プロファイルで使用できる必要があります。
targetServerオプションのストリングOS デプロイメントのターゲットであるサーバーの UUID。

common が true のばあい、このフィールドは空白または null にして、ターゲット・サーバーを OS デプロイメント中に指定できます。

templateオプションのオブジェクトのアレイ再利用可能なオブジェクトを表すパターン。

OS デプロイメント中に、このテンプレートはオブジェクトの複数のインスタンスを表すことができます。minElements および maxElements フィールドを使用してインスタンス数を制限できます。

次の例では、テンプレートを使用して、1 ~ 3 台の 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"
},
OS デプロイメント中にユーザー入力値が収集された後、OS がデプロイされる各デバイスに固有の内容をもつ構成設定ファイルのインスタンスが作成されます。
{
"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"
}
  • サーバー固有のオブジェクトの最上部ではテンプレートは必須です (common=false)。

  • categorystatic の場合、template フィールドは無視されます。

type必須ストリングオブジェクトのデータ・タイプ。これは以下のいずれかの値です。
  • アレイ (array)

  • assoc_array

  • boolean

  • integer

  • パスワード

  • string

  • user_data

valueオプションのストリング構成設定の単一の固定値。
  • default が設定されている場合、このフィールドは空または null にできます。その他の場合は、type に一致する値を指定します。

  • typepassword の場合、暗号化されていないストリングを指定します。

  • typeassoc_array または array の場合、空の content フィールドも指定する必要があります。

  • typeuser_data の場合、有効な JSON 形式の value を指定します。

  • regex が設定されている場合、この値は指定された正規表現を使用して検証されます。

次の構成設定の例では、カスタム・プロファイルに追加できる SLES デプロイメントのロケール設定を定義します。
{
"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"
}