运维编排场景系列--- 批量复制镜像到其他地域

本文涉及的产品
系统运维管理,不限时长
简介: 背景和痛点 应用分布在多地域部署时,如需把一个镜像复制到多个地域(Region),当前您极可能是在控制台手动选择源镜像,然后逐个选择目的地域并进行复制镜像操作,再等待和查看所有地域的镜像复制完成。如此操作费时费力,而且容易出错。

背景和痛点

应用分布在多地域部署时,如需把一个镜像复制到多个地域(Region),当前您极可能是在控制台手动选择源镜像,然后逐个选择目的地域并进行复制镜像操作,再等待和查看所有地域的镜像复制完成。如此操作费时费力,而且容易出错。

解决方案

通过运维编排服务OOS,创建一个复制镜像到多地域模版的执行,一键即可助您完成向多地域复制镜像,精准便捷。
您只需选择一个源镜像(待复制的镜像),选择要复制到的目的地域(或者直接选择所有地域),然后单击创建执行就可完成镜像复制到多个地域。您也可结合实际场景重定义OOS模板,如此甚至可免去选择目的地域这一步。

操作步骤

  1. 首先登录到运维编排控制台 。
  2. 单击公共模版
  3. 选择批量跨地域克隆镜像(ACS-ECS-BulkyCopyImage)模版,单击创建执行 。
  4. 单击 下一步,设置参数 。
  5. 输入以下的参数 。

    • ImageId: 待复制的源镜像ID。
    • targetRegionIds:将要复制到的目的地域(region)ID。可自行指定多个目的地域(region),表示复制镜像到被选中的目的地域;也可只选择"all-regions",表示复制镜像到所有阿里云可用地域。
    • rateControl:模版中循环任务的并发及容错设置选项。
    • OOSAssumeRole:可选参数。OOS默认使用当前登录用户的权限执行动作;如果指定了RAM角色名称,OOS扮演该RAM角色执行动作。

      20191025175521
  6. 单击 下一步,确认 ,并单击 创建执行 。
  7. 执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于运行中,则表示镜像正在复制中。

    oos
  8. 当执行状态转换为成功时,则表示镜像复制成功,可在执行详情中查看目的地域新镜像ID。

    oos
  9. 打开目的地域控制台,可在镜像列表中查看到复制成功的新镜像。
    oos

oos
oos

附录:公共模版及其逻辑

  • 批量跨地域克隆镜像模板内容
FormatVersion: OOS-2019-06-01
Description:
  en: Cross Regions copy image.
  zh-cn: 批量跨地域克隆镜像。
  name-en: ACS-ECS-BulkyCopyImage
  name-zh-cn: 批量跨地域克隆镜像
  categories:
    - image_manage
