説明
ACS::Template 操作を使用すると、テンプレートを子テンプレートとして別のテンプレートに埋め込むことができます。 この操作を使用すると、複雑なテンプレートをモジュール化し、テンプレートを呼び出し用に複数の子テンプレートに分割できます。 また、共通の O&M 操作を再利用可能な子テンプレートとして定義することもできます。 さらに、CloudOps Orchestration Service(OOS)は、クラウドプロダクト操作を共通クラウドサービスの操作テンプレートとして提供します。 これらのテンプレートをテンプレートに埋め込むことができます。
構文
テンプレート名を使用して作成済みテンプレートを埋め込む
テンプレートコンテンツを使用して新しいテンプレートを埋め込む
制限
操作の埋め込みには、次の制限があります。
テンプレートは自身を埋め込むことはできません。
ループ埋め込みは許可されていません。たとえば、A が B を埋め込み、B が C を埋め込み、C が A を埋め込むことはできません。
埋め込みレイヤーの合計数は 3 を超えることはできません。
クラウドプロダクト操作の埋め込みは 1 つの埋め込みレイヤーと見なされ、ループタスクは埋め込みと見なされません。
例
ACS::ECS::CreateImage 操作を埋め込んで、Elastic Compute Service(ECS)インスタンスのイメージを作成します。
テンプレートコンテンツに基づいて、指定されたタグが追加されている ECS インスタンスをクエリします。
FormatVersion: OOS-2019-06-01
Description:
name-en: DescribeInstances
Parameters:
regionId:
Label:
en: The ID of region
Type: String
Default: '{{ ACS::RegionId }}'
Tasks:
- Name: describeInstances_out
Action: ACS::Template
Description:
en: Queries the ECS instances by specifying tag
Properties:
TemplateContent:
FormatVersion: OOS-2019-06-01
Description: ''
Parameters:
regionId:
Label:
en: The ID of region
Type: String
Default: '{{ ACS::RegionId }}'
Tasks:
- Name: describeInstances_1
Action: ACS::Template
Description:
en: Queries the ECS instances by specifying tag
Properties:
TemplateContent:
FormatVersion: OOS-2019-06-01
Description: ''
Parameters:
regionId:
Label:
en: The ID of region
Type: String
Default: '{{ ACS::RegionId }}'
Tasks:
- Name: describeInstances_2
Action: ACS::ExecuteAPI
Description:
en: Queries the ECS instances by specifying tag
Properties:
Service: ECS
API: DescribeInstances
Parameters:
RegionId: '{{ regionId }}'
Outputs:
instanceIdss:
Type: List
ValueSelector: Instances.Instance[].InstanceId
Outputs:
instanceId1:
Type: List
Value: '{{ describeInstances_2.instanceIdss}}'
Parameters:
regionId: '{{ regionId }}'
Outputs:
instanceId2:
Type: List
ValueSelector: .instanceId1
Outputs:
instanceId1:
Type: List
Value: '{{ describeInstances_1.instanceId2 }}'
Parameters:
regionId: '{{ regionId }}'
Outputs:
instanceId2:
Type: List
ValueSelector: .instanceId1
Outputs:
instanceId4:
Type: List
Value: '{{ describeInstances_out.instanceId2}}'
{
"FormatVersion": "OOS-2019-06-01",
"Description": {
"name-en": "DescribeInstances",
},
"Parameters": {
"regionId": {
"Label": {
"en": "リージョンの ID",
},
"Type": "String",
"Default": "{{ ACS::RegionId }}"
}
},
"Tasks": [
{
"Name": "describeInstances_out",
"Action": "ACS::Template",
"Description": {
"en": "タグを指定して ECS インスタンスをクエリします。",
},
"Properties": {
"TemplateContent": {
"FormatVersion": "OOS-2019-06-01",
"Description": "",
"Parameters": {
"regionId": {
"Label": {
"en": "リージョンの ID",
},
"Type": "String",
"Default": "{{ ACS::RegionId }}"
}
},
"Tasks": [
{
"Name": "describeInstances_1",
"Action": "ACS::Template",
"Description": {
"en": "タグを指定して ECS インスタンスをクエリします。",
},
"Properties": {
"TemplateContent": {
"FormatVersion": "OOS-2019-06-01",
"Description": "",
"Parameters": {
"regionId": {
"Label": {
"en": "リージョンの ID",
},
"Type": "String",
"Default": "{{ ACS::RegionId }}"
}
},
"Tasks": [
{
"Name": "describeInstances_2",
"Action": "ACS::ExecuteAPI",
"Description": {
"en": "タグを指定して ECS インスタンスをクエリします。",
},
"Properties": {
"Service": "ECS",
"API": "DescribeInstances",
"Parameters": {
"RegionId": "{{ regionId }}"
}
},
"Outputs": {
"instanceIdss": {
"Type": "List",
"ValueSelector": "Instances.Instance[].InstanceId"
}
}
}
],
"Outputs": {
"instanceId1": {
"Type": "List",
"Value": "{{ describeInstances_2.instanceIdss}}"
}
}
},
"Parameters": {
"regionId": "{{ regionId }}"
}
},
"Outputs": {
"instanceId2": {
"Type": "List",
"ValueSelector": ".instanceId1"
}
}
}
],
"Outputs": {
"instanceId1": {
"Type": "List",
"Value": "{{ describeInstances_1.instanceId2 }}"
}
}
},
"Parameters": {
"regionId": "{{ regionId }}"
}
},
"Outputs": {
"instanceId2": {
"Type": "List",
"ValueSelector": ".instanceId1"
}
}
}
],
"Outputs": {
"instanceId4": {
"Type": "List",
"Value": "{{ describeInstances_out.instanceId2}}"
}
}
}