运维编排场景系列-----ECS实例系统快照下载到本地

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
系统运维管理,不限时长
简介: 运维编排场景系列-----ECS实例系统快照下载到本地 ECS实例的系统快照文件不能直接从云端下载到本地,不过通过OOS的模板可以轻松帮您实现下载数据到本地。 解决方案 此过程您只需选定要创建系统快照的ECS实例,并准备一个可保存镜像的OSS bucket,剩下工作交给OSS就可以了,当OOS准备完待下载内容后,您单击下载快照的镜像文件即可。

ECS实例的系统快照文件不能直接从云端下载到本地,不过通过OOS的模板可以轻松帮您实现下载数据到本地。

解决方案

此过程您只需选定要创建系统快照的ECS实例,并准备一个可保存镜像的OSS bucket,剩下工作交给OSS就可以了,当OOS准备完待下载内容后,您单击下载快照的镜像文件即可。
OOS主要帮您做了这些,其先对您选定的ECS实例打系统快照,完成后对快照创建镜像,再将镜像导出到OSS的bucket内,最后将bucket中镜像对应的文件名返回。

OOS模版任务

  1. 获取被指定的ECS实例系统盘信息。
  2. 检查ECS实例状态,保证可创建快照。
  3. 对ECS实例系统盘进行快照创建。
  4. 等待快照创建完成。
  5. 对快照创建镜像。
  6. 等待镜像创建完成。
  7. 将镜像导出到指定的OSS的bucket中。
  8. 返回镜像导出后在bucket内对应的文件名。

模版内容

FormatVersion: OOS-2019-06-01
Description: Export image of snapshot which is created by ECS instance system disk to OSS.
Parameters:
  instanceIds:
    Description: The ID list of the ECS instance.
    Type: List
  OSSBucket:
    Description: The bucket of the image to export into.
    Type: String
  OSSPrefix:
    Description: The prefix for name of the image to export into oos.
    Type: String
  regionId:
    Description: The region Id of instance.
    Type: String
    MinLength: 1
    MaxLength: 30
  OOSAssumeRole:
    Description: The RAM role to be assumed by OOS.
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'