Parameters:
  imageId:
    Description:
      en: The ID of the image to clone.
      zh-cn: 源镜像ID。
    Type: String
    AssociationProperty: 'ALIYUN::ECS::Image::ImageId'
  targetRegionIds:
    Description:
      en: The Target Region Ids.
      zh-cn: 目标地域ID。
    Type: List
    AllowedValues:
      - all-regions
      - cn-qingdao
      - cn-beijing
      - cn-zhangjiakou
      - cn-huhehaote
      - cn-hangzhou
      - cn-shanghai
      - cn-shenzhen
      - cn-chengdu
      - cn-hongkong
      - ap-northeast-1
      - ap-southeast-1
      - ap-southeast-2
      - ap-southeast-3
      - ap-southeast-5
      - ap-south-1
      - us-east-1
      - us-west-1
      - eu-west-1
      - me-east-1
      - eu-central-1
    Default:
      - all-regions
  rateControl:
    Description:
      en: Concurrency rate of task execution.
      zh-cn: 任务执行的并发比率。
    Type: Json
    AssociationProperty: RateControl
    Default:
      Mode: Concurrency
      MaxErrors: 0
      Concurrency: 15
  OOSAssumeRole:
    Description:
      en: The RAM role to be assumed by OOS.
      zh-cn: OOS扮演的RAM角色。
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
  - Name: queryAllAvailableRegions
    Action: 'ACS::ExecuteAPI'
    Description:
      en: View all available regions.
      zh-cn: 查询当前所有可用地域。
    Properties:
      Service: ECS
      API: DescribeRegions
      Parameters:
        RegionId: '{{ACS::RegionId}}'
    Outputs:
      regionIds:
        Type: List
        ValueSelector: >-
          Regions.Region[]|.RegionId|select([scan("{{ACS::RegionId}}|test")]|length<1)
      allRegionsChosen:
        Type: String
        ValueSelector: '.|{{targetRegionIds}}|sort|.[0]'
  - Name: whetherCloneToAllRegions
    Action: 'ACS::Choice'
    Description:
      en: Choose next task by targetRegionIds Chosen.
      zh-cn: 根据所选目的地域判断下一步执行。
    Properties:
      DefaultTask: copyImage
      Choices:
        - When:
            'Fn::Equals':
              - all-regions
              - '{{ queryAllAvailableRegions.allRegionsChosen }}'
          NextTask: copyImageToAllRegions
  - Name: copyImage
    Action: 'ACS::ECS::CopyImage'
    OnSuccess: 'ACS::END'
    OnError: 'ACS::END'
    Description:
      en: Copy image to regions chosen.
      zh-cn: 复制镜像到被指定的地域。
    Properties:
      regionId: '{{ ACS::RegionId }}'
      imageId: '{{ imageId }}'
      targetRegionId: '{{ ACS::TaskLoopItem }}'
    Loop:
      Items: '{{ targetRegionIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        imageIdsWithRegion:
          AggregateType: 'Fn::ListJoin'
          AggregateField: imageIdWithRegion
    Outputs:
      imageIdWithRegion:
        ValueSelector: '.|(.imageId),"{{ ACS::TaskLoopItem }}"'
        Type: List
  - Name: copyImageToAllRegions
    Action: 'ACS::ECS::CopyImage'
    Description:
      en: Copy image to all available regions.
      zh-cn: 复制镜像到所有可用地域。
    Properties:
      regionId: '{{ ACS::RegionId }}'
      imageId: '{{ imageId }}'
      targetRegionId: '{{ ACS::TaskLoopItem }}'
    Loop:
      Items: '{{ queryAllAvailableRegions.regionIds }}'
      RateControl: '{{ rateControl }}'
      Outputs:
        imageIdsWithRegion:
          AggregateType: 'Fn::ListJoin'
          AggregateField: imageIdWithRegion
    Outputs:
      imageIdWithRegion:
        ValueSelector: '.|(.imageId),"{{ ACS::TaskLoopItem }}"'
        Type: List
Outputs:
  imageIds:
    Type: List
    Value:
      'Fn::If':
        - 'Fn::Equals':
            - all-regions
            - '{{ queryAllAvailableRegions.allRegionsChosen }}'
        - '{{ copyImageToAllRegions.imageIdsWithRegion }}'
        - '{{ copyImage.imageIdsWithRegion }}'
  • 模板执行逻辑如下

    1. 查询阿里云所有可用地域,供所选目的地域为all-regions时使用。
    2. 判断您选择的目的地域是阿里云所有可用地域还是某些地域。
    3. 向已选择的目的地域复制镜像。
    4. 当镜像成功复制到所有目的地域,则该执行结束,执行状态转为成功。
目录
相关文章
|
22天前
|
机器学习/深度学习 人工智能 运维
|
2月前
|
存储 边缘计算 运维
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
边缘计算问题之OpenYurt 对边缘计算场景中的运维难题如何解决
31 1
|
2月前
|
运维 监控 测试技术
5个常见运维场景,用这几个Python脚本就够了!
5个常见运维场景,用这几个Python脚本就够了!
|
3月前
|
Ubuntu Linux Docker
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决
Java演进问题之Alpine Linux创建更小的Docker镜像如何解决
|
3月前
|
运维 监控 容灾
智能化运维场景分析
【7月更文挑战第12天】智能运维目标是解放运维人员,提高效率,确保业务连续性和优化资源利用。
|
5月前
|
运维 Linux Docker
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
【运维面试100问】(一)打包了一个镜像推送上去harbor,推不上是什么原因
|
5月前
|
运维 算法 物联网
五大智能运维场景
【5月更文挑战第3天】智能运维场景分5类:异常检测、根因诊断、故障自愈、事件预警、效能优化。
|
5月前
|
弹性计算 运维 应用服务中间件
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(1)
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(1)
271 1
|
5月前
|
弹性计算 运维 应用服务中间件
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(2)
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(2)
242 1
|
5月前
|
弹性计算 运维 Linux
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(3)
带你读《云上自动化运维宝典》——ECS多场景迁移上云最佳实践(3)
239 1