このトピックでは、テンプレート変数に値を割り当てる方法について説明します。
テンプレート変数のデータ型
|
タイプ |
説明 |
|
string |
Elastic Compute Service (ECS) インスタンスの名前。 |
|
integer |
ECS システムディスクのサイズ。 |
|
boolean |
リソースのデプロイメントを無効にするかどうかを示します。 |
|
map |
リソースタグのキーと値のペア。 |
|
list |
ECS インスタンスの IP アドレスホワイトリスト。 |
|
list<map> |
ECS データディスクのリスト。 |
|
charge type |
リソースの課金タイプを指定します。 |
カスタム変数の定義
このセクションでは、ECS テンプレートを使用して、さまざまなデータ型の変数に値を割り当てる方法を説明します。
-
次の図に示すように、ECS テンプレートを作成します。詳細については、「個人用テンプレートの作成」をご参照ください。

-
テンプレートに次の変数を定義します。詳細については、「テンプレート変数の設定」をご参照ください。
パラメーター
値
デフォルト
数量
${count}
1
インスタンス名
${name}
ecs
システムディスクサイズ
${storage}
40
データディスク
${data_disk}
[]
タグ
${tags}
{"cadt":"uat"}
-
設定が完了すると、[マイソリューション] ページで、定義された変数とその型 (整数、文字列、list<map>、マップなど) を確認できます。

グローバルテンプレート変数の定義
このセクションでは、前の例を拡張し、グローバル変数を追加します。テンプレート変数は次のように設定されます。
-
次の図に示すように、ECS テンプレートを作成します。詳細については、「個人用テンプレートの作成」をご参照ください。

-
テンプレートに変数を定義します。詳細については、「テンプレート変数の設定」をご参照ください。カスタム変数設定パネルの [グローバル変数] セクションで、2 つの変数が定義されています。
${sys}(タイプ: 文字列、デフォルト: erp) と${storage}(タイプ: 整数、デフォルト: 100) です。[カスタム変数] セクションでは、変数がリージョンごとに整理されています。各カスタム変数には、名前、プレースホルダー、タイプ、デフォルト値、RefId、およびプロパティ名が含まれます。たとえば、変数${name1}のプレースホルダーは${name1}_${sys}で、RefId 1711695457 に関連付けられ、プロパティ名は instance_name です。変数${disk2}のプレースホルダーは${storage}で、RefId 1711705942 に関連付けられ、プロパティ名は system_disk_size です。カスタム変数のプレースホルダーでグローバル変数を参照して、パラメーターを再利用できます。
Java コードを使用した値の割り当て
Java に精通している場合は、Java コードを使用してテンプレート変数に値を割り当てることができます。次のコードは例です。
variables = Maps.newHashMap();
// インスタンス名を設定します。
variables.put("${name}", "ecs123");
// インスタンス数を設定します。
variables.put("${count}", "1");
// システムディスクのサイズを設定します。
variables.put("${storage}", "40");
// データディスクを設定します。
List<Map<String, String>> disks = Lists.newArrayList();
Map<String, String> disk1 = Maps.newHashMap();
disk1.put("name", "disk1");
disk1.put("size", "50");
disk1.put("category", "cloud_essd");
disk1.put("performance_level", "PL1");
disk1.put("encrypted", "false");
disks.add(disk1);
Map<String, String> disk2 = Maps.newHashMap();
disk2.put("name", "disk2");
disk2.put("size", "60");
disk2.put("category", "cloud_essd");
disk2.put("performance_level", "PL1");
disk2.put("encrypted", "false");
disks.add(disk2);
variables.put("${data_disk}", JSON.toJSONString(disks));
// タグを設定します。
Map<String, String> tags = Maps.newHashMap();
tags.put("role", "dev");
tags.put("project", "abc");
variables.put("${tags}", JSON.toJSONString(tags));
// 変数に値を割り当てた後、次の API オペレーションを呼び出してアプリケーションを作成します。
createApplicationRequest = new CreateApplicationRequest()
.setTemplateId(templateId) // 変数を使用するテンプレートの ID。
.setName(appName) // アプリケーション名。
.setAreaId(region) // テンプレートが配置されているリージョン。
.setVariables(variables) // 変数を渡します。
.setClientToken(UUID.randomUUID().toString());