Tasks:

  - Name: querysDiskInfo
    Action: 'ACS::ExecuteAPI'
    Description: Get info of the data disk.
    Properties:
      Service: ECS
      API: DescribeDisks
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ ACS::TaskLoopItem }}'
        DiskType: system
    Outputs:
      systemDiskId:
        Type: String
        ValueSelector: 'Disks.Disk[].DiskId'
    Loop:
      Items: '{{ instanceIds }}'
      Outputs:
        systemDiskIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: systemDiskId

  - Name: checkInstanceAvailable
    Action: 'ACS::CheckFor'
    Description: Checks whether the ECS instance status is running or stopped.
    Properties:
      Service: ECS
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceIds:
          - '{{ ACS::TaskLoopItem }}'
      DesiredValues:
        - Running
        - Stopped
      PropertySelector: 'Instances.Instance[].Status'
    Loop:
      Items: '{{ instanceIds }}'


  - Name: createSnapshot
    Action: 'ACS::ExecuteAPI'
    Description: Create a snapshot with the specified disk ID and snapshot name.
    Properties:
      Service: ECS
      API: CreateSnapshot
      Parameters:
        RegionId: '{{ regionId }}'
        DiskId: '{{ ACS::TaskLoopItem }}'
        SnapshotName: 'Snapshot-from-{{ ACS::TaskLoopItem }}-{{ ACS::ExecutionId }}'
    Outputs:
      snapshotId:
        Type: String
        ValueSelector: SnapshotId
    Loop:
      Items: '{{ querysDiskInfo.systemDiskIds }}'
      Outputs:
        snapshotIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: snapshotId

  - Name: untilSnapshotsReady
    Action: 'ACS::WaitFor'
    Description: Waits for the snapshot to be accomplished.
    Properties:
      Service: ECS
      API: DescribeSnapshots
      Parameters:
        RegionId: '{{ regionId }}'
        SnapshotIds:
          - '{{ ACS::TaskLoopItem }}'
      DesiredValues:
        - accomplished
      PropertySelector: 'Snapshots.Snapshot[].Status'
    Loop:
      Items: '{{ createSnapshot.snapshotIds }}'

  - Name: createImage
    Action: 'ACS::ExecuteAPI'
    Description: Creates a custom image.
    Properties:
      Service: ECS
      API: CreateImage
      Parameters:
        RegionId: '{{ regionId }}'
        ImageName: 'img-from-{{ ACS::TaskLoopItem }}-{{ ACS::ExecutionId }}'
        SnapshotId: '{{ ACS::TaskLoopItem }}'
    Outputs:
      imageId:
        Type: String
        ValueSelector: ImageId
    Loop:
      Items: '{{ createSnapshot.snapshotIds }}'
      Outputs:
        ImageIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: imageId

  - Name: untilCreateImageReady
    Action: 'ACS::WaitFor'
    Description: Wait for created images available.
    Properties:
      Service: ECS
      API: DescribeImages
      Parameters:
        RegionId: '{{ regionId }}'
        ImageId: '{{ ACS::TaskLoopItem }}'
      DesiredValues:
        - Available
      PropertySelector: 'Images.Image[].Status'
    Loop:
      Items: '{{ createImage.ImageIds }}'

  - Name: exportImageToOSS
    Action: 'ACS::ExecuteAPI'
    Description: Copy image.
    Properties:
      Service: ECS
      API: ExportImage
      Parameters:
        RegionId: '{{ regionId }}'
        ImageId: '{{ ACS::TaskLoopItem }}'
        OSSBucket: '{{ OSSBucket }}'
        OSSPrefix: '{{ OSSPrefix }}'
    Loop:
      Items: '{{ createImage.ImageIds }}'
      Outputs:
        TaskIds:
          AggregateType: 'Fn::ListJoin'
          AggregateField: TaskId
    Outputs:
      TaskId:
        ValueSelector: TaskId
        Type: String

  - Name: queryNameOfFile
    Action: 'ACS::ExecuteAPI'
    Description: Get object name of image.
    Properties:
      Service: ECS
      API: DescribeTaskAttribute
      Parameters:
        RegionId: '{{ regionId }}'
        TaskId: '{{ ACS::TaskLoopItem }}'
    Loop:
      Items: '{{ exportImageToOSS.TaskIds }}'
      Outputs:
        OSSObjectNames:
          AggregateType: 'Fn::ListJoin'
          AggregateField: OSSObjectName
    Outputs:
      OSSObjectName:
        ValueSelector:  'OperationProgressSet.OperationProgress[].RelatedItemSet.RelatedItem[1].Value'
        Type: String

Outputs:
  OSSObjectNames:
    Value: '{{ queryNameOfFile.OSSObjectNames }}'
    Type: List
  imageIds:
    Value: '{{ createImage.ImageIds }}'
    Type: List
  snapshotIds:
    Value: '{{ createSnapshot.snapshotIds }}'
    Type: List
  instanceIds:
    Value: '{{ instanceIds }}'
    Type: List

模版参数

  • instanceIds: 实例ID,在该参数中输入您准备打快照的ECS实例ID,支持添加多个实例ID进行批量操作。
  • OSSBucket:  OSS的Bucket,在该参数中输入一个可以保存镜像文件的OSS bucket,以便您从中下载快照的镜像文件。
  • OSSPrefix:  OSS文件名前缀,输入一个存储在OSS bucket内镜像的文件名前缀。
  • regionId: 将要创建系统快照的ECS实例所在region。

