Todos os produtos
Search
Central de documentação

CloudOps Orchestration Service:ACS-ECS-RepairImage

Última atualização: Sep 12, 2026

Nome do modelo

ACS-ECS-RepairImage - Repara uma imagem

Execute Now

Descrição do modelo

Repara uma imagem offline com base nos resultados da verificação de imagem. Para obter mais informações sobre verificações de imagem, consulte Image check overview. Durante o reparo, o sistema cria uma instância do Elastic Compute Service (ECS) a partir de uma imagem do Alibaba Cloud Linux, gera um snapshot da imagem a ser reparada e anexa um disco criado a partir desse snapshot à instância ECS. O disco de dados passa por reparo offline e uma nova imagem é criada a partir dele. Se a imagem source for pública, como Ubuntu 22.04 64-bit, a imagem resultante será personalizada, como ubuntu_64-bit.

Tipo de modelo

Automatizado

Proprietário

Alibaba Cloud

Parâmetros de entrada

Parâmetro

Descrição

Tipo

Obrigatório

Valor padrão

Limite

zoneId

Zona do vSwitch

String

Sim

repairImageId

ID da imagem a ser reparada.

String

Sim

baseImageId

Imagem base

String

Sim

instanceType

Tipo da instância ECS.

String

Sim

securityGroupId

ID do grupo de segurança.

String

Sim

vSwitchId

vSwitch

String

Sim

regionId

ID da região.

String

Não

{{ ACS::RegionId }}

systemDiskCategory

Categoria do disco do sistema.

String

Não

cloud_essd

repairItems

Itens a serem reparados.

List

Não

['assist', 'cloudinit', 'virtio', 'nvme', 'fstab', 'grub', 'dhcp', 'growpart']

Parâmetros de saída

Parâmetro

Descrição

Tipo

imageId

String

Política de permissões necessária para executar o modelo

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:CreateImage",
                "ecs:CreateSnapshot",
                "ecs:DeleteInstance",
                "ecs:DeleteSnapshot",
                "ecs:DescribeDisks",
                "ecs:DescribeImages",
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:DescribeSnapshots",
                "ecs:InvokeCommand",
                "ecs:RebootInstance",
                "ecs:RunCommand",
                "ecs:RunInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Detalhes

Para mais informações, consulte ACS-ECS-RepairImage.yml no GitHub.

Conteúdo do modelo

FormatVersion: OOS-2019-06-01
Description:
  zh-cn: This template repairs an image offline based on image check results. For more information about image checks, see https://www.alibabacloud.com/help/zh/ecs/user-guide/overview-18. The repair process first creates a repair instance from an Alibaba Cloud Linux image. It then creates a disk from a snapshot of your image and attaches the disk to the repair instance. After the data disk is repaired offline, a new image is created from the repaired data disk. Limitation: If the source image is a public image, such as Ubuntu 22.04 64-bit, the repaired image is a custom image, such as ubuntu_64-bit.
  en: This template repairs an image offline based on image check results. For more information about image checks, see https://www.alibabacloud.com/help/en/ecs/user-guide/overview-18. The repair process creates a repair instance from an Alibaba Cloud Linux image. It then creates a disk from a snapshot of your image and attaches it to the repair instance. After the data disk is repaired offline, a new image is created from the repaired data disk.
  name-en: ACS-ECS-RepairImage
  name-zh-cn: Repair Image
  categories:
    - image_manage
Parameters:
  regionId:
    Type: String
    Label:
      en: Region ID
      zh-cn: Region ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  zoneId:
    Type: String
    Label:
      en:  vSwitch Zone
      zh-cn: vSwitch Zone
    AssociationProperty: ALIYUN::ECS::ZoneId
    AssociationPropertyMetadata:
      RegionId: regionId
  repairImageId:
    Type: String
    Label:
      en: ID of Image to Repair
      zh-cn: ID of Image to Repair
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    AssociationPropertyMetadata:
      RegionId: regionId
      SupportedImageOwnerAlias:
        - self
      OSType: linux
  baseImageId:
    Type: String
    Label:
      en: Base Image
      zh-cn: Base Image
    Description:
      en: '<font color=''red''>The base image is used to create the repair instance. Select a base image that has the same architecture as the target image. For example, if the custom image to repair is an x86_64 image, select an aliyun_3_x64 image.</font>'
      zh-cn: <font color='red'>The base image is used to create the repair instance. Select a base image that has the same architecture as the target image. For example, if the custom image to repair is an x86_64 image, select an aliyun_3_x64 image.</font>
    AllowedValues:
      - aliyun_3_x64_20G_alibase_20250629.vhd
      - aliyun_3_arm64_20G_alibase_20250629.vhd
  instanceType:
    Label:
      en: Instance Type
      zh-cn: Instance Type
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
  securityGroupId:
    Label:
      en: Security Group ID
      zh-cn: Security Group ID
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      RegionId: regionId
  vSwitchId:
    Label:
      en: vSwitch ID
      zh-cn: vSwitch ID
    Type: String
    AssociationProperty: ALIYUN::VPC::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      RegionId: regionId
      ZoneId: zoneId
      Filters:
        - SecurityGroupId: securityGroupId
  systemDiskCategory:
    Label:
      en: System Disk Category
      zh-cn: System Disk Category
    Type: String
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      RegionId: regionId
      InstanceType: instanceType
    Default: cloud_essd
  repairItems:
    Label:
      en: Items to Repair
      zh-cn: Items to Repair
    Type: List
    AllowedValues:
      - all
      - assist
      - aegis
      - growpart
      - virtio
      - selinux
      - dhcp
      - grub
      - fstab
      - nvme
      - cloudinit
    Default:
      - assist
      - cloudinit
      - virtio
      - nvme
      - fstab
      - grub
      - dhcp
      - growpart
