云助手是专为云服务器ECS打造的原生自动化运维工具,通过免密码、免登录、无需使用跳板机的形式,在ECS实例上实现批量运维、执行命令(Shell、Powershell和Bat)和发送文件等操作。典型的使用场景包括:安装卸载软件、启动或停止服务、分发配置文件和执行一般的命令(或脚本)等。

功能特性

在实例处于 运行中Running)状态,并安装云助手客户端后,您可以通过ECS管理控制台或者API,使用云助手对该实例进行下列操作。
  • 在实例上运行Bat、PowerShell脚本(Windows实例)或Shell脚本(Linux实例)。
  • 上传文件到实例。
  • 同一脚本命令可在多台安装了云助手客户端的实例上执行,实例间互不影响。
  • 设置命令自定义参数,实现一份云助手命令在多种场景中使用。
说明 云助手不会主动发起任何操作,所有操作都在您的可控范围内。

应用场景

云助手可帮您完成部署与运维任务,包括但不限于:

  • 上传并运行自动化运维脚本
  • 运行实例上已有的脚本
  • 管理软件生命周期
  • 部署代码或者应用
  • 轮询进程
  • 安装补丁或安装安全更新
  • 从对象存储OSS或者yum源获取更新
  • 修改主机名或用户登录密码

计费方式

使用云助手不收取任何费用。

但是云助手在部署与运维过程中,使用ECS资源可能会产生费用。ECS资源计费详情,请参见计费概述

使用限制

  • 只能通过API设置周期性云助手命令,且周期间隔不能小于10秒。
  • 运行命令时,创建的Bat、PowerShell或者Shell脚本和自定义参数在Base64编码后,综合大小不能超过16 KB。
  • 上传文件时,文件在Base64编码后大小不能超过32 KB。
  • 一条命令中,自定义参数的个数不能超过20个。
  • 您只能在以下操作系统中运行云助手命令:
    • Alibaba Cloud Linux
    • CentOS 6/7/8及更高版本
    • CoreOS
    • Debian 8/9/10及更高版本
    • OpenSUSE
    • RedHat 5/6/7及更高版本

      RedHat中需要您自行下载rpm包安装云助手客户端,详情请参见安装云助手客户端

    • SUSE Linux Enterprise Server 11/12/15及更高版本
    • Ubuntu 12/14/16/18及更高版本
    • Window Server 2012/2016/2019及更高版本

更多有关云助手的使用限制及配额,请参见云助手使用限制

名词解释

云助手的常用名词及其具体描述如下表所示。

常见名词 说明
云助手 云助手官方名称,可以帮您在ECS实例以及弹性裸金属服务器实例上自动以及批量执行日常维护任务。所有阿里云地域均支持云助手服务。
云助手客户端 安装在ECS实例中的轻量级插件,所有在实例中完成的命令都会通过客户端完成。
  • Windows操作系统中任务进程名称为AliyunService。
  • Linux操作系统中任务进程名称为aliyun.service。
云助手守护进程 用于监控云助手客户端的资源消耗情况,上报云助手客户端的运行状态,以及当云助手客户端崩溃时重启客户端。
  • 服务名称:AssistDaemon
  • 路径:/usr/local/share/assist-daemon/assist_daemon
说明 目前云助手守护进程仅支持Linux操作系统。
任务执行路径
云助手会将用户的命令内容以文件形式先保存到实例上,然后再执行文件,具体保存路径如下:
  • Linux:/tmp
  • Windows:云助手安装路径/work/script
命令 需要在实例中执行的具体命令操作,如一份Shell脚本或者PowerShell脚本。
自定义参数 您在命令中设置的变量值,以{{key}}的形式表示,可以在执行命令时以{{"key":"value"}}的形式设置自定义参数的值。由于您在一个地域下能保有的云助手命令有配额限制,建议您通过设置自定义参数提高命令的灵活性以及多场景适用性。
单次执行 在一台或者多台实例中执行某个命令,即为一次执行(Invocation)。
周期执行 在一台或者多台实例中执行某个命令时,您可以指定执行时序或周期,周期性地执行命令进程。
执行状态 命令执行状态之间的关系。更多详情,请参见云助手概述

命令执行状态

在一台实例上运行一条命令时,实例级别的状态如下表所示,对应的API字段是InvocationStatus

API状态 状态显示 描述
Running 执行中 命令正在被执行。
Stopping 停止中 命令正在被停止执行。
Stopped 停止 命令已经被停止。
Finished 执行完成 命令顺利执行完成。执行完成并不代表执行成功,您需要根据命令进程的实际输出信息(Output)及退出码(ExitCode)查看命令是否按预期执行成功。
Failed 执行失败 命令无法被执行,或者进程过了超时时间(Timeout)后仍然未执行完成。

批量执行状态

为便于管理批量执行或者周期执行,您可以从总执行状态、实例级别执行状态以及执行记录级别的状态概念出发管理命令运行的生命周期,对应的API字段是 InvokeStatus。状态各级别之间的包含关系如下图所示。 状态管理的包含关系示意图
  • 在多台实例上运行一条命令,总执行状态说明如下表所示。
    API状态 状态显示 描述 优先级
    Running 执行中 部分或全部实例级别执行状态为执行中(Running)。 1
    Stopping 停止中 部分或全部实例级别执行状态为停止中(Stopping)。 2
    Stopped 已停止 全部实例级别执行状态均为已停止(Stopped)。 3
    Failed 执行失败 全部实例级别执行状态均为执行失败(Failed),或者部分为执行失败(Failed)且其余为已停止(Stopped)。 4
    Finished 执行完成 全部实例级别执行状态均为执行完成(Finished),或者部分为执行完成(Finished)且其余为已停止(Stopped)。 5
    PartialFailed 部分失败 实例级别执行状态中既包含执行失败(Failed),又包含执行完成(Finished)。 6
    以三台ECS实例为例,下图为多台实例同时做单次批量执行命令时,总执行状态与实例级别执行状态的关系。 单次批量调用命令的生命周期示意图
  • 周期命令的执行状态说明见下表所示。
    状态 描述
    总执行状态 除用户自行停止所有实例的执行之外,总执行状态一直维持为执行中Running)。
    实例级别执行状态 除用户自行停止之外,实例级别执行状态一直维持为执行中Running)。
    执行记录级别的状态 具体请参见云助手概述

相关操作

您可以通过ECS控制台或者调用API使用云助手。

业务需求 参考文档 相关API
ECS实例中需要安装云助手客户端后才能使用云助手,2017年12月01日之后使用公共镜像创建的ECS实例,默认预装云助手客户端。因此,部分ECS实例需要您自行安装云助手客户端。 安装云助手客户端
首次接触云助手,并习惯使用API调用工具。 不涉及
新建一份云助手命令。 创建命令
对目标ECS实例执行已创建的命令。 执行命令
查看命令的执行状态,查看命令的执行结果,即在指定ECS实例中的实际输出信息。 查看执行结果及修复常见问题
修改已创建的命令,支持修改命令名称和描述。 修改命令 不涉及
为一份云助手命令新增版本。或者您希望修改命令的名称、描述、类型、内容、执行路径或者超时时间等更多属性。 克隆命令 不涉及
停止正在进行的命令进程。 停止命令 StopInvocation
删除不再需要的云助手命令,避免命令达到配额上限时影响新建命令。 删除命令 DeleteCommand