操作步骤

  1. 登录到运维编排服务控制台
  2. 单击 自定义模版 ,将上文的模版内容复制到YAML格式编辑区域,输入模版名称。
    20190905162521_
  3. 单击 创建模版
    EventTriggerValidation
  4. 模版创建成功后,单击该模版的 创建执行
  5. 风险确认模式选择 客户了解风险,无需确认 。
    20190905162552
  6. 单击 下一步:设置参数
  7. 将准备好的模版参数输入到对应参数栏。
  8. 执行使用到的权限的来源选择 当前账号的已有权限(确保创建执行的账号具有模版中涉及的云产品API权限,如无权限请参考账号访问控制完成账号授权)。
    20190905170200
  9. 单击下一步:确认创建。
    20190905163233
  10. 单击 创建执行 。
  11. 待执行结束后查看输出的存入到bucket中数据的objectName。
    20190905170959
  12. 根据模版执行结果返回实例ID对应的objectName,在OSS中选择并下载快照的镜像文件到本地。
    20190905171858
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
存储 弹性计算 运维
阿里云日常运维-购买服务器
这篇文章是关于如何在阿里云购买和配置云服务器ECS的教程。
27 6
阿里云日常运维-购买服务器
|
3天前
|
弹性计算 JSON 运维
阿里云ECS实例运维属性-如何控制实例的宕机表现
介绍如何通过运维属性指定阿里云ECS的宕机运维表现等
|
3天前
|
运维 Ubuntu Linux
掌握自动化运维:使用Ansible进行服务器配置管理
【9月更文挑战第5天】本文旨在通过深入浅出的方式,介绍如何利用Ansible这一强大的自动化工具来简化和加速日常的服务器配置管理工作。文章将首先概述自动化运维的重要性,接着详细讲解Ansible的基本概念、安装过程及其在服务器配置中的应用实例。我们将通过具体的操作步骤和代码示例,展示如何使用Ansible编写任务,以及如何执行这些任务以实现批量的服务器配置。最后,文章将探讨一些高级用法,帮助读者进一步提升自动化运维的能力。
|
9天前
|
运维 监控 应用服务中间件
自动化运维:打造高效、稳定的系统环境
【8月更文挑战第30天】本文将探讨如何通过自动化运维技术,提升系统的稳定性和效率。我们将从基础概念出发,逐步深入到实践应用,分享一些实用的工具和技术,以及如何将这些工具和技术融入到日常的运维工作中。无论你是运维新手,还是有一定经验的老手,都能在这篇文章中找到有价值的信息。让我们一起探索自动化运维的世界,提升我们的工作效率,让系统运行得更加平稳。
|
8天前
|
运维 关系型数据库 MySQL
自动化运维:使用Ansible管理服务器
【8月更文挑战第31天】在这篇文章中,我们将探讨如何使用Ansible进行自动化运维。Ansible是一种开源的IT自动化工具,可以用于配置管理、应用部署、任务执行等。我们将通过一个简单的例子,展示如何使用Ansible来管理服务器。无论你是初学者还是有经验的开发者,都可以从这篇文章中获得一些有用的信息。
|
8天前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible进行服务器配置管理
【8月更文挑战第31天】在现代IT运维的快速迭代中,自动化已成为提升效率与减少错误的关键。本文将引导您通过使用Ansible这一强大的自动化工具来简化服务器的配置管理工作。我们将从基础讲起,涵盖安装、配置到实战应用,让您轻松上手自动化您的服务器环境。
|
8天前
|
运维 监控 数据库
自动化运维:使用Python脚本实现服务器监控
【8月更文挑战第31天】在这篇文章中,我们将探索如何利用Python编写简单的脚本来实现对服务器的基本监控。通过学习和应用这些技术,你可以快速检测服务器的状态,包括CPU使用率、内存占用和磁盘空间等关键指标。这不仅有助于及时发现问题,还能提升运维效率。文章将逐步引导你理解监控的重要性,并展示如何从零开始构建自己的监控工具。
|
9天前
|
运维 Devops 网络安全
自动化运维:使用Ansible实现服务器配置管理
【8月更文挑战第31天】在快速迭代的软件开发周期中,自动化运维成为提升效率的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化服务器的配置管理任务。通过实际操作案例,你将学会如何编写Ansible playbook,实现自动化部署和配置,从而节省时间并减少人为错误。
|
10天前
|
运维 Ubuntu 应用服务中间件
自动化运维:使用Ansible管理服务器
【8月更文挑战第29天】在当今快速发展的IT领域,自动化运维已成为提升效率和减少人为错误的关键技术。本文将引导你了解如何使用Ansible这一强大的自动化工具来简化服务器管理任务。从基础的安装、配置到高级的应用部署与维护,我们将一步步揭示Ansible如何让你轻松掌控多台服务器,确保系统稳定运行。文章末尾,你还将找到实用的代码示例,助你立刻上手实践。
|
3天前
|
运维 应用服务中间件 持续交付
自动化运维之路:使用Ansible进行服务器配置管理
【9月更文挑战第5天】本文将引导您了解如何利用Ansible这一强大的自动化工具,来简化和加速您的服务器配置管理工作。我们将通过实际代码示例,展示如何使用Ansible编写Playbook,实现自动化部署、配置更新和任务执行。通过阅读本文,您不仅能够掌握Ansible的基本用法,还将学会如何构建可重复使用的自动化脚本,以提升运维效率和减少人为错误。