资源编排服务 RFS
资源编排服务 RFS
- 最新动态
- 产品介绍
- 用户指南
- 模板参考
- API参考
- 常见问题
-
更多文档
-
用户指南(阿布扎比区域)
- 产品介绍
- 入门
- 堆栈管理
- 审计
-
模板参考
- 模板简介
- 元素列表
-
数据结构
- AOS.BatchItem
- Basic.KeyValuePair
- Basic.Label
- Basic.LabelSelector
- Basic.NameAndSecretValue
- Basic.NameKeyPair
- Basic.NameValuePair
- CCE.Addon.AutoScaler.Node
- CCE.DataVolume
- CCE.HelmChart
- CCE.Labels
- CCE.NodePool
- CCE.PublicIP
- DCS.InstanceBackupPolicy
- DCS.PeriodicalBackupPlan
- ECS.DataVolume
- ECS.EIP
- ECS.ExtendParam
- ECS.MountedVolumes
- ECS.NICS
- ECS.Personality
- ECS.PublicIP
- ECS.RootVolume
- ECS.SecurityGroup
- ECS.ServerTags
- ECS.VolumeExtendParam
- K8S.PodSecurityContext
- K8S.SecurityContext.SeLinuxOptions
- MySQL.DBUser
- MySQL.DataBase
- MySQL.DataStore
- RDS.BackupStrategy
- RDS.HA.Mysql
- RDS.Volume
- VPC.BandWidth
- VPC.PublicIP
- 附录
- 常见问题
- 修订记录
- API参考(阿布扎比区域)
- 用户指南(吉隆坡区域)
- API参考(吉隆坡区域)
-
用户指南(阿布扎比区域)
- 通用参考
链接复制成功!
模板写作技巧
组件启动等待
假设,您要启动A(Application)和S(Service)两个组件,并且A依赖S(即:A -> S),A需要去连接S做业务。以A为Tomcat,S为MySQL为例。
AOS编排时,会根据模板要求先启动S,待S启动成功后(进程启动成功,实际S的业务功能还不可用),就会接着启动A。由于S业务功能还并未完全启动,A又很快启动,马上去连接S时A就会启动失败,导致整个堆栈启动失败。所以在A启动之前,可能需要等待一小段时间。
目前,在模板语法中是不支持等待的,等待逻辑需要在业务流程中添加。
启动前等待示例如下:
name: #参数名 type: string #参数类型 description: resource name #参数介绍 Task-Name: #任务名,按需要自己取名 description: sleep before business actions: poststart: #定义启动前:执行脚本 command: "/bin/sh, -c, sleep
数字转成字符串
很多情况下,定义的变量是一个字符串,但同时需要引用此变量既作为字符串,又作为数字。例如,端口号在作为ENV环境变量时,要求其值是字符串类型,而在作为应用微服务属性时,要求其值为数字。
针对上述问题,有如下两种方式可解决:
- 方式一:定义两个变量
定义PORT-i, PORT-s两个变量,PORT-s是字符串,PORT-i是数字。这种方法虽然可以直截了当的解决问题,但效果并不是很好。因为带入了重复,从而使模板的可维护性和易用性变差。
- 方式二:使用concat内置函数
通过concat内置函数将多个小字符串拼接为一个更长、更完整的字符串。concat内置函数的参数可以是任意类型的变量,支持将数字和字符串混合拼接。示例如下:
首先定义变量:
magento-EPORT: type: integer default: 32080
其次在ULR时需要为字符串:
name: MAGENTO_URL value: concat: - "http://" - {get_input: magento-EIP} - ":" - {get_input: magento-EPORT} #这里直接将数字转为字符串了
再次在微服务属性时需要为数字:
serviceSpec: ports: - port: {get_input: magento-container-port} nodePort: {get_input: magento-EPORT} #这里要求是数字
父主题: 模板简介