目前,阿里云资源编排服务(ROS)开始支持ECS实例云助手功能,增加了2个新的云资源类型。
- ALIYUN::ECS::Command 创建命令
- ALIYUN::ECS::Invocation 执行命令
通过以上ROS资源类型,可以方便的创建脚本,然后对运行中(Running
)的一台以及多台实例执行 bat/PowerShell(Windows 实例)脚本或者 Shell 脚本(Linux 实例)。
你也可以设置脚本命令的执行周期,使实例维持在某种状态、获取实例监控以及日志信息或者守护进程等。云助手不会主动发起任何操作,所有的操作都在您的可控范围内。
资源类型介绍
如果你还不了解阿里云资源编排(ROS),请点击这里。
资源编排在云助手的API上进行了封装,提供了创建命令和执行命令两个资源类型,下面让我们看下如何使。
创建云助手命令
通过资源编排(ROS)创建一条命令。
{
"ROSTemplateFormatVersion" : "2015-09-01",
"Resources" : {
"MyCommand": {
"Type": "ALIYUN::ECS::Command",
"Properties": {
'Name': 'my-command',
'Type': 'RunShellScript',
'Description': 'my-command-description',
'CommandContent': 'ZWNobyAxMjM='
}
}
},
"Outputs": {
"CommandId": {
"Value" : {"Fn::GetAtt": ["MyCommand", "CommandId"]}
}
}
}
这个例子里我们选择了资源类型ALIYUN::ECS::Command
,并且在Properties里输入了命令的一些配置,其中需要较为关注的有:
Name 命令的名称,这里设置为 my-command
。
Type 命令的类型,目前云助手支持下面三种脚本,这里设置为RunShellScript
。
- Windows 实例适用的 Bat 脚本(
RunBatScript
) - Windows 实例适用的 PowerShell 脚本(
RunPowerShellScript
) - Linux 实例适用的 Shell 脚本(
RunShellScript
)
CommandContent 命令脚本Base64 编码后的内容。大小不能超过 16 KB。这里设置为ZWNobyAxMjM=
(echo 123 base54编码后得到)。
最后,通过Outputs标签返回新建命令的CommandId。
执行云助手命令
通过资源编排(ROS)执行命令脚本。下面的例子是,我们在创建命令后,执行这个命令。
{
"ROSTemplateFormatVersion" : "2015-09-01",
"Resources" : {
"MyCommand": {
"Type": "ALIYUN::ECS::Command",
"Properties": {
'Name': 'my-command',
'Type': 'RunShellScript',
'Description': 'my-command-description',
'CommandContent': 'ZWNobyAxMjM='
}
},
"MyInvocation": {
"Type": "ALIYUN::ECS::Invocation",
"Properties": {
'CommandId': { "Fn::GetAtt" : [ "MyCommand", "CommandId" ] },
'InstanceIds': [
"i-2zefq1f3ynnrr89qkzg9"
],
'Timed': true,
'Frequency': '0/10 0/1 * * * ?'
}
}
},
"Outputs": {
"CommandId": {
"Value" : {"Fn::GetAtt": ["MyCommand", "CommandId"]}
},
"InvokeId": {
"Value" : {"Fn::GetAtt": ["MyInvocation", "InvokeId"]}
}
}
}
这个例子里我们选择了资源类型ALIYUN::ECS::Invocation
,配置有:
CommandId 命令的ID,这里使用 Fn::GetAtt
方法从 MyCommand
中获取到 CommandId
。
InstanceIds 脚本命令执行的实例ID列表。最多支持20台实例。实例需要为专有网络运行中的实例。
Timed 命令是否为周期执行。
Frequency 周期任务的执行周期,该参数取值遵循Cron表达式,参阅 Cron 表达式[](https://www.alibabacloud.com/help/faq-detail/64769.htm)。
最后,通过Outputs标签返回新建命令的CommandId和InvokeId。
使用ROS控制台
- 打开ROS控制台。选择资源栈管理
- 选择创建资源栈,输入模板数据,然后下一步创建。如果执行命令失败,整个Stack的资源自动回滚。
此外,通过阿里云资源编排可以创建非常丰富的资源类型, DevOps 实践中,可以轻松地克隆开发、测试、线上环境。同时,也可以更容易实现应用的整体迁移和扩容,快来体验吧!