ファイルベースまたはスクリプトベースのデプロイメントパッケージを作成する際、サービスインスタンスから設定パラメーターをコマンドまたはスクリプトに渡すことができます。
背景情報
サービスインスタンスをデプロイすると、Compute Nest はその入力パラメーターと出力パラメーターを Operation Orchestration Service (OOS) のパラメーター倉庫に保存します。これにより、スクリプト内でこれらのパラメーターを表示、管理、参照することができます。パラメーター倉庫の詳細については、「パラメーター」をご参照ください。
パラメーター参照の構文
ファイルベースまたはスクリプトベースのデプロイメントパッケージを作成する際、コマンド内容フィールドで {{ xxx }} 構文を使用することで、サービスインスタンスからパラメーターを参照できます。Compute Nest は {{ xxx }} 内のプレースホルダーを自動的に識別し、パラメーターの値に置き換えます。
-
入力パラメーターを参照するには、
{{ parameters_xxx }}の形式を使用します。ここで、xxxはテンプレートで定義された入力パラメーターの名前を表します。 -
出力パラメーターを参照するには、
{{ outputs_xxx }}の形式を使用します。ここで、xxxはテンプレートで定義された出力パラメーターの名前を表します。
例
ROS テンプレート
以下のコードは、サービスを作成する際に使用される Resource Orchestration Service (ROS) テンプレートのサンプルです。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
"en": "This template supports single-instance with custom image, including scenarios using existing and creating ECS by prepaid or postpaid model"
},
"Parameters": {
"VpcId": {
"Default": null,
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
"Type": "String",
"Description": {
"en": "Please select the existing VPC. <br><b><font color='blue'>If you can't find the VPC, please switch regions.</font></b>"
},
"Label": {
"en": "Existing VPC ID"
}
}
........
},
"Outputs": {
"InstanceIds": {
"Value": {
"Fn::GetAtt": [
"ECSInstances",
"InstanceIds"
]
}
}
}
........
}
スクリプト内でのパラメーター参照
デプロイメントパッケージを作成する際、サービスインスタンスから VpcId および InstanceIds パラメーターの値を参照するコマンドを入力します。
[Deployment package download directory] を /root に設定し、 [Command type] で [Linux Shell] を選択し、 [Command content field] に以下を入力します。
echo {{parameters_VpcId}}
echo {{outputs_InstanceIds}}
Compute Nest は、 {{parameters_VpcId}} および {{outputs_InstanceIds}} を、サービスインスタンスの実際の値に自動的に置き換えます。たとえば、 VpcId が vpc-bp19b73artdf07gmkxxxx で、 InstanceIds が i-bp1b7gbbybdnvafuxxx の場合、Compute Nest はスクリプトの実行時にプレースホルダーをこれらの値に置き換えます。
その結果、スクリプトは実質的に以下のコマンドを実行します。
echo vpc-bp19b73artdf07gmkxxxx
echo [ "i-bp1b7gbbybdnvafuxxx"]