运维编排场景系列-----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
目录
相关文章
|
11天前
|
存储 编解码 缓存
阿里云服务器实例规格选择参考:根据业务场景选择云服务器实例规格
在阿里云服务器的购买过程中,云服务器实例规格是很多用户最难选择的一个选项,因为阿里云有着多达几十种不同的实例规格,为此,阿里云官方在云服务器购买页面新推出了一个场景化选型推荐,用户可通过自己的上云场景结合场景化选型里面的业务场景和细分场景来选择适合自己的阿里云服务器实例规格,在很大程度上解决了新手用户在选择阿里云服务器实例规格上的困局。
阿里云服务器实例规格选择参考:根据业务场景选择云服务器实例规格
|
11天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
7天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
21天前
|
运维 监控 应用服务中间件
自动化运维:打造高效、稳定的系统环境
【8月更文挑战第30天】本文将探讨如何通过自动化运维技术,提升系统的稳定性和效率。我们将从基础概念出发,逐步深入到实践应用,分享一些实用的工具和技术,以及如何将这些工具和技术融入到日常的运维工作中。无论你是运维新手,还是有一定经验的老手,都能在这篇文章中找到有价值的信息。让我们一起探索自动化运维的世界,提升我们的工作效率,让系统运行得更加平稳。
|
23天前
|
Shell Linux Perl
linux服务器自动生成本地快照
【8月更文挑战第28天】本文介绍了在Linux服务器上通过两种常见方式创建本地快照的方法:Btrfs文件系统与LVM。Btrfs原生支持快照功能,操作简单快捷;LVM则提供了灵活的逻辑卷管理,可在不影响原始数据的情况下创建快照。文章详细列出了创建、查看、挂载及清理快照的具体步骤,并提供了一个自动化的Shell脚本示例,便于用户根据需求定期创建快照并清理过期快照。
21 3
|
23天前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
34 1
|
27天前
|
运维 Cloud Native 容灾
核心系统转型问题之支撑高效研发与运维发布如何解决
核心系统转型问题之支撑高效研发与运维发布如何解决
|
6天前
|
运维 监控 数据可视化
高效运维的秘密武器:自动化工具链的构建与实践在当今数字化时代,IT系统的复杂性和规模不断增加,使得传统的手动运维方式难以应对日益增长的业务需求。因此,构建一套高效的自动化工具链成为现代运维的重要任务。本文将深入探讨如何通过自动化工具链提升IT运维效率,确保系统稳定运行,并实现快速响应和故障恢复。
随着企业IT架构的不断扩展和复杂化,传统的手动运维已无法满足业务需求。自动化工具链的构建成为解决这一问题的关键。本文介绍了自动化工具链的核心概念、常用工具及其选择依据,并通过实际案例展示了自动化工具链在提升运维效率、减少人为错误、优化资源配置等方面的显著效果。从监控系统到自动化运维平台,再到持续集成/持续部署(CI/CD)的流程,我们将一步步揭示如何成功实施自动化工具链,助力企业实现高效、稳定、可靠的IT运维管理。
|
28天前
|
运维 监控 安全
构建高效自动化运维系统:DevOps在企业级应用的实现路径
【7月更文挑战第54天】在当今IT领域,DevOps作为一种文化和实践,旨在弥合开发与运维之间的鸿沟,以实现更快速、更可靠的产品交付。本文将深入探讨在企业环境中如何构建一个高效的自动化运维系统,不仅涵盖理论框架,还包括具体实施步骤和最佳实践。通过持续集成(CI)、持续部署(CD)、基础设施即代码(IaC)等关键概念的融合运用,文章旨在为读者提供一个清晰的指导,以便在其组织中落实DevOps策略,并实现运维效率的显著提升。
|
1月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。