• [介绍/入门] AOS编排语言系列教程(十一):输入inputs,扩展模板可复用性
    【摘要】 大家也许会发现,创建数据库模板和分布式缓存模板中用到了inputs,将密码参数写到inputs中,创建堆栈时由用户输入可以保证安全性,避免明文密码。而之前创建的模板中其他属性值都是固定的,如果我们想修改其他参数值,就必须重新修改模板再上传,非常不方便。例如创建ECS时,部署时云服务器使用的镜像需要改变,并且创建云服务器数量不是固定的。这种情况我们就可以使用inputs来定义这些可变部分。大家也许会发现,创建数据库模板和分布式缓存模板中用到了inputs,将密码参数写到inputs中,创建堆栈时由用户输入可以保证安全性,避免明文密码。而之前创建的模板中其他属性值都是固定的,如果我们想修改其他参数值,就必须重新修改模板再上传,非常不方便。例如创建ECS时,部署时云服务器使用的镜像需要改变,并且创建云服务器数量不是固定的。这种情况我们就可以使用inputs来定义这些可变部分。在inputs中可以指定输入参数类型、给出参数描述信息和默认值。一个模板最多支持定义60个inputs输入参数。每个input输入参数,都需要定义唯一的名称,以便在使用时通过get_input内置函数获取到具体的值。tosca_definitions_version: huaweicloud_tosca_version_1_0inputs:  # 输入,定义基于模板创建堆栈的可变部分  instance:    description: 创建云服务器数量    default: 1  image:    description: 云服务器使用的镜像ID    type: HuaweiCloud.ECS.Image.Id  vpc:    description: 云服务器VPC的ID  subnet:    description: 云服务器子网IDnode_templates:  myecs:    type: HuaweiCloud.ECS.CloudServer    properties:      name: my-ecs      instances:        get_input: instance      imageId:        get_input: image      flavor: s3.small.1      vpcId:        get_input: vpc      availabilityZone: cn-south-1c      nics:        - subnetId:            get_input: subnet      rootVolume:        volumeType: SSD        size: 40模板中云服务器使用的镜像imageId、创建云服务器数量instances、虚拟私有云和子网id都是由用户输入,用户在创建堆栈时配置这些输入参数。
  • [介绍/入门] AOS编排语言系列教程(九):创建数据库RDS
    【摘要】 关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。MySQL是全球目前最受欢迎的开源数据库之一。下面模板在创建安全组的模板中引入创建数据库的内容。通过此模板,您可快速创建一个RDS服务的MySQL实例。关系型数据库(Relational Database Service,简称RDS)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。MySQL是全球目前最受欢迎的开源数据库之一。下面模板在创建安全组的模板中引入创建数据库的内容。通过此模板,您可快速创建一个RDS服务的MySQL实例。tosca_definitions_version: huaweicloud_tosca_version_1_0inputs:  myrds_dbRootPassword:    description: '实例的root用户密码。参数非空,由大小写字母、数字和特殊符号~!@#%^*-_=+?组成,长度8~32位,非弱密码。'node_templates:  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      cidr: '192.168.0.0/16'      name: my-vpc  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      cidr: '192.168.1.0/24'      dhcpEnable: true      gateway: 192.168.1.1      name: my-subnet      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myecs:    type: HuaweiCloud.ECS.CloudServer    properties:      availabilityZone: cn-south-1a      flavor: c1.medium      imageId: a3934478-bfeb-4a02-b257-9089779f0380      instances: 1      name: my-ecs      nics:        - subnetId:            get_reference: mysubnet      rootVolume:        size: 40        volumeType: SATA      securityGroups:        - id:            get_reference: mysg      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc      - securityGroups.id:          node: mysg      - nics.subnetId:          node: mysubnet  mysg:    type: HuaweiCloud.VPC.SecurityGroup    properties:      name: my-sg    requirements:      - vpcId:          node: myvpc  mysgrule:    type: HuaweiCloud.VPC.SecurityGroupRule    properties:      direction: ingress      ethertype: IPv4      maxPort: 5444      minPort: 5443      protocol: TCP      securityGroupId:        get_reference: mysg    requirements:      - securityGroupId:          node: mysg  myrds:    type: HuaweiCloud.RDS.MySQL    properties:      HA:        enable: 'true'        replicationMode: semisync      availabilityZone: cn-south-1c      backupStrategy:        endTime: '02:00'        keepDays: 0        startTime: '01:00'      dataStore:        dbtype: MySQL        version: '5.7'      dbPort: 3306      dbRootPassword:        get_input: myrds_dbRootPassword      flavor: 80854e82-0159-41fd-bc8d-de32bc6ae3f7      securityGroupId:        get_reference: mysg      subnetId:        get_reference: mysubnet      volume:        size: 100        volumetype: COMMON      vpcId:        get_reference: myvpc    requirements:      - subnetId:          node: mysubnet      - securityGroupId:          node: mysg      - vpcId:          node: myvpc模板中有如下几个参数:    1.         HA:实例的高可用配置,enable参数代表是否高可用,replicationMode为备机同步参数,这里设置为semisync半同步模式。    2.         availabilityZone:实例所属的可用分区,这里设置为cn-south-1c。    3.         backupStrategy:实例备份策略,备份的保留时间为0,执行备份任务的最晚时间为02:00,执行备份任务的最早时间为01:00。    4.         dataStore:数据库信息,创建的数据库类型为MySQL,版本为5.7。    5.         dbPort:访问实例的端口,这里使用默认值3306。    6.         dbRootPassword:实例的root用户密码,建议定义为get_input方式获取,由用户在创建堆栈时输入,以保证安全性,避免明文密码。关于inputs的具体用法,将在后面章节介绍。    7.         flavor:待创建的数据库实例的规格,根据实例规格及用户project生成。建议通过RDS API先获取,参考获取所有实例规格信息或者RDS服务FlavorID获取指南。    8.         securityGroupId:实例所属的安全组ID。    9.         subnetId:实例所属的子网ID,指定起始端口号为5443,指定结束端口号为5444。    10.     volume:实例使用的数据盘信息,磁盘类型为COMMON(意为SATA),磁盘大小为100。    11.     vpcId:实例所属的VPC ID。数据库创建成功:
  • [介绍/入门] AOS编排语言系列教程(八):创建容器集群Cluster
    【摘要】 华为云的云容器引擎(Cloud Container Engine,简称CCE)可以提供高可靠高性能的企业级容器应用管理服务,CCE.Cluster、CCE.NodePool用于部署华为云PaaS层的kubernetes集群资源。我们在已创建虚拟私有云和子网的模板中,加入创建一个容器集群(包含一个节点)。目前容器是非常热门的一项技术,是Cloud2.0时代的技术标准。华为云的云容器引擎(Cloud Container Engine,简称CCE)可以提供高可靠高性能的企业级容器应用管理服务,CCE.Cluster、CCE.NodePool用于部署华为云PaaS层的kubernetes集群资源。通过CCE.Cluster资源可以为用户提供编排用户应用功能。通过创建CCE.NodePool资源,方便用户将华为云上资源编排在节点上,提供更加强大优质的功能。我们在已创建虚拟私有云和子网的模板中,加入创建一个容器集群(包含一个节点):tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      cidr: '192.168.1.0/24'      dhcpEnable: true      gateway: 192.168.1.1      name: my-subnet      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      cidr: '192.168.0.0/16'      name: my-vpc  mycluster:    type: HuaweiCloud.CCE.Cluster    properties:      subnetId:        get_reference: mysubnet      flavor: cce.s1.small      vpcId:        get_reference: myvpc    requirements:      - subnetId:          node: mysubnet      - vpcId:          node: myvpc  mynode:    type: HuaweiCloud.CCE.NodePool    properties:      dataVolumes:        - volumeType: SATA          size: 100      instances: 1      rootVolume:        volumeType: SATA        size: 40      sshKeyName: KeyPair-ac70      flavor: s3.small.1      clusterId:        get_reference: mycluster    requirements:      - clusterId:          node: myclustermy-cluster是一个容器集群对象,用于部署华为云PaaS层的kubernetes集群资源。其中参数flavor表示集群规格,可在CCE创建集群页面查询可使用的集群规格名称。my-node是CCE.NodePool对象,用于部署华为云PaaS层kubernetes节点资源。my-node有如下几个参数:    1.         dataVolumes:创建节点的数据盘模型。    2.         instances:创建节点的数量。    3.         rootVolume:创建节点的系统盘模型。    4.         sshKeyName:创建节点登录时使用的密钥对,需要在ECS服务界面提前创建。    5.         flavor:容器节点的规格。    6.         clusterId:资源所属的集群ID,模板中设置为刚创建的集群my-cluster。容器集群创建成功:
  • [介绍/入门] AOS编排语言系列教程(七):创建负载均衡ELB
    【摘要】 弹性负载均衡( Elastic Load Balance,简称ELB)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。上一章我们学习了如何创建共享云硬盘,我们基于上一个模板加入创建负载均衡ELB的内容。弹性负载均衡( Elastic Load Balance,简称ELB)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。上一章我们学习了如何创建共享云硬盘,我们基于上一个模板加入创建负载均衡ELB的内容。tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myecs:    type: HuaweiCloud.ECS.CloudServer    properties:      availabilityZone: cn-south-1a      flavor: c1.medium      imageId: a3934478-bfeb-4a02-b257-9089779f0380      instances: 1      name: my-ecs      nics:        - subnetId:            get_reference: mysubnet      rootVolume:        size: 40        volumeType: SATA      securityGroups:        - id:            get_reference: mysg      vpcId:        get_reference: myvpc      mountedVolumes:        - mountPath: '/dev/sdc'          volumeId:            get_reference: myevs    requirements:      - vpcId:          node: myvpc      - securityGroups.id:          node: mysg      - nics.subnetId:          node: mysubnet      - mountedVolumes.volumeId:          node: myevs  mysg:    type: HuaweiCloud.VPC.SecurityGroup    properties:      name: my-sg    requirements:      - vpcId:          node: myvpc  mysgrule:    type: HuaweiCloud.VPC.SecurityGroupRule    properties:      direction: ingress      ethertype: IPv4      maxPort: 5444      minPort: 5443      protocol: TCP      securityGroupId:        get_reference: mysg    requirements:      - securityGroupId:          node: mysg  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      cidr: '192.168.1.0/24'      dhcpEnable: true      gateway: 192.168.1.1      name: my-subnet      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      cidr: '192.168.0.0/16'      name: my-vpc  myevs:    type: HuaweiCloud.EVS.SharedVolume    properties:      size: 10      availabilityZone: cn-south-1a      volumeType: SATA  myelb:    type: HuaweiCloud.ELB.LoadBalancer.External    properties:      name: my-elb      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myelb-listener:    type: HuaweiCloud.ELB.Listener    properties:      protocol: TCP      name: my-elb-listener      backendPort: 80      backendProtocol: TCP      port: 80      lbAlgorithm: roundrobin      loadBalanceId:        get_reference: myelb    requirements:      - loadBalanceId:          node: myelb  myhealth:    type: HuaweiCloud.ELB.HealthMonitor    properties:      unhealthyThreshold: 3      healthyThreshold: 3      healthCheckInterval: 5      healthCheckConnectPort: 80      healthCheckTimeout: 10      listenerId:        get_reference: myelb-listener    requirements:      - listenerId:          node: myelb-listener  mymember:    type: HuaweiCloud.ELB.Members    properties:      serverIds:        - get_reference: myecs      listenerId:        get_reference: myelb-listener    requirements:      - serverIds:          node: myecs      - listenerId:          node: myelb-listener首先创建一个elb元素,它是部署华为云PaaS层私网LoadBalancer对象,通过创建LoadBalancer,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求进行负载分发到后端的各个容器应用上。参数vpcId是ELB实例所属的VPC,弹性负载均衡需要与后端监听的弹性云服务器处于同一个VPC下。elb-listener元素是弹性负载均衡下的监听器,一个loadBalancer可对应多个监听器,支持对监听器进行增加、删除。它有几个属性值:    1.         protocol是负载均衡器协议。    2.         name是监听器的名称,设置为my-elb-listener。    3.         backendPort表示云服务器端口,可根据实际情况修改。    4.         backendProtocol是云服务器协议。    5.         port是负载均衡器端口,默认为80,可根据实际情况修改。    6.         lbAlgorithm是监听器负载均衡方式,roundrobin:轮询算法, leastconn:最少连接, source:源IP算法;其中轮询算法支持会话保持功能。    7.         loadBalanceId是所属的负载均衡器ID,将elb-listener与之前创建的elb关联起来。,然后创建health-monitor元素,它是弹性负载均衡下的健康检查,一个Listener对应一个健康检查,一个健康检查管理多个弹性云服务器,支持对健康检查进行增加删除。    1.         unhealthyThreshold判定健康检查结果为fail的阈值,即健康检查连续失败多少次后,将后端云服务器的健康检查状态由success改为fail。    2.         healthyThreshold判定健康检查结果为success的阈值。    3.         healthCheckInterval是健康检查时间间隔(秒)。    4.         healthCheckConnectPort是健康检查使用端口,可根据实际情况修改,默认为云服务器端口。    5.         healthCheckTimeout是健康检查超时时间(秒)。    6.         listenerId健康检查所属的监听器ID,将health-monitor与elb-listener元素相关联。member元素是弹性负载均衡下的弹性云服务器,一个Listener可以对应多个弹性云服务器,并且可以对监听器进行增加删除。一个HealthMonitor管理多个云服务器。    1.         serverIds是后端云服务器ID。    2.         listenerId是所属的监听器ID,该参数将member与elb-listener元素相关联。为确保ELB健康检查正常运行,需要在后端弹性云服务器的安全组中添加入方向规则,允许来自100.125.0.0/16网段HTTP协议的访问,同时需要确保云服务器上80端口可返回200。部署堆栈时elb参数组中的vpcId及member参数组中的serverId需要根据实际情况填写,未正确填写会导致堆栈部署失败。负载均衡创建成功:
  • [介绍/入门] AOS编排语言系列教程(六):创建共享云硬盘EVS
    【摘要】 云硬盘(Elastic Volume Service,简称EVS)是一种为ECS、BMS等计算服务提供持久性块存储的服务,通过数据冗余和缓存加速等多项技术,提供高可用性和持久性,以及稳定的低时延性能。您可以对云硬盘做格式化、创建文件系统等操作,并对数据做持久化存储。上一章我们学习了如何创建安全组,接下来我们看看如何在创建的弹性云服务器上挂载共享云硬盘。云硬盘(Elastic Volume Service,简称EVS)是一种为ECS、BMS等计算服务提供持久性块存储的服务,通过数据冗余和缓存加速等多项技术,提供高可用性和持久性,以及稳定的低时延性能。您可以对云硬盘做格式化、创建文件系统等操作,并对数据做持久化存储。上一章我们学习了如何创建安全组,接下来我们看看如何在创建的弹性云服务器上挂载共享云硬盘。tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myecs:    type: HuaweiCloud.ECS.CloudServer    properties:      availabilityZone: cn-south-1a      flavor: c1.medium      imageId: a3934478-bfeb-4a02-b257-9089779f0380      instances: 1      name: my-ecs      nics:        - subnetId:            get_reference: mysubnet      rootVolume:        size: 40        volumeType: SATA      securityGroups:        - id:            get_reference: mysg      vpcId:        get_reference: myvpc      mountedVolumes:        - mountPath: '/dev/sdc'          volumeId:            get_reference: myevs    requirements:      - vpcId:          node: myvpc      - securityGroups.id:          node: mysg      - nics.subnetId:          node: mysubnet      - mountedVolumes.volumeId:          node: myevs  mysg:    properties:      name: my-sg    requirements:      - vpcId:          node: myvpc    type: HuaweiCloud.VPC.SecurityGroup  mysgrule:    type: HuaweiCloud.VPC.SecurityGroupRule    properties:      direction: ingress      ethertype: IPv4      maxPort: 5444      minPort: 5443      protocol: TCP      securityGroupId:        get_reference: mysg    requirements:      - securityGroupId:          node: mysg  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      cidr: '192.168.1.0/24'      dhcpEnable: true      gateway: 192.168.1.1      name: my-subnet      vpcId:        get_reference: myvpc    requirements:      - vpcId:          node: myvpc  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      cidr: '192.168.0.0/16'      name: my-vpc   myevs:    type: HuaweiCloud.EVS.SharedVolume    properties:      size: 10      availabilityZone: cn-south-1a      volumeType: SATA模板中定义了一个共享云硬盘myevs,其中size为云硬盘大小,单位为GB;availabilityZone为可用分区;volumeType为云硬盘类型,可选值为SSD、SAS、SATA。在myecs中增加了mountedVolumes属性,设置了磁盘挂载点mountPath为'/dev/sdc',要挂载的磁盘ID为myevs。共享云硬盘创建成功:
  • [介绍/入门] AOS编排语言系列教程(五):创建安全组SecurityGroup
    【摘要】 安全组是逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。安全组规则是为弹性云服务器等添加的访问策略,以实现访问控制。上一章我们学习了如何创建弹性云服务器,我们基于上一个模板加入创建安全组的内容。安全组是逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。安全组规则是为弹性云服务器等添加的访问策略,以实现访问控制。上一章我们学习了如何创建弹性云服务器,我们基于上一个模板加入创建安全组的内容。tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      name: my-vpc      cidr: '192.168.0.0/16'  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      name: my-subnet      cidr: '192.168.1.0/24'      gateway: 192.168.1.1      vpcId:        get_reference: myvpc      dhcpEnable: true    requirements:      - vpcId:          node: myvpc  myecs:    type: HuaweiCloud.ECS.CloudServer    properties:      name: my-ecs      instances: 1      imageId: a3934478-bfeb-4a02-b257-9089779f0380      flavor: c1.medium      vpcId:        get_reference: myvpc      availabilityZone: cn-south-1a      nics:        - subnetId:            get_reference: mysubnet      rootVolume:        volumeType: SATA        size: 40      securityGroups:        - id:            get_reference: mysg    requirements:      - vpcId:          node: myvpc      - securityGroups.id:          node: mysg      - nics.subnetId:          node: mysubnet  mysg:    type: HuaweiCloud.VPC.SecurityGroup    properties:      name: my-sg    requirements:      - vpcId:          node: myvpc  mysgrule:    type: HuaweiCloud.VPC.SecurityGroupRule    properties:      direction: ingress      securityGroupId:        get_reference: mysg      ethertype: IPv4      maxPort: 5444      minPort: 5443      protocol: TCP    requirements:      - securityGroupId:          node: mysg安全组mysg只有一个属性name,表示SecurityGroup实例的名称。ingress1和egress1都是安全组规则,以下几个属性:    1.         direction:出入控制方向,ingress表示入口。    2.         securityGroupId:所属安全组规则的ID。    3.         ethertype:IP地址协议类型,可设置为IPv4。    4.         maxPort:指定结束端口号。    5.         minPort:指定起始端口号。    6.         protocol:协议类型,可选值为ICMP或TCP或UDP。安全组创建成功:
  • [介绍/入门] AOS编排语言系列教程(四):创建弹性云服务器ECS
    【摘要】 弹性云服务器(Elastic Cloud Server,简称ECS)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境。我们已经学会了如何创建虚拟私有云和子网,接下来我们学习在模板中创建弹性云服务器。弹性云服务器(Elastic Cloud Server,简称ECS)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境。我们已经学会了如何创建虚拟私有云和子网,接下来我们在模板中创建弹性云服务器:tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      name: my-vpc      cidr: '192.168.0.0/16'  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      name: my-subnet      cidr: '192.168.1.0/24'      gateway: 192.168.1.1      vpcId:        get_reference: myvpc      dhcpEnable: true    requirements:      - vpcId:          node: myvpc  myecs:           type: HuaweiCloud.ECS.CloudServer         properties:              name: my-ecs             instances: 1             imageId: a3934478-bfeb-4a02-b257-9089779f0380             flavor: c1.medium             vpcId:          get_reference: myvpc      availabilityZone: cn-south-1a             nics:                 - subnetId:              get_reference: mysubnet             rootVolume:                 volumeType: SATA                 size: 40         requirements:             - vpcId:                    node: myvpc             - nics.subnetId:                     node: mysubnet弹性云服务器是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算云服务器。模板中定义了一个弹性云服务器myecs,有如下几个属性:    1.         name:云服务器名称。    2.         instances:创建云服务器数量,本模板中设置为1。    3.         imageId:云服务器使用的镜像ID,本模板中设置为a3934478-bfeb-4a02-b257-9089779f0380,是ECS系统盘镜像CentOS 6.3 64bit的镜像ID。    4.         flavor:云服务器的规格,待创建云服务器的系统规格的ID,如c1.medium 表示1核|1G,c2.large 表示2核|4G。    5.         vpcId:云服务器所属VPC的ID,支持使用已有或新建虚拟私有云ID。在模板中使用的是新建的VPC,定义了VPC对象myvpc并建立依赖关系。这里用到了get_reference函数,用于获取相关联的元素的动态属性值。    6.         availabilityZone:云服务器对应可用分区信息,本模板中使用的是华南-广州区域的一个可用分区cn-south-1a。各Region的可用分区可以参见:http://developer.huaweicloud.com/endpoint。    7.         nics:云服务器对应的网卡信息,模板中nics值通过定义的子网mysubnet来获取。    8.         rootVolume:云服务器对应系统盘相关配置。volumetype是云服务器系统盘对应的磁盘类型,需要与系统所提供的磁盘类型相匹配。这里使用SATA表示普通IO磁盘类型。size表示系统盘大小,容量单位为GB,这里设置为40。弹性云服务器创建成功:
  • [介绍/入门] AOS编排语言系列教程(三):创建子网Subnet
    【摘要】 上一章我们学习了如何创建VPC,VPC范围比较大,我们可以在VPC中定义一个子网,子网是为了在VPC内部做进一步的网络划分。子网是VPC的IP地址范围内的一个区段,模板中用requirements定义子网与vpc的依赖关系。接下来我们基于上个模板看看如何在创建的VPC中定义一个子网。经过前面的学习,你已经对node_templates有了一定的了解。不过到目前为止,我们都只是用node_templates来定义vpc,只有一个元素的模板也太简单了吧?没错,你的追求应该更高一点。其实node_templates还可以定义很多其他的元素。上一章我们学习了如何创建VPC,VPC范围比较大,我们可以在VPC中定义一个子网,子网是为了在VPC内部做进一步的网络划分。子网是VPC的IP地址范围内的一个区段,模板中用requirements定义子网与vpc的依赖关系。接下来我们基于上个模板看看如何在创建的VPC中定义一个子网:tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      name: my-vpc      cidr: '192.168.0.0/16'  mysubnet:    type: HuaweiCloud.VPC.Subnet    properties:      name: my-subnet      cidr: '192.168.1.0/24'      gateway: 192.168.1.1      vpcId:        get_reference: myvpc      dhcpEnable: true    requirements:      - vpcId:          node: myvpc模板中mysubnet的属性cidr为子网内可使用的地址范围,gateway为子网的网关,dhcpEnable表示是否为该VPC的子网开启DHCP功能。子网创建成功:
  • [介绍/入门] AOS编排语言系列教程(二):初识AOS编排语言,创建你的第一个AOS模板
    【摘要】 本文介绍了如何用AOS编程语言来编写一个简单的模板,用于创建虚拟私有云。通过AOS部署应用上云流程非常简单,您只需要编写好模板,并基于该模板创建堆栈。如何在AOS服务上创建模板呢?有如下几种方法:1.选择公共模板:AOS提供了多个公共模板,您可以基于公共模板来快速创建堆栈。2.使用设计器创建模板:自定义编写模板比较难以上手,通过设计器可以简化模板的撰写和编辑工作,并可以直接可视化查看各资源的关系。建议您通过使用设计器了解设计器的使用方法。3.自定义编写模板:您可以使用YAML格式来写作模板。独立编写模板前,建议您先通过模板参考来初步学习一下。自定义编写模板有两种方式,一种是直接在界面手动输入;另一种是在本地编辑,编辑完之后通过上传文件传到系统中。AOS编程语言是基于yaml的,使用YAML格式的好处是可以使用#注释功能,便于在模板中增加模板编写者意图的描述。YAML语法不支持使用Tab键,层次关系需要使用空格来对齐(空格个数为2的整数倍,如2、4、6、8等)。初次使用时,经常会遇到此类错误,请注意。下面我们用AOS编程语言来编写一个简单的模板,用于创建虚拟私有云:tosca_definitions_version: huaweicloud_tosca_version_1_0node_templates:  myvpc:    type: HuaweiCloud.VPC.VPC    properties:      name: my-vpc      cidr: '192.168.0.0/16'tosca_definitions_version是模板中的必填项,用于标识模板的版本信息。当前AOS支持的版本为huaweicloud_tosca_version_1_0。node_templates也是必填项,用于定义该模板中编排的元素对象集合,其中所有对象均为元素(可以是一个应用、一个云服务资源),这里我们使用了node_template定义了一个虚拟私有云myvpc,它是HuaweiCloud.VPC.VPC类型的,具有两个属性name和cidr,分别表示虚拟私有云名称和虚拟私有云下可用子网范围。接下来保存刚编写的模板为vpc.yaml文件,用该模板创建虚拟私有云,需要登录AOS控制台,选择 “创建模板”,上传本地文件vpc.yaml。然后选择“我的模板”,在模板列表中可查看到保存成功的模板,单击该模板后的“部署堆栈”即可创建堆栈。系统会自动跳转到堆栈详情页面,等待1分钟左右的时间,堆栈就创建成功了。
  • [介绍/入门] AOS编排语言系列教程:开启AOS之旅,解锁各种自动化姿势
    AOS编排语言系列教程目录AOS编排语言系列教程(一):开启AOS之旅,解锁各种自动化姿势AOS编排语言系列教程(二):初识AOS编排语言,创建你的第一个AOS模板AOS编排语言系列教程(三):创建子网SubnetAOS编排语言系列教程(四):创建弹性云服务器ECSAOS编排语言系列教程(五):创建安全组SecurityGroupAOS编排语言系列教程(六):创建共享云硬盘EVSAOS编排语言系列教程(七):创建负载均衡ELBAOS编排语言系列教程(八):创建容器集群ClusterAOS编排语言系列教程(九):创建数据库RDSAOS编排语言系列教程(十):创建分布式缓存RedisAOS编排语言系列教程(十一):输入inputs,扩展模板可复用性AOS编排语言系列教程(十二):输出outputs,直观看到部署结果AOS编排语言系列教程(十三):映射mappings,提取特定变量对应内容AOS编排语言系列教程(十四):条件conditions,控制元素是否创建部署AOS编排语言系列教程(十五):堆栈嵌套AOS.StackAOS编排语言系列教程(十六):AOS编排语言的IDE--图形化设计器【摘要】 为了让用户在华为云上更方便的对资源、应用、中间件进行管理,华为云推出了云上资源的自动化编排服务——AOS(Application Orchestration Service),可以对华为云上的应用、云中间件、传统的和容器化的计算、存储、网络资源进行统一的部署管理,并通过编排引擎,让用户可自行定义资源、应用间的依赖关系、引用关系等,实现一站式云资源开通和云应用的部署。   故事是这样的,有一天领导让小张在华为云上创建一个电商网站,于是小张开始申请各种资源:进入网络服务,申请VPC、Subnet;进入网络服务的安全组页面,创建安全组;进入弹性云服务器,创建ECS;进入弹性负载均衡,创建ELB,并把ECS添加到ELB的监听范围内;进入RDS服务,创建RDS云数据库实例;进入DCS服务,创建DCS分布式缓存的实例;手动把上面所有资源的信息纪录下来,以备安装应用时配置使用;上传必须的软件包;远程登陆到ECS进行安装、配置。这一套操作搞下来,把小张累的够呛,小张忍不住向同事小王吐槽,小王听完一脸鄙视:“你也太out了,竟然还自己手动去申请资源,教你一招,用AOS应用编排服务很快就能搞定。”   小张一脸不相信:“真有这么神奇?”   小王接过鼠标,一边说一边操作:“申请资源的步骤,我们可以通过AOS模板一步完成,不需要挨个申请。AOS汇聚了华为云上主流服务的创建、删除、修改API,我们不需要知道云服务的API,只需要按AOS提供的规范定义资源模型和模型间的关系,剩下的开通资源的过程就交给AOS了。“小王直接选取了一个容器集群进行部署,创建集群常用的参数都已经自动填充:“后面几步同样也是通过AOS样例模板一步搞定,我直接选取Magento的电商应用部署,当然如果你部署的不是Magento的应用,手动修改一下模板就ok了。”   小张感叹道:“这么快就创好了一个集群和一个基于容器运行的电商应用!”   如果您和小张一样,也正陷入如何将业务快速迁移上云、如何简化云上的部署和运维、如何减少云上的重复工作的苦恼,那么建议你先放下这些烦恼,一切会在你体验AOS后发生改变。   为了让用户在华为云上更方便的对资源、应用、中间件进行管理,华为云推出了云上资源的自动化编排服务——AOS(Application Orchestration Service),可以对华为云上的应用、云中间件、传统的和容器化的计算、存储、网络资源进行统一的部署管理,并通过编排引擎,让用户可自行定义资源、应用间的依赖关系、引用关系等,实现一站式云资源开通和云应用的部署。并且AOS提供高效的一键式云上应用复制和迁移能力,使用模板创建资源或应用,可以做到不断地销毁和重建而不会任何偏差。          AOS目前支持20多个服务和70多个对象的编排,可通过AOS编排语言统一描述所需基础资源、应用系统、应用上层配套服务及三者之间的关系。          AOS也准备了一些常用的样例模板,用来演示AOS是如何方便地创建常用的资源集合的。当你开始动手写你自己的模板的时候,可以从这些样例里面剪切你需要的片段,拷贝到自己的模板中。为了让用户第一次使用时不那么忐忑和紧张,除了提供上面所说的覆盖各种场景的样例模板外,AOS还提供了可视化的模型设计器,就好比编程时有了可以直接copy的代码sample,还得有个好用的IDE嘛,这样会大大简化模板的开发,0基础也能快速开发、部署模板。AOS将一个运行环境中的所有组件作为一个整体来部署、管理和监控。你可以将整个繁琐过程统统交由AOS完成:你只需要描述你要什么,然后交给AOS。AOS就会分析这个描述文件,并按照你要求的顺序,同时也考虑资源之间的依赖关系,来控制这些资源的初始化过程。这就有点像写脚本干重复的活儿,需要做的时候把脚本执行一遍。   上面提到的描述文件其实是一个yaml或json文件,也叫做模板。在模板中,用户描述控制逻辑,AOS根据用户指示来执行,以达到自动化部署、运维的目的。在整个流程处理完后,你可以在一个独立界面上看到所有的创建的资源对象的完整视图。模板可以在不同的环境上运行,如华北区,华南区这种不同的region,或者同一个region中自己设定的测试、类生产、生产环境。同时模板支持参数化,只需更改输入的值,即可控制要部署的对象的规格,实例数量,以及执行什么命令,从而实现模板的重复利用。   任何一种自动化的过程,都需要一种描述语言来控制其执行流程。AOS模板也是一样的逻辑,AOS编排语言就是用来描述你想要的云对象(包括应用、资源、服务等所有华为云上的对象)。好了,现在我们就来一起学习AOS编排语言吧。
  • [介绍/入门] 【K8S上的分布式系统应用编排】一键式部署你值得拥有!
    随着容器技术的发展,容器的优势:易打包、可复制、隔离性、低开销,使得不断的有应用开始从传统的物理机、虚拟机,逐渐的搬迁到容器上。而Kubernetes的诞生和发展壮大,又降低了应用的标准化部署管理的难度,大大加速了应用搬迁到容器的进程。将一个存在前台、后台、数据库的分布式系统一键式部署到K8S上时,可以有哪些方法和途径呢?K8S上的应用模型Kubernetes对容器应用的编排,是将应用的运行时、配置、服务提供、存储、镜像等都定义成了多种资源对象,每种资源对象都可以按照一定的格式进行描述定义。比如环境变量可以定义到configmap对象,也可以定义在容器的配置中;而应用的运行时,则是多种工作负载:Deployment、StatefulSet、DaemonSet等。                                              一个应用就会至少有一个工作负载,以及一些配置,访问入口等资源对象。通过控制这些资源对象,就可以完成一个应用,或者多个应用的统筹管理,这就是k8s上的应用编排。最原始的方式当然是直接操控每一个的资源对象,但是,多个分散的文件,又没有变量替换功能,就意味着这些文件只能在一套环境上执行,一旦环境有变化,还需要手动修改文件的内容;这些对象之间还必须以一定的先后顺序执行,否则会失败。当应用更多时,执行的流程就会更加的复杂。 分布式系统的编排要求下面是一个典型的分布式系统,包括前端程序、后台程序、后台数据库,负载均衡器等。在应用系统发展到一定程度,自然而然的就会对系统的各部件角色进行拆分,对于每种角色,都可以进行一定的水平或者垂直的扩展,保证应用的扩展性,解除系统的单点问题。 这样的一个系统,对应用编排有这些要求:1.       系统中可以定义多种应用2.       每个应用的多个资源对象之间,可以定义控制依赖关系3.       不同应用之间存在配置上的传递4.       不同应用之间存在启动顺序上的先后依赖关系 Helm:社区原生的包管理工具由于K8S的资源对象都具备着一定的格式化规范,社区提供了Helm用于处理k8s应用的打包,这个包叫做一个chart。Chart的包格式如下:一个Chart.yaml文件,用户定义包的名称、版本等信息,一个templates目录,里面定义了这个应用所有相关的资源描述的go-template语法的模板,而模板使用到的变量,则在values.yaml文件中进行声明定义。Helm的实现原理很简单,在客户端实现变量的渲染替换,再将完整的内容传递到服务端(tiller),由tiller将生成的k8s对象按照一定的顺序调用k8s接口,完成应用的编排创建。helm还支持了dependency的依赖关系,用于chart包之间的引用。而应用之间的参数传递,也可以通过共享相同的变量输入来完成。这样,分布式系统要求的1,2,3,4看起来也都满足了。但是,在helm的实际应用中,存在着下面的几个问题。l  应用中的任务下发,只控制了请求的发送顺序,并不能保证创建完成的先后顺序。这就导致了有时候secret之类的对象尚未处理完成,deployment就去引用而失败的情况。l  对于Deployment之类的工作负载,helm没有去真正的判断实例是否启动就绪完成了,即使应用实例因为某些原因失败了,helm也感知不到。l  Helm的dependency依赖,只控制了chart包的引用,实际上的多个应用一起创建时,还是全部展开按照类型顺序统一执行的。l  Chart包的模板编写,一方面需要用户对k8s的资源对象结构有一定的理解基础,另一方面go-template的引入使得模板变成了非格式化的结构,无法正常的进行校验处理,导致容易出错。对于Helm在处理分布式系统中遇到的问题,并非难解。核心在于一套完善的DAG框架,能够精确控制所有的步骤流程,以及每个步骤的结果管理和传递。而这套框架最好是格式化的简单的结构,不需要那么复杂,要精通K8S、go-template等等,最好有图形化的界面,可以辅助编写。应用编排服务:解决依赖和配置传递华为云上的应用编排服务(以下简称AOS),就是这样一个能够满足复杂分布式应用在K8S上的各种要求的系统。AOS服务对接了华为云的云容器引擎(CCE服务),提供了一套规范化的模型结构,可定义K8S上的各种资源对象。通过模型设计的模板,可以实现复杂分布式系统的一键式编排创建在K8S集群上。l  优秀的图形化设计器,通过图形化拖拽即可设计应用结构,将应用所需的各种资源,精确控制所有对象的执行顺序关系,实现最大化的并行。l  通过编排语法可以将应用之间的共享参数、应用的输出访问地址等信息进行传递输出。l  良好的变量输入输出机制,将应用在不同环境中的部署所需配置提炼,实现一套模板,多处复用。前面的分布式系统,在AOS编排设计后,就可以成为下面的这个图。这样的一个分布式系统,将依次创建DB数据库,执行创建数据库表结构的job,而数据库的访问信息将记录到secret中,由两个后端程序app1-back2,app-backend1挂载使用。两个后端程序还同时引用了共同的配置appconfig。前台应用通过ingress和service去访问后端程序,并提供了ingress用于外部访问。这个图中没有体现负载均衡器,因为这里的ingress配置了连接华为云的ELB服务。应用编排系统还支持编排管理云上的各种服务,比如RDS数据库,ELB负载均衡器等,利用这些服务,将简化分布式系统的云上架构,帮助用户聚焦在自身的业务,不再需要花大力气在业务的交付和部署运维上。 AOS服务信息,请扫描下方二维码获取。
  • [技术干货] 【华为云学习干货集合大福利!】一键式应用上云资料贴
    本帖分享材料包含:一、 区块链21天课程全干货精华整理 二、一键式应用上云视频教程资料4个G大咖分享及PPT资料三、一键式应用上云秘制学习精华下载须知:1、 只需回复任意内容便可查看到下载链接,通过提取码即可下载此资料包。2、  本资料包仅供学习一键式应用上云AOS产品使用,禁止一切违规、带有商业目的的传播情况。暂时关闭,谢谢配合!通过学习资料,您还可以:一、体验AI!使用应用编排服务AOS一键快速部署Tensorflow深度学习工具,AI就此开启,体验从未从此迅速!二、体验区块链!使用应用编排服务AOS一键部署Nervos AppChain区块链,追求新潮技术,乐此不疲~三、体验更多丰富场景,尽在应用编排服务AOS-模板市场!电商应用、FC坦克大战游戏,全场景生态,覆盖你的认知边界!   最后!还可以参与我们的 一键式上云方案挑战汇 ! 使用AOS设计器,构建你的场景解决方案!挑战最快应用上云,超级大奖等你来拿!
  • [公告] AOS支持已有CCE资源对象生成模板
    亲爱的华为云 AOS用户:    AOS现在支持已有CCE资源对象生成AOS模板,在生成器界面点击“生成模板”按钮,只需点点点,选择所需资源对象的集合就好啦,马上收获一个AOS的模板,快去体验一下吧~有关华为云AOS的更多信息,请访问我们的网站:产品页面 控制台  帮助文档 发布历史 支持的华为云资源 
  • 强烈要求增加包周期的能力
    AOS的能力确实很有用,解决了自动化的需求,但是为什么没有包周期的资源? 想方便用华为云,只能用AOS,但是只有按需计费的资源,太贵了啊
  • [公告] AOS支持编排API网关服务
        马上就是星期五 17:30,面对眼前满满两页A4纸的API列表,下周一就要上线,想想要手动把这些API一个个的注册到网关上,是否有几分无奈,您是否觉得这个周末的约会又要泡汤了?    不要怕,有问题AOS来帮忙解决。亲爱的华为云 AOS用户:    AOS最新版本已经实现华为云API网关服务基本资源对象的编排管理,包括:API、API分组、API流控。AOS提供快速编排API资源的能力,您可以通过在模板中复制已有的API对象,快速完成大量API资源对象的编写,并通过AOS的编排能力,迅速在API网关上进行批量注册和流控配置,提升API管理效率十倍以上。有关华为云AOS的更多信息,请访问我们的网站:产品页面 控制台  帮助文档 发布历史 支持的华为云资源 
总条数:47 到第
上滑加载中