Tasks:
  - Name: checkImage
    Action: ACS::CheckFor
    Description:
      en: Checks if the image can be repaired.
      zh-cn: Checks if the image can be repaired.
    Properties:
      Service: ECS
      API: DescribeImages
      PropertySelector: Images.Image[0].DetectionOptions.Items.Item[]? | select(.Name == "SystemImage") | .Value
      DesiredValues: []
      Parameters:
        RegionId: '{{ regionId }}'
        ImageId: '{{ repairImageId }}'
      NotDesiredValues:
        - Invalid
    Outputs:
      architecture:
        Type: String
        ValueSelector: Images.Image[0].Architecture
      snapshotId:
        Type: String
        ValueSelector: Images.Image[0].DiskDeviceMappings.DiskDeviceMapping[0].SnapshotId
      imageName:
        Type: String
        ValueSelector: Images.Image[0].ImageName
      osType:
        Type: String
        ValueSelector: Images.Image[0].OSType
      platform:
        Type: String
        ValueSelector: Images.Image[0].Platform
      bootMode:
        Type: String
        ValueSelector: Images.Image[0].BootMode
  - Name: checkImageArchitecture
    Action: ACS::Choice
    Description:
      en: Checks if the image architecture is x86_64 or arm64.
      zh-cn: Checks if the image architecture is x86_64 or arm64.
    Properties:
      DefaultTask: ACS::END
      Choices:
        - When:
            Fn::Or:
              - Fn::Equals:
                  - x86_64
                  - '{{checkImage.architecture}}'
              - Fn::Equals:
                  - arm64
                  - '{{checkImage.architecture}}'
          NextTask: runInstances
  - Name: runInstances
    Action: ACS::ExecuteAPI
    Description:
      en: Creates an ECS instance.
      zh-cn: Creates an ECS instance.
    Properties:
      Service: ECS
      API: RunInstances
      Parameters:
        RegionId: '{{ regionId }}'
        Amount: 1
        ImageId: '{{ baseImageId }}'
        InstanceType: '{{ instanceType }}'
        InstanceName: image_repair_please_no_delete
        SecurityGroupId: '{{ securityGroupId }}'
        VSwitchId: '{{ vSwitchId }}'
        InternetMaxBandwidthIn: 200
        InternetMaxBandwidthOut: 0
        SystemDiskCategory: '{{ systemDiskCategory }}'
        DataDisk:
          - SnapshotId: '{{ checkImage.snapshotId }}'
            DiskName: image_repair_{{ checkImage.snapshotId }}
            Category: '{{ systemDiskCategory }}'
        InstanceChargeType: PostPaid
    Outputs:
      instanceId:
        Type: String
        ValueSelector: InstanceIdSets.InstanceIdSet[0]
  - Name: untilInstanceReady
    Action: ACS::WaitFor
    Description:
      en: Waits for the instance to enter the Running state.
      zh-cn: Waits for the instance to enter the Running state.
    Properties:
      Service: ECS
      API: DescribeInstances
      PropertySelector: Instances.Instance[0].Status
      DesiredValues:
        - Running
      NotDesiredValues: []
      StopRetryValues: []
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceIds:
          - '{{ runInstances.instanceId }}'
    Retries: 10
    DelayType: Exponential
    Delay: 2
    BackOff: 2
  - Name: checkForCreatedDiskReady
    Action: ACS::CheckFor
    Description:
      en: Checks if the disk is in the In_use state.
      zh-cn: Checks if the disk is in the In_use state.
    OnError: stopInstances
    Properties:
      Service: ECS
      API: DescribeDisks
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ runInstances.instanceId }}'
      DesiredValues:
        - In_use
      PropertySelector: Disks.Disk[0].Status
    Outputs:
      diskSN:
        Type: String
        ValueSelector: Disks.Disk[0].SerialNumber
      diskId:
        Type: String
        ValueSelector: Disks.Disk[0].DiskId
  - Name: runCommandOpenselinux
    Action: ACS::ECS::RunCommand
    Description:
      en: Runs a command on the instance.
      zh-cn: Runs a command on the instance.
    OnError: stopInstances
    Properties:
      regionId: '{{ regionId }}'
      commandContent: sed -i s/^SELINUX=.*/SELINUX=permissive/g /etc/selinux/config
      commandType: RunShellScript
      instanceId: '{{ runInstances.instanceId }}'
    Outputs:
      invocationOutput:
        Type: String
        ValueSelector: invocationOutput
  - Name: rebootInstance
    Action: ACS::ECS::RebootInstance
    Description:
      en: Reboots the instance.
      zh-cn: Reboots the instance.
    OnError: stopInstances
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ runInstances.instanceId }}'
  - Name: runCommand
    Action: ACS::ECS::InvokeCommand
    Description:
      en: Runs a command on the instance.
      zh-cn: Runs a command on the instance.
    OnError: stopInstances
    Properties:
      regionId: '{{ regionId }}'
      commandId: ACS-ECS-ImageRepair-for-linux.sh
      parameters:
        Fn::Join:
          - ''
          - - '{"repairitems":'
            - '"'
            - Fn::Join:
                - ' '
                - '{{repairItems}}'
            - '"'
            - ',"disk_serial":"'
            - '{{checkForCreatedDiskReady.diskSN}}'
            - '"}'
      instanceId: '{{ runInstances.instanceId }}'
    Outputs:
      invocationOutput:
        Type: String
        ValueSelector: invocationOutput
  - Name: waitDiskFlush
    Action: ACS::Sleep
    Description:
      en: Waits for I/O operations to be written to the disk.
      zh-cn: Waits for I/O operations to be written to the disk.
    Properties:
      Duration: 1M
  - Name: createSnapshot
    Action: ACS::ECS::CreateSnapshot
    Description:
      en: Creates a snapshot for the disk.
      zh-cn: Creates a snapshot for the disk.
    OnError: deleteInstance
    Properties:
      regionId: '{{ regionId }}'
      snapshotName: image_repair_{{ checkForCreatedDiskReady.diskId }}
      diskId: '{{ checkForCreatedDiskReady.diskId }}'
      retentionDays: 1
    Outputs:
      snapshotId:
        Type: String
        ValueSelector: snapshotId
  - Name: createImage
    Action: ACS::ExecuteAPI
    Description:
      en: Creates an image from the snapshot.
      zh-cn: Creates an image from the snapshot.
    OnError: deleteSnapshot
    OnSuccess: deleteInstance
    Properties:
      Service: ECS
      API: CreateImage
      Parameters:
        RegionId: '{{ regionId }}'
        SnapshotId: '{{ createSnapshot.snapshotId }}'
        ImageName:
          Fn::Join:
            - _
            - - repaired
              - '{{ checkImage.imageName }}'
              - Fn::FormatUTCTime:
                  - '{{ACS::CurrentUTCTime}}'
                  - '%Y%m%d%H%M%S'
        DetectionStrategy: Standard
        Platform:
          Fn::Select:
            - '{{ checkImage.platform }}'
            - Aliyun: Aliyun
              Anolis: Anolis
              CentOS: CentOS
              Ubuntu: Ubuntu
              SUSE: SUSE
              Debian: Debian
              OpenSUSE: OpenSUSE
              Red Hat: RedHat
              Kylin: Kylin
              UOS: UOS
              Fedora: Fedora
              CentOS Stream: CentOS Stream
              AlmaLinux: AlmaLinux
              Rocky Linux: Rocky Linux
              Customized Linux: Customized Linux
              Others Linux: Others Linux
        BootMode: '{{ checkImage.bootMode }}'
        Architecture: '{{ checkImage.architecture }}'
    Outputs:
      imageId:
        Type: String
        ValueSelector: ImageId
  - Name: deleteSnapshot
    Action: ACS::ExecuteAPI
    Description:
      en: Releases the snapshot.
      zh-cn: Releases the snapshot.
    OnError: deleteInstance
    Properties:
      Service: ECS
      API: DeleteSnapshot
      Parameters:
        RegionId: '{{ regionId }}'
        SnapshotId: '{{ createSnapshot.snapshotId }}'
        Force: true
  - Name: stopInstances
    Action: ACS::Sleep
    Description:
      en: Waits for the instance protection to expire.
      zh-cn: Waits for the instance protection to expire.
    Properties:
      Duration: 1M
  - Name: deleteInstance
    Action: ACS::ExecuteAPI
    Description:
      en: Releases the ECS instance.
      zh-cn: Releases the ECS instance.
    Properties:
      Service: ECS
      API: DeleteInstance
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ runInstances.instanceId }}'
        Force: true
Outputs:
  imageId:
    Type: String
    Value: '{{ createImage.imageId }}'
Metadata:
  ALIYUN::OOS::Interface:
    ParameterGroups:
      - Parameters:
          - regionId
          - repairImageId
          - baseImageId
        Label:
          default:
            zh-cn: Select Image
            en: Select Image
      - Parameters:
          - zoneId
          - instanceType
          - securityGroupId
          - vSwitchId
          - systemDiskCategory
        Label:
          default:
            zh-cn: Instance Configurations
            en: Instance Configurations
      - Parameters:
          - repairItems
        Label:
          default:
            zh-cn: Run Command
            en: Run Command