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创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
目录
相关文章
|
关系型数据库 测试技术 PostgreSQL
|
消息中间件 关系型数据库 Kafka
PostgreSQL "物联网"应用 - 1 实时流式数据处理案例(万亿每天)
物联网的特点是万物联网,会产生大量的数据。 例如 : 一盒药,从生产,到运输,到药店,到售卖。每流经一个节点,都会记录它的信息。 又如 : 健康手环,儿童防丢手表,一些动物迁徙研究的传感器(如中华鲟),水纹监测,电网监测,煤气管道监测,气象监测等等这些信息。 股价的实时预测。 车流实时
22943 59
|
关系型数据库 数据库 C语言
Greenplum 源码安装
数据库规划 1 master - standby 5 segment(s) - segment mirror(s) 硬件规划 6台主机 master节点配置(cpu 8核, mem 16G, network 1GB, disk 1*250G) segments配置 建议规划
11098 3
|
弹性计算 关系型数据库 网络安全
经典网络迁移VPC最佳实践
阿里云起步于经典网络,但已经全面转向VPC。专有网络VPC以其在安全、成本和网络功能方面的优势,正受到越来越多用户的欢迎。在9月6日云栖社区技术直播中,阿里云高级产品专家谭礼铨(李泉)为大家分享了经典网络迁移VPC最佳实践,本次分享介绍三种将ECS从经典网络迁移至VPC网络的途径,并阐述三种类型的迁移分别适合怎样的客户需求和场景。
23418 0
|
容灾 关系型数据库 数据库
|
网络安全 数据格式 XML
|
监控 关系型数据库 MySQL
测试开启MySQL performance_schema后对性能的影响
在开启MySQL PerformanceSchema 性能收集功能的情况下,对数据库性能影响
10689 1