カスタム・マクロ
マクロにより、無人ファイルまたはポスト・インストール・スクリプトに、変数データ (構成設定) を追加できます。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 ファイルで作成されるかどうかを示します。これは以下のいずれかの値です。
注 このフィールドは、テンプレート・オブジェクトにのみ含めることができます。 | ||
category | 必須 | ストリング | 各設定の値の入力方法を示します。これは以下のいずれかの値です。
ネストされたオブジェクトは、このフィールドの値を親オブジェクトから継承します。 親オブジェクトで category が static に設定されている場合、すべてのネストされたオブジェクトでも static に設定される必要があります。親オブジェクトで category が dynamic に設定されている場合、ネストされたオブジェクトでは static または dynamic のいずれかに設定できます。 | ||
choices | オプションの | type プロパティに一致する値の配列 | ユーザーが OS デプロイメント中に選択できる構成設定の固定値の配列 (文字列または整数など) (例: ["enabled","disabled"])。 | ||
common | オプションの | ブール | すべてのターゲット・サーバーにこの構成スキーマが適用されるかどうかを示します。
ネストされたオブジェクトは、このフィールドの値を親オブジェクトから継承します。 親オブジェクトで common が true に設定されている場合、すべてのネストされたオブジェクトでも true に設定される必要があります。親オブジェクトで common が false に設定されている場合、すべてのネストされたオブジェクトで 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 | 必須 | ブール | オブジェクトがオプションであるかどうかを示します。これは以下のいずれかの値です。
| ||
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 サーバーの配列を表します。
OS デプロイメント中にユーザー入力値が収集された後、OS がデプロイされる各デバイスに固有の内容をもつ構成設定ファイルのインスタンスが作成されます。
注
| ||
type | 必須 | ストリング | オブジェクトのデータ・タイプ。これは以下のいずれかの値です。
| ||
value | オプションの | ストリング | 構成設定の単一の固定値。 注
|
{
"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"
}