-
【摘要】 大家也许会发现,创建数据库模板和分布式缓存模板中用到了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都是由用户输入,用户在创建堆栈时配置这些输入参数。
-
【摘要】 关系型数据库(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。数据库创建成功:
-
【摘要】 华为云的云容器引擎(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。容器集群创建成功:
-
【摘要】 弹性负载均衡( 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需要根据实际情况填写,未正确填写会导致堆栈部署失败。负载均衡创建成功:
-
【摘要】 云硬盘(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。共享云硬盘创建成功:
-
【摘要】 安全组是逻辑上的分组,为同一个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。安全组创建成功:
-
【摘要】 弹性云服务器(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。弹性云服务器创建成功:
-
【摘要】 上一章我们学习了如何创建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服务上创建模板呢?有如下几种方法: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编排语言系列教程(三):创建子网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编排语言吧。
-
随着容器技术的发展,容器的优势:易打包、可复制、隔离性、低开销,使得不断的有应用开始从传统的物理机、虚拟机,逐渐的搬迁到容器上。而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用户: AOS现在支持已有CCE资源对象生成AOS模板,在生成器界面点击“生成模板”按钮,只需点点点,选择所需资源对象的集合就好啦,马上收获一个AOS的模板,快去体验一下吧~有关华为云AOS的更多信息,请访问我们的网站:产品页面 控制台 帮助文档 发布历史 支持的华为云资源
-
AOS的能力确实很有用,解决了自动化的需求,但是为什么没有包周期的资源? 想方便用华为云,只能用AOS,但是只有按需计费的资源,太贵了啊
-
马上就是星期五 17:30,面对眼前满满两页A4纸的API列表,下周一就要上线,想想要手动把这些API一个个的注册到网关上,是否有几分无奈,您是否觉得这个周末的约会又要泡汤了? 不要怕,有问题AOS来帮忙解决。亲爱的华为云 AOS用户: AOS最新版本已经实现华为云API网关服务基本资源对象的编排管理,包括:API、API分组、API流控。AOS提供快速编排API资源的能力,您可以通过在模板中复制已有的API对象,快速完成大量API资源对象的编写,并通过AOS的编排能力,迅速在API网关上进行批量注册和流控配置,提升API管理效率十倍以上。有关华为云AOS的更多信息,请访问我们的网站:产品页面 控制台 帮助文档 发布历史 支持的华为云资源
上滑加载中
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
去报名 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签