云助手概述

云助手是专为云服务器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完成。

  • Windows操作系统中任务进程名称为aliyun_assist_service。

  • Linux操作系统中任务进程名称为aliyun-service。

云助手守护进程

用于监控云助手Agent的资源消耗情况,上报云助手Agent的运行状态,以及当云助手Agent崩溃时重启云助手Agent

  • 服务名称:AssistDaemon

  • 路径:/usr/local/share/assist-daemon/assist_daemon

说明

目前云助手守护进程仅支持Linux操作系统。

任务执行路径

云助手会将用户的命令内容以文件形式先保存到实例上,然后再执行文件,具体保存路径如下:

  • Linux:/tmp

  • Windows:云助手安装路径/work/script

命令

需要在实例中执行的具体命令操作,如一份Shell脚本或者PowerShell脚本。

自定义参数

您在命令中设置的变量值,以{{key}}的形式表示,可以在执行命令时以{{"key":"value"}}的形式设置自定义参数的值。由于您在一个地域下能保有的云助手命令有配额限制,建议您通过设置自定义参数提高命令的灵活性以及多场景适用性。您也可以指定内置环境参数作为自定义参数,执行命令时无需手动对参数赋值,云助手将为您自动替换为环境中对应的值。

单次执行

在一台或者多台实例中执行某个命令,即为一次执行(Invocation)。

定时执行

在一台或者多台实例中执行某个命令时,您可以指定执行时序或周期,定时执行命令进程。

命令执行状态

单条命令执行状态

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

API状态

状态显示

描述

Pending

下发中

系统正在校验或发送命令。

Invalid

校验不通过

指定命令类型或参数有误。

Aborted

下发失败

向实例发送命令失败。实例必须在运行中,且命令可以1分钟内发送完成。

Running

执行中

命令正在被执行。

Success

执行成功

  • 单次执行的命令:命令执行完成,且退出码为0。

  • 定时执行的命令:上一次运行成功且退出码为0,且指定的时间已结束。

Failed

执行完成,退出码非0

  • 单次执行的命令:命令执行完成,且退出码非0。

  • 定时执行的命令:上一次运行成功且退出码非0,且指定的时间将中止。

Error

执行异常

命令执行时发生异常无法继续。

Timeout

执行超时

命令执行超时。

Cancelled

执行取消

命令的执行动作已经取消,命令未曾启动。

Stopping

停止执行中

命令正在被停止执行。

Stopped

已停止执行

命令已经被停止。

Terminated

执行已终止

命令运行时被终止。

Scheduled

命令等待运行

定时执行的命令等待运行。

批量命令执行状态

为便于管理批量执行或者定时执行,您可以从总执行状态、实例级别执行状态以及执行记录级别的状态概念出发管理命令运行的生命周期,对应DescribeInvocationsInvocation下的InvocationStatus字段。状态各级别之间的包含关系如下图所示。状态管理的包含关系示意图

在多台实例上运行一条命令,总执行状态说明如下表所示。

API状态

状态显示

描述

Pending

系统正在校验或发送命令

存在至少一台实例的命令执行状态为Pending,则总执行状态为Pending

Scheduled

定时执行的命令已发送,等待运行

存在至少一台实例的命令执行状态为Scheduled,则总执行状态为Scheduled

Running

命令正在实例上运行

存在至少一台实例的命令执行状态为Running,则总执行状态为Running

Success

命令执行成功

各个实例上的命令执行状态均为StoppedSuccess,且至少一个实例的命令执行状态是Success,则总执行状态为Success

  • 立即运行的任务:命令执行完成,且退出码为0。

  • 定时运行的任务:最近一次执行成功且退出码为0,且指定的时间已全部完成。

Failed

命令执行失败

各个实例上的命令执行状态均为StoppedFailed,则总执行状态为Failed。实例上的命令执行状态一项或多项为以下状态时,返回值均为Failed状态:

  • 命令校验失败(Invalid)。

  • 命令发送失败(Aborted)。

  • 命令执行完成但退出码非0(Failed)。

  • 命令执行超时(Timeout)。

  • 命令执行异常(Error)。

Stopping

正在停止任务

存在至少一台实例的命令执行状态为Stopping,则总执行状态为Stopping

Stopped

任务已停止

所有实例的命令执行状态是Stopped,则总执行状态为Stopped。实例上的命令执行状态为以下状态时,返回值均为Stopped状态:

  • 任务已取消(Cancelled)。

  • 任务已终止(Terminated)。

PartialFailed

部分实例执行成功且部分实例执行失败

各个实例的命令执行状态均为SuccessFailedStopped,则总执行状态为PartialFailed

使用云助手

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

业务场景

参考文档

相关API

ECS实例中需要安装云助手Agent后才能使用云助手,2017年12月01日之后使用公共镜像创建的ECS实例,默认预装云助手Agent。因此,部分ECS实例需要您自行安装云助手Agent

安装云助手Agent

首次接触云助手,并习惯使用API调用工具。

不涉及

新建一份云助手命令。

创建命令

对目标ECS实例执行已创建的命令。

执行命令

查看命令的执行状态,查看命令的执行结果,即在指定ECS实例中的实际输出信息。

查看执行结果及修复常见问题

修改已创建的命令,支持修改命令名称和描述。

修改命令

不涉及

为一份云助手命令新增版本。或者您希望修改命令的名称、描述、类型、内容、执行路径或者超时时间等更多属性。

克隆命令

不涉及

停止正在进行的命令进程。

停止命令

StopInvocation

删除不再需要的云助手命令,避免命令达到配额上限时影响新建命令。

删除命令

DeleteCommand