Hello, 资源编排

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介:

资源编排通过一个JSON模板来定义您的需要创建的阿里云的资源组合,依据您的配置来完成您的资源配置,创建和一键销毁,快速方便的构建您的应用。更多的信息您可以通过资源编排的帮助中心获取。

目前资源编排正在公测期间,所以您需要首先申请下公测,我们会尽快通过,通过之后您就可以开始您的ROS之旅了。我们有一个技术支持的旺旺群,1496006086。在这里您可以得到最及时的反馈。

今天为了在阿里云上创建一台ECS虚拟机,您需要首先创建一个安全组(Security Group),您可以通过ECS控制台来生成安全组的定义,您也可以通过资源编排来更加便利的实现。我们从一个安全组开始您的资源编排之旅。

创建一个安全组

创建一个安全组,首先我们需要定义一个JSON模板。从模板之中,我们看到这个模板有两部分构成:

  • 一个是ROSTemplateFormatVersion版本号,目前的Stack都使用这个版本。
  • Resources部分定义创建的资源, 在这个里面我们定义一个资源叫SecurityGroup, 这里的名字可以自己定义,每个Resource有两个关键的属性,

    • Type: 目前ROS支持的资源类型可以通过ROS控制台中的资源类型来查看。
    • Properties:每个资源类型,有哪些属性是必填、选填、约束等等也可以在ROS控制台资源类型来查看。
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "SecurityGroup": {
      "Properties": {},
      "Type": "ALIYUN::ECS::SecurityGroup"
    }
  }
}

我们将下面的模板拷贝到ROS控制台中,选择一个Region,然后提供一个模板名称hello_ros, 点击创建您就完成了自己的第一个Stack。

创建Stack的关键属性

每个Stack有几个关键的属性,这些属性是创建Stack的必要参数

  • 名称: 不可修改的stack标示,1-64个字符,名称不可重复。
  • 超时时间,公测期间的范围为10-180分钟
  • 失败回滚,当整个堆栈没有创建成功之后,如果这个选项设置为True,则开始启动回滚操作,将会把创建的相关资源支持释放的释放掉
  • Region,当前堆栈支持在哪个region进行操作。

Stack的几个重要的输出构成:

  • 概览:提供这个Stack的基本信息,例如创建时间状态,返回的数据类型,这个模板在运行时的入参等等
  • 资源:Stack在创建的过程中生成的物理资源或者重要的关联资源信息
  • 事件:每个资源在创建的时候都会有状态,例如创建开始,创建完成,创建失败,回滚开始,回滚完成,删除开始,删除完成。
  • 模板:创建模板是提供的Template

安全组创建进阶

只创建一个安全组的话,这个安全组默认是没有配置安全组的出规则和入规则的话,使用这个安全组创建出的虚拟机是没有办法正常的和外部进行通讯,所以需要制定出人规则,可以通过一步步的在ECS控制台来实现,但是通过ROS来创建这个就非常的方便。

相比上面的模板, 这次的模板多出了一个部分为Parameters, 这里声明了一个新的属性定义了一个安全组的优先级,通过控制台中我们可以看到创建模板就会多一个参数需要填写,有一个默认值1。更多的参数定义请参考帮助文档。

Properties 中同样多了更多的属性,多了安全组的名称、描述、以及出入规则的定义。关于安全组的更多属性可以参考安全组资源定义

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "SecurityGroupPriority": {
      "Default": 1,
      "Description": "生成的安全组的优先级,优先级可选范围为1-100,默认值为1,即最高优先级。",
      "Type": "Number",
      "MinValue": 1,
      "MaxValue": 100
    }
  },
  "Resources": {
    "DefaultSecurityGroup": {
      "Properties": {
        "Description": "生成经典网络安全组默认开通外网的所有出网和入网访问权限",
        "SecurityGroupEgress": [
          {
            "DestCidrIp": "0.0.0.0/0",
            "IpProtocol": "all",
            "NicType": "internet",
            "PortRange": "-1/-1",
            "Priority": {
              "Ref": "SecurityGroupPriority"
            }
          }
        ],
        "SecurityGroupIngress": [
          {
            "IpProtocol": "all",
            "NicType": "internet",
            "PortRange": "-1/-1",
            "Priority": {
              "Ref": "SecurityGroupPriority"
            },
            "SourceCidrIp": "0.0.0.0/0"
          }
        ],
        "SecurityGroupName": "CreateByROS"
      },
      "Type": "ALIYUN::ECS::SecurityGroup"
    }
  }  
}

相比传统的JSON,这里有一个属性非常特殊叫"Ref",它指向了Parameters的参数定义,这样就可以引用这里的定义进行赋值。

Actions

  • 尝试着将安全组的名称也提取到Parameters中,而不是Hard Code。需要怎么做呢?

Stack的输出

上面的模板创建出来的Stack可以定制的属性较少,您可以在堆栈的概述中查看Stack的输出。只需要添加一个Outputs部分即可。

Outputs中,定义了一个输出参数为SecurityGroupId, 会返回生成的Stack的安全组的Id,使用到了一个函数Fn::GetAtt, 它的属性为一个数组,第一个参数为在Resources中定义的资源名称,第二个属性为ALIYUN::ECS::SecurityGroup支持的返回属性, 我们可以发现安全组只支持一个属性SecurityGroupId

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "SecurityGroupPriority": {
      "Default": 1,
      "Description": "生成的安全组的优先级,优先级可选范围为1-100,默认值为1,即最高优先级。",
      "Type": "Number",
      "MinValue": 1,
      "MaxValue": 100
    }
  },
  "Resources": {
    "DefaultSecurityGroup": {
      "Properties": {
        "Description": "生成经典网络安全组默认开通外网的所有出网和入网访问权限",
        "SecurityGroupEgress": [
          {
            "DestCidrIp": "0.0.0.0/0",
            "IpProtocol": "all",
            "NicType": "internet",
            "PortRange": "-1/-1",
            "Priority": {
              "Ref": "SecurityGroupPriority"
            }
          }
        ],
        "SecurityGroupIngress": [
          {
            "IpProtocol": "all",
            "NicType": "internet",
            "PortRange": "-1/-1",
            "Priority": {
              "Ref": "SecurityGroupPriority"
            },
            "SourceCidrIp": "0.0.0.0/0"
          }
        ],
        "SecurityGroupName": "CreateByROS"
      },
      "Type": "ALIYUN::ECS::SecurityGroup"
    }
  },
  "Outputs": {
    "SecurityGroupId": {
      "Value": {
        "Fn::GetAtt": [
          "DefaultSecurityGroup",
          "SecurityGroupId"
        ]
      }
    }
  }  
}

Stack的删除

当一个Stack需要被删除的时候,可以根据需要来选择,有两个选项:

  • 删除堆栈同时删除Stack创建的资源
  • 删除堆栈的时候保留Stack创建的相关资源

下一节,我们将着重介绍资源编排的重要构成部分模板

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
3月前
|
JSON Kubernetes 数据格式
kubernetes—资源管理方式介绍
kubernetes—资源管理方式介绍
38 0
|
6月前
|
弹性计算 运维 持续交付
基于资源编排服务(ROS)实现存量资源的IaC化
如果您需要一种简单而有效的方法来管理大量云资源并实现自动化部署,推荐使用阿里云的资源编排服务ROS(Resource Orchestration Service)。ROS能够将存量资源转化为IaC(基础设施即代码),通过资源场景创建、模版生成和资源栈导入等功能,实现资源的统一管理和自动化部署。这不仅提高了资源管理的效率,还降低了成本。如果您想了解如何更轻松地管理云资源并加速部署流程,ROS是一个值得深入了解的工具。
79 1
|
9月前
|
存储 Kubernetes 容器
03- Kubernetes-资源管理方式介绍
03- Kubernetes-资源管理方式介绍
|
9月前
|
存储 Kubernetes Perl
04-Kubernetes-三种资源管理方式
04-Kubernetes-三种资源管理方式
|
10月前
|
Kubernetes Cloud Native 应用服务中间件
Koordinator 最佳实践系列:精细化 CPU 编排
Koordinator 最佳实践系列:精细化 CPU 编排
|
云计算 开发者
2.4.2资源管控层 资源管理技术|学习笔记(一)
快速学习2.4.2资源管控层 资源管理技术
271 0
|
存储 缓存 负载均衡
2.4.2资源管控层 资源管理技术|学习笔记(二)
快速学习2.4.2资源管控层 资源管理技术
355 0
2.4.2资源管控层 资源管理技术|学习笔记(二)
|
存储 弹性计算 运维
资源编排ROS之资源场景
# 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎
209 0
资源编排ROS之资源场景
|
弹性计算 运维 关系型数据库
资源编排ROS之资源栈组StackGroup
## 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称 ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系
896 0
|
JSON 弹性计算 运维
资源编排ROS之资源栈策略
背景 资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。 在创建资源栈时,允许对所有资源执行所有更新操
1099 0