テンプレート名
ACS-ECS-UpdateImage
テンプレートの説明
コマンドを実行して、既存の Elastic Compute Service (ECS) イメージを更新することにより、新しい ECS イメージを作成します。これは、アプリケーションのインストールやシステム構成の変更など、ECS イメージを一括で更新および管理する必要があるシナリオに適用されます。構成プロセス中に、次の情報を提供する必要があります。イメージが作成および更新されるリージョンである regionId と、元の ECS イメージ ID である sourceImageId。作成される ECS イメージの名前である targetImageName、インスタンスタイプである instanceType、更新タイプである updateType など、以下のパラメーターを変更できます。テンプレートが実行されると、作成されたイメージの ID が返され、イメージの検証と管理が容易になります。
テンプレートタイプ
自動化
所有者
Alibaba Cloud
入力パラメーター
パラメーター | 説明 | タイプ | 必須 | デフォルト値 | 制限 |
sourceImageId | ソースイメージの ID。 | String | はい | ||
instanceType | ECS インスタンスのインスタンスタイプ。 | String | はい | ||
regionId | リージョン ID。 | String | いいえ | {{ ACS::RegionId }} | |
zoneId | vSwitch がデプロイされているゾーン。 | String | いいえ | "" | |
targetImageName | 新しいイメージの名前。 | String | いいえ | UpdateImage_from_{{sourceImageId}}on{{ACS::ExecutionId}} | |
whetherCreateVpc | 仮想プライベートクラウド (VPC) を作成するかどうかを指定します。 | Boolean | いいえ | False | |
vpcCidrBlock | VPC の IPv4 CIDR ブロック。 | String | いいえ | 192.168.0.0/16 | |
vSwitchCidrBlock | vSwitch の CIDR ブロック。 | String | いいえ | 192.168.1.0/24 | |
securityGroupId | セキュリティグループ ID。 | String | いいえ | "" | |
vSwitchId | vSwitch ID。 | String | いいえ | "" | |
internetMaxBandwidthOut | パブリック帯域幅。 | Number | いいえ | 0 | |
ramRoleName | ECS インスタンスに割り当てられている Resource Access Management (RAM) ロール。 | String | いいえ | "" | |
systemDiskCategory | システムディスクのカテゴリ。 | String | いいえ | cloud_essd | |
commandType | クラウドアシスタントコマンドのタイプ。 | String | いいえ | RunShellScript | |
tags | イメージのタグ。 | Json | いいえ | [] | |
commandContent | ECS インスタンスで実行されるクラウドアシスタントコマンド。 | String | いいえ | echo hello | |
timeout | タイムアウト期間。 | Number | いいえ | 600 | |
updateType | イメージの更新に使用されるメソッド。 | String | いいえ | RunCommand | |
packageName | インストールされるソフトウェアパッケージの名前。 | String | いいえ | "" | |
packageVersion | インストールされるソフトウェアパッケージのバージョン。 | String | いいえ | "" | |
parameters | コマンドのパラメーター。 | Json | いいえ | {} | |
OOSAssumeRole | CloudOps Orchestration Service (OOS) によって引き受けられる RAM ロール。 | String | いいえ | "" |
出力パラメーター
パラメーター | 説明 | タイプ |
imageId | String |
テンプレートを実行するために必要な権限ポリシー
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:CreateImage",
"ecs:DeleteInstance",
"ecs:DescribeCloudAssistantStatus",
"ecs:DescribeImages",
"ecs:DescribeInstances",
"ecs:DescribeInvocationResults",
"ecs:DescribeInvocations",
"ecs:InstallCloudAssistant",
"ecs:RebootInstance",
"ecs:RunCommand",
"ecs:RunInstances",
"ecs:StopInstance"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ros:CreateStack",
"ros:DeleteStack",
"ros:GetStack"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oos:GetTemplate",
"oos:UpdateInstancePackageState"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oss:GetObject"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
参照
詳細については、GitHub の ACS-ECS-UpdateImage.yml をご参照ください。
テンプレートコンテンツ
FormatVersion: OOS-2019-06-01
Description:
en: en: 'Update an existing ECS image by running commands and create a new ECS image. This is applicable to scenarios requiring batch updates and management of ECS images, such as software installation and system configuration changes. During configuration, users need to provide the following required parameters: Region ID (regionId), which specifies the region where the image update and creation operations occur, and Source Image ID (sourceImageId), which identifies the original ECS image that needs updating. Additional parameters that can be modified from their default values include the following: Target Image Name (targetImageName) for naming the newly created ECS image, Instance Type (instanceType) for the type of instance to install and configure the new image on, and Update Type (updateType), which can be selected to either run commands or install packages. Upon execution, the template will return the ID of the newly created image, facilitating the verification and management of the created ECS image.'
zh-cn: 中国語の説明
name-en: Update Image
name-zh-cn: 中国語の説明
categories:
- image_manage
- application_manage
Parameters:
regionId:
Type: String
Label:
en: RegionId
zh-cn: 中国語の説明
AssociationProperty: RegionId
Default: '{{ ACS::RegionId }}'
zoneId:
Type: String
Label:
en: VSwitch Availability Zone
zh-cn: 中国語の説明
Default: ''
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
AssociationPropertyMetadata:
RegionId: regionId
targetImageName:
Label:
en: TargetImageName
zh-cn: 中国語の説明
Type: String
Description:
en: <p class="p">注:</p> <ul class="ul"> <li class="li">長さは 2 ~ 128 の英数字または中国語の文字です</li> <li class="li"><font color='red'>大文字または小文字または中国語で始める必要があります。http:// および https:// は使用できません。</font></li> <li class="li">数字、コロン(:)、アンダースコア(_)、またはダッシュ(-)を含めることができます。</li> </ul>
zh-cn: 中国語の説明 </li> </ul>
Default: 'UpdateImage_from_{{sourceImageId}}_on_{{ACS::ExecutionId}}'
sourceImageId:
Label:
en: SourceImageId
zh-cn: 中国語の説明
Type: String
AssociationProperty: 'ALIYUN::ECS::Image::ImageId'
AssociationPropertyMetadata:
RegionId: regionId
ImageOwnerAlias:
- self
instanceType:
Label:
en: InstanceType
zh-cn: 中国語の説明
Type: String
AssociationProperty: 'ALIYUN::ECS::Instance::InstanceType'
AssociationPropertyMetadata:
RegionId: regionId
ZoneId: zoneId
whetherCreateVpc:
Type: Boolean
Label:
en: WhetherCreateVpc
zh-cn: 中国語の説明
Default: false
vpcCidrBlock:
Type: String
Label:
en: VPC CIDR IPv4 Block
zh-cn: 中国語の説明
Description:
zh-cn: 中国語の説明
en: 'VPC の IP アドレス範囲(CidrBlock 形式)。<br>次の IP アドレス範囲とそのサブネットを使用できます。<br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>'
Default: 192.168.0.0/16
AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${whetherCreateVpc}
- true
vSwitchCidrBlock:
Type: String
Label:
en: VSwitch CIDR Block
zh-cn: 中国語の説明
Description:
zh-cn: 中国語の説明
en: VPC のサブネットセグメントに属している必要があります
Default: 192.168.1.0/24
AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
AssociationPropertyMetadata:
VpcCidrBlock: vpcCidrBlock
Visible:
Condition:
Fn::Equals:
- ${whetherCreateVpc}
- true
securityGroupId:
Label:
en: SecurityGroupId
zh-cn: 中国語の説明
Type: String
Default: ''
AssociationProperty: 'ALIYUN::ECS::SecurityGroup::SecurityGroupId'
AssociationPropertyMetadata:
RegionId: regionId
Visible:
Condition:
Fn::Equals:
- ${whetherCreateVpc}
- false
vSwitchId:
Label:
en: VSwitchId
zh-cn: 中国語の説明
Type: String
Default: ''
AssociationProperty: 'ALIYUN::VPC::VSwitch::VSwitchId'
AssociationPropertyMetadata:
RegionId: regionId
ZoneId: zoneId
Filters:
- SecurityGroupId: securityGroupId
Visible:
Condition:
Fn::Equals:
- ${whetherCreateVpc}
- false
internetMaxBandwidthOut:
Type: Number
Label:
zh-cn: 中国語の説明
en: Internet Max Bandwidth Out
Description:
zh-cn: 中国語の説明
en: ゼロの場合はパブリック IP なし
Default: 0
MinValue: 0
MaxValue: 100
ramRoleName:
Label:
en: RamRoleName
zh-cn: 中国語の説明
Type: String
AssociationProperty: ALIYUN::ECS::RAM::Role
Default: ''
systemDiskCategory:
Label:
en: SystemDiskCategory
zh-cn: 中国語の説明
Type: String
AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
AssociationPropertyMetadata:
RegionId: regionId
InstanceType: instanceType
Default: cloud_essd
commandType:
Label:
en: CommandType
zh-cn: 中国語の説明
Type: String
AssociationPropertyMetadata:
LocaleKey: PricingCycle
Visible:
Condition:
Fn::Equals:
- ${updateType}
- RunCommand
AllowedValues:
- RunBatScript
- RunPowerShellScript
- RunShellScript
Default: RunShellScript
tags:
Label:
en: Tags
zh-cn: 中国語の説明
Type: Json
AssociationProperty: Tags
AssociationPropertyMetadata:
ShowSystem: false
Default: []
commandContent:
Label:
en: CommandContent
zh-cn: 中国語の説明
Type: String
AssociationProperty: Code
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${updateType}
- RunCommand
Default: 'echo hello'
timeout:
Label:
en: Timeout
zh-cn: 中国語の説明
Type: Number
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Equals:
- ${updateType}
- RunCommand
Default: 600
updateType:
Label:
en: UpdateType
zh-cn: 中国語の説明
Type: String
AllowedValues:
- RunCommand
- InstallPackage
Default: RunCommand
AssociationPropertyMetadata:
ValueLabelMapping:
RunCommand:
zh-cn: 中国語の説明
en: RunCommand
InstallPackage:
zh-cn: 中国語の説明
en: InstallPackage
packageName:
Label:
en: packageName
zh-cn: 中国語の説明
Type: String
Default: ''
AssociationProperty: 'ALIYUN::OOS::Package::PackageName'
AssociationPropertyMetadata:
RegionId: regionId
Visible:
Condition:
Fn::Equals:
- ${updateType}
- InstallPackage
packageVersion:
Label:
en: packageVersion
zh-cn: 中国語の説明
Type: String
AssociationProperty: 'ALIYUN::OOS::Package::PackageVersion'
AssociationPropertyMetadata:
TemplateName: ${packageName}
Visible:
Condition:
Fn::Equals:
- ${updateType}
- InstallPackage
Default: ''
parameters:
Label:
en: Parameters
zh-cn: 中国語の説明
Type: Json
Default: {}
AssociationProperty: TemplateParameter
AssociationPropertyMetadata:
TemplateName: packageName
TemplateVersion: packageVersion
TemplateType: Package
Visible:
Condition:
Fn::Equals:
- ${updateType}
- InstallPackage
OOSAssumeRole:
Label:
en: OOSAssumeRole
zh-cn: 中国語の説明
Type: String
Default: ''
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: checkNewImageName
Action: ACS::CheckFor
Description:
en: Check image name is available
zh-cn: 中国語の説明
Properties:
Service: ECS
API: DescribeImages
Parameters:
RegionId: '{{ regionId }}'
ImageName: '{{ targetImageName }}'
DesiredValues:
- 0
PropertySelector: TotalCount
- Name: createStack
Action: 'ACS::ExecuteAPI'
When:
Fn::Equals:
- '{{ whetherCreateVpc }}'
- true
Description:
en: Create a resource stack
zh-cn: 中国語の説明
Properties:
Service: ROS
API: CreateStack
Parameters:
RegionId: '{{ regionId }}'
StackName: 'OOS-{{ACS::ExecutionId}}'
TimeoutInMinutes: 10
DisableRollback: false
Parameters:
- ParameterKey: ZoneId
ParameterValue: '{{ zoneId }}'
- ParameterKey: VpcCidrBlock
ParameterValue: '{{ vpcCidrBlock }}'
- ParameterKey: VSwitchCidrBlock
ParameterValue: '{{ vSwitchCidrBlock }}'
TemplateBody: |
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ZoneId:
Type: String
VpcCidrBlock:
Type: String
VSwitchCidrBlock:
Type: String
Resources:
EcsVpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock:
Ref: VpcCidrBlock
VpcName:
Ref: ALIYUN::StackName
EcsVSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: EcsVpc
CidrBlock:
Ref: VSwitchCidrBlock
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Ref: EcsVpc
Outputs:
SecurityGroupId:
Value:
Ref: EcsSecurityGroup
VSwitchId:
Value:
Ref: EcsVSwitch
Outputs:
StackId:
Type: String
ValueSelector: StackId
- Name: untilStackReady
Action: 'ACS::WaitFor'
When:
Fn::Equals:
- '{{ whetherCreateVpc }}'
- true
Description:
en: Wait for the stack status CREATE_COMPLETE
zh-cn: 中国語の説明
OnError: deleteStack
Properties:
Service: ROS
API: GetStack
Parameters:
RegionId: '{{ regionId }}'
StackId: '{{createStack.StackId}}'
DesiredValues:
- CREATE_COMPLETE
StopRetryValues:
- CREATE_FAILED
- CHECK_FAILED
- ROLLBACK_FAILED
- ROLLBACK_COMPLETE
- CREATE_ROLLBACK_COMPLETE
PropertySelector: Status
Outputs:
securityGroupId:
Type: String
ValueSelector: 'Outputs[0].OutputValue'
vSwitchId:
Type: String
ValueSelector: 'Outputs[1].OutputValue'
- Name: runInstances
Action: ACS::ECS::RunInstances
Description:
en: Create a ECS instance with source image
zh-cn: 中国語の説明
OnError: deleteStack
Properties:
regionId: '{{ regionId }}'
imageId: '{{ sourceImageId }}'
instanceType: '{{ instanceType }}'
securityGroupId:
Fn::If:
- Fn::Equals:
- '{{ whetherCreateVpc }}'
- true
- '{{ untilStackReady.securityGroupId }}'
- '{{ securityGroupId }}'
vSwitchId:
Fn::If:
- Fn::Equals:
- '{{ whetherCreateVpc }}'
- true
- '{{ untilStackReady.vSwitchId }}'
- '{{ vSwitchId }}'
internetMaxBandwidthOut: '{{ internetMaxBandwidthOut }}'
ramRoleName: '{{ ramRoleName }}'
systemDiskCategory: '{{ systemDiskCategory }}'
Outputs:
instanceId:
ValueSelector: instanceIds[0]
Type: String
- Name: installCloudAssistant
Action: ACS::ECS::InstallCloudAssistant
Description:
en: Install cloud assistant for ECS instance
zh-cn: 中国語の説明
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ runInstances.instanceId }}'
- Name: runCommand
Action: ACS::ECS::RunCommand
When:
Fn::Equals:
- '{{ updateType }}'
- RunCommand
Description:
en: Run cloud assistant command on ECS instance
zh-cn: 中国語の説明
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
commandContent: '{{ commandContent }}'
commandType: '{{ commandType }}'
instanceId: '{{ runInstances.instanceId }}'
timeout: '{{ timeout }}'
- Name: configurePackage
Action: ACS::ECS::ConfigureOOSPackageWithTemporaryURL
Description:
en: Configure Package
zh-cn: 中国語の説明
When:
Fn::Equals:
- '{{ updateType }}'
- InstallPackage
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ runInstances.instanceId }}'
packageName: '{{ packageName }}'
packageVersion: '{{ packageVersion }}'
parameters: '{{ parameters }}'
Outputs:
commandOutput:
Type: String
ValueSelector: .commandOutput
- Name: stopInstance
Action: ACS::ECS::StopInstance
Description:
en: Stops the ECS instance
zh-cn: 中国語の説明
Properties:
regionId: '{{ regionId }}'
instanceId: '{{ runInstances.instanceId }}'
- Name: createImage
Action: ACS::ECS::CreateImage
Description:
en: Create new image with the specified image name and instance ID
zh-cn: 中国語の説明
OnError: deleteInstance
Properties:
regionId: '{{ regionId }}'
imageName: '{{ targetImageName }}'
instanceId: '{{ runInstances.instanceId }}'
tags: '{{tags}}'
Outputs:
imageId:
ValueSelector: imageId
Type: String
- Name: deleteInstance
Action: ACS::ExecuteAPI
Description:
en: Deletes the ECS instance
zh-cn: 中国語の説明
Properties:
Service: ECS
API: DeleteInstance
Risk: Normal
Parameters:
RegionId: '{{ regionId }}'
InstanceId: '{{ runInstances.instanceId }}'
Force: true
- Name: deleteStack
Action: 'ACS::ExecuteApi'
When:
Fn::Equals:
- '{{ whetherCreateVpc }}'
- true
Description:
en: Delete the stack
zh-cn: 中国語の説明
Properties:
Service: ROS
API: DeleteStack
Parameters:
RegionId: '{{ regionId }}'
StackId: '{{ createStack.StackId }}'
Outputs:
imageId:
Type: String
Value: '{{ createImage.imageId }}'
Metadata:
ALIYUN::OOS::Interface:
ParameterGroups:
- Parameters:
- regionId
- sourceImageId
Label:
default:
zh-cn: 中国語の説明
en: Select Origin Image
- Parameters:
- targetImageName
- tags
Label:
default:
zh-cn: 中国語の説明
en: Image Configure
- Parameters:
- zoneId
- instanceType
- whetherCreateVpc
- vpcCidrBlock
- vSwitchCidrBlock
- securityGroupId
- vSwitchId
- internetMaxBandwidthOut
- systemDiskCategory
- ramRoleName
Label:
default:
zh-cn: 中国語の説明
en: ECS Instance Configure
- Parameters:
- updateType
- packageName
- packageVersion
- parameters
- commandType
- commandContent
- timeout
Label:
default:
zh-cn: 中国語の説明
en: Update Image Configuration
- Parameters:
- OOSAssumeRole
Label:
default:
zh-cn: 中国語の説明
en: Control Options