云助手是专为云服务器ECS打造的原生自动化运维工具,免密码、免登录、无需使用跳板机,即可批量执行命令(Shell、PowerShell、Bat等),实现自动化运维脚本、轮询进程、安装卸载软件、启动或停止服务、安装补丁或安装安全更新等任务。
功能特性
在实例处于运行中(Running
)状态,并安装云助手Agent后,您可以通过ECS管理控制台或者API,使用云助手对该实例进行下列操作。
批量运维
同一脚本命令可在多台安装了云助手Agent的实例上执行,实例间互不影响。
上传文件
可以将本地的文件(例如配置文件、脚本等),通过云助手上传到ECS实例。
公共命令
公共命令包含一些比较复杂的服务器配置、健康或安全检测、应用安装、文件处理、系统补丁安装、更改系统配置、服务或应用管理的脚本,以及云助手插件(包含脚本或可执行程序)。使用公共命令,可以快速地完成某些复杂配置,很大程度提升您的操作和运维效率。
简单易用
您可以使用自定义参数/内置参数实现命令的简单灵活配置,实现一份云助手命令在多种场景中使用。
安全可控
云助手不会主动发起任何操作,所有操作都在您的可控范围内。
应用场景
云助手可帮您完成部署与运维任务,包括但不限于:
上传并运行自动化运维脚本
运行实例上已有的脚本
管理软件生命周期
部署代码或者应用
轮询进程
安装补丁或安装安全更新
从对象存储OSS或者YUM源获取更新
修改主机名或用户登录密码
计费说明
云助手服务本身不收费。
但是使用云助手在部署与运维云资源过程中可能会产生费用。ECS资源计费详情,请参见计费概述。
使用限制
只能通过控制台方式调用Python或Perl脚本。
说明请确保目标实例具备正确的运行环境,例如执行Python命令时,需确保ECS实例已安装Python环境。
创建的Bat、PowerShell或者Shell脚本和自定义参数在Base64编码后,使用场景与文件大小说明如下:
创建命令:综合大小不能超过18 KB。
立即执行并保存命令:综合大小不能超过18 KB。
立即执行但不保存命令:综合大小不能超过24 KB。
上传文件:文件大小不能超过32 KB。
一条命令中,自定义参数的个数不能超过20个。
您只能在以下操作系统中运行云助手命令:
Alibaba Cloud Linux
CentOS 6/7/8及更高版本
CoreOS
Debian 8/9/10及更高版本
OpenSUSE
Rocky Linux
RedHat 5/6/7及更高版本
RedHat中需要您自行下载rpm包安装云助手Agent,具体操作,请参见安装云助手Agent。
SUSE Linux Enterprise Server 11/12/15及更高版本
Ubuntu 12/14/16/18及更高版本
Window Server 2012/2016/2019及更高版本
更多有关云助手的使用限制及配额,请参见云助手使用限制。
资源占用
云助手Agent所在主机的各项资源占用情况如下:
主机资源 | Linux操作系统 | Windows操作系统 |
CPU | 平均CPU使用率不到1% | |
物理内存 | 约17 MB | 约10 MB |
磁盘I/O | 平稳运行时几乎没有I/O,仅在下载升级安装包和保存命令脚本等场景下产生磁盘I/O | |
网络I/O | 平稳运行时仅有心跳上报等数据产生的少量I/O |
名词解释
云助手的常用名词及其具体描述如下表所示。
常见名词 | 说明 |
云助手 | 云助手官方名称,可以帮您在ECS实例以及弹性裸金属服务器实例上自动以及批量执行日常维护任务。所有阿里云地域均支持云助手服务。 |
云助手Agent | 安装在ECS实例中的轻量级插件,所有在实例中完成的命令都会通过云助手Agent完成。
|
云助手守护进程 | 用于监控云助手Agent的资源消耗情况,上报云助手Agent的运行状态,以及当云助手Agent崩溃时重启云助手Agent。
说明 目前云助手守护进程仅支持Linux操作系统。 |
任务执行路径 | 云助手会将用户的命令内容以文件形式先保存到实例上,然后再执行文件,具体保存路径如下:
|
命令 | 需要在实例中执行的具体命令操作,如一份Shell脚本或者PowerShell脚本。 |
自定义参数 | 您在命令中设置的变量值,以{{key}}的形式表示,可以在执行命令时以{{"key":"value"}}的形式设置自定义参数的值。由于您在一个地域下能保有的云助手命令有配额限制,建议您通过设置自定义参数提高命令的灵活性以及多场景适用性。您也可以指定内置环境参数作为自定义参数,执行命令时无需手动对参数赋值,云助手将为您自动替换为环境中对应的值。 |
单次执行 | 在一台或者多台实例中执行某个命令,即为一次执行( |
定时执行 | 在一台或者多台实例中执行某个命令时,您可以指定执行时序或周期,定时执行命令进程。 |
命令执行状态
单条命令执行状态
在一台实例上运行一条命令时,实例级别的状态如下表所示,对应DescribeInvocations中InvokeInstance
下的InvocationStatus
字段,或DescribeInvocationResults中的InvocationStatus
字段。
API状态 | 状态显示 | 描述 |
| 下发中 | 系统正在校验或发送命令。 |
| 校验不通过 | 指定命令类型或参数有误。 |
| 下发失败 | 向实例发送命令失败。实例必须在运行中,且命令可以1分钟内发送完成。 |
| 执行中 | 命令正在被执行。 |
| 执行成功 |
|
| 执行完成,退出码非0 |
|
| 执行异常 | 命令执行时发生异常无法继续。 |
| 执行超时 | 命令执行超时。 |
| 执行取消 | 命令的执行动作已经取消,命令未曾启动。 |
| 停止执行中 | 命令正在被停止执行。 |
| 已停止执行 | 命令已经被停止。 |
| 执行已终止 | 命令运行时被终止。 |
| 命令等待运行 | 定时执行的命令等待运行。 |
批量命令执行状态
为便于管理批量执行或者定时执行,您可以从总执行状态、实例级别执行状态以及执行记录级别的状态概念出发管理命令运行的生命周期,对应DescribeInvocations中Invocation
下的InvocationStatus
字段。状态各级别之间的包含关系如下图所示。
在多台实例上运行一条命令,总执行状态说明如下表所示。
API状态 | 状态显示 | 描述 |
| 系统正在校验或发送命令 | 存在至少一台实例的命令执行状态为 |
| 定时执行的命令已发送,等待运行 | 存在至少一台实例的命令执行状态为 |
| 命令正在实例上运行 | 存在至少一台实例的命令执行状态为 |
| 命令执行成功 | 各个实例上的命令执行状态均为
|
| 命令执行失败 | 各个实例上的命令执行状态均为
|
| 正在停止任务 | 存在至少一台实例的命令执行状态为 |
| 任务已停止 | 所有实例的命令执行状态是
|
| 部分实例执行成功且部分实例执行失败 | 各个实例的命令执行状态均为 |
使用云助手
您可以通过ECS控制台或者调用API使用云助手。
业务场景 | 参考文档 | 相关API |
ECS实例中需要安装云助手Agent后才能使用云助手,2017年12月01日之后使用公共镜像创建的ECS实例,默认预装云助手Agent。因此,部分ECS实例需要您自行安装云助手Agent。 | ||
首次接触云助手,并习惯使用API调用工具。 | 不涉及 | |
新建一份云助手命令。 | ||
对目标ECS实例执行已创建的命令。 | ||
查看命令的执行状态,查看命令的执行结果,即在指定ECS实例中的实际输出信息。 | ||
修改已创建的命令,支持修改命令名称和描述。 | 不涉及 | |
为一份云助手命令新增版本。或者您希望修改命令的名称、描述、类型、内容、执行路径或者超时时间等更多属性。 | 不涉及 | |
停止正在进行的命令进程。 | ||
删除不再需要的云助手命令,避免命令达到配额上限时影响新建命令。 |