开发者社区> 祝犁> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Hello, 资源编排

简介:
+关注继续查看

资源编排通过一个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创建的相关资源

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
资源编排ROS之资源场景
资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。 基于IaC的理念,可以标准化基础设施,但是这也意味着需要对模板语法足够熟悉。有些时候,我们只想要简单地对资源进行复制、迁移等操作,而不想花时间去写模板;或者,已经有一批资源,希望能够自动根据这批资源生成模板。这个时候不妨使用ROS的资源场景功能,它一定会让你觉得对资源的操作是如此简单。
79 0
资源编排ROS之资源场景
# 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎
54 0
资源编排服务(ROS)简介
ROS模板库:https://github.com/aliyun/ros-templates/tree/master/ResourceTemplates
1088 0
视频点播-资源用量
本文分享视频点播资源用量排查的一些方法
260 0
标记 (TAG) 您的运维编排(OOS)资源
为了方便管理阿里云运维编排(OOS)资源,您可以选择通过标签的形式为每个资源分配您自己的元数据。本主题介绍标签并说明如何创建标签。通过也可以基于运维编排管理其他支持标签的云产品资源。
649 0
资源编排之嵌套资源栈
资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。 随着基础设施的发展,常见模板模式可合并,以便
656 0
MFC的规则DLL中资源使用的问题
今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体。然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常的显示窗体。
829 0
+关注
祝犁
阿里云ECS开发
18
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载