一、ECS云助手简介
云助手是阿里云ECS官方提供的自动化运维通道,通过云助手可免密码、免公网IP、免跳板机,实现在ECS实例上执行命令(Shell、Powershell和Bat)和发送文件等操作。典型的使用场景包括:安装卸载软件、启动或停止服务、部署应用、分发配置及执行一般的命令(或脚本)等。
在阿里云官方的 Windows 与 Linux 系统镜像中,都默认带有云助手,无需自行安装 (仅 Redhat 需要手动安装)。
您也可在私有云主机或其他云服务器上安装云助手 Agent,将此主机注册在您的阿里云帐户下,统一使用云助手进行主机运维。
云助手的主要功能项:
- 向指定的实例发送命令,对应 API RunCommand
- 向指定的实例发送文件,对应 API SendFile
您可通过阿里云 SDK、CLI 及控制台使用该功能,以下分别以阿里云 CLI 及控制台为例,介绍云助手的用法。
通过阿里云 CLI 使用云助手
关于 aliyun cli 命令行工具,请参见https://help.aliyun.com/document_detail/110244.html。
发送命令 (RunCommand)
RunCommand 的常用参数如下:
aliyun ecs RunCommand \ --RegionId="cn-shenzhen" \ --InstanceId.1="i-wz9g75dkmfp0ofsplnlr" \ --InstanceId.2="i-wz9g75dkmfp0ofsplnls" \ --Type="RunShellScript" \ --CommandContent="yum install -y git" \ --Timeout=60
- 参数 "RegionId" - 目标 ECS 实例所在的地域
- 参数 "InstanceId - 可以指定该地域下的一个或多个 ECS 实例
- 参数 "Type" - 脚本类型,目前支持三种:分别是
- Linux 上支持执行 Shell 脚本,值使用 "RunShellScript"
- Windows 上支持 Batch 与 PowerShell,值使用 "RunBatScript" 与 "RunPowerShellScript"
- 参数 "CommandContent" - 指的是脚本内容,当前示例为通过 yum 安装 git 客户端
- 参数 "Timeout" - 时脚本执行超时时间,默认60秒;
- 其他:您也可以指定让脚本的定时运行、周期运行、或开机自动执行,完整参数详见 RunCommand API 文档: https://next.api.aliyun.com/document/Ecs/2014-05-26/RunCommand
执行 RunCommand 之后,将会创建一个异步任务,并立即返回 InvokeId 值;您可以通过 DescribeInvocations 来轮询该任务的进度及脚本输出结果,直到任务终结。
通过阿里云控制台使用云助手
以下有两个小实验,演示了云助手的使用。
- 首先,准备一或多台实验用的 Linux ECS 实例
- 为了能够完成 Jenkins 的全部安全步骤,最好该实例带有公网 IP;
- 推荐使用 CentOS、Debian、Ubuntu、Foedora 或 Aliyun Liunx。
- 导航到 ECS 控制台,打开“运维与监控”下的“云助手”
实验一:在实例上执行自定义脚本命令
- 点击按钮“创建/执行命令”,打开对话框"创建命令”
- (可选) 在命令名称中输入“detect_linux_release_type.sh”
- 在命令内容中,输入以下脚本:
# detect linux release type function get_linux_type { type="" if which lsb_release > /dev/null 2>&1; then echo "> lsb_release -a" lsb_release -a; type="$(lsb_release -a | grep "Distributor ID" | cut -d':' -f2 | xargs echo -n)" elif [ -f /etc/os-release ]; then echo "> cat /etc/os-release" cat /etc/os-release; type="$(cat /etc/os-release | grep -e "^ID=" | cut -d'=' -f2 | xargs echo -n)" elif [ -f /etc/system-release ]; then echo "> cat /etc/system-release" cat /etc/system-release; type="$(cat /etc/system-release | cut -d' ' -f1 | xargs echo -n)" else type="Unknown" fi echo -e "\n\e[0;45m$type\e[0m\n" } get_linux_type
- 勾择一台或多台实例,然后点击“执行”按钮
- 查看命令执行进度及结果
实验二:在实例上安装 Jenkins 服务
- 切换到 ECS 云助手下的“公共命令” 标签页
“公共命令”列表,是由阿里云所提供的命令,你可直接使用,或复制修改后使用。
- 找到名为 "ACS-ECS-Application-Setup-Jenkins.sh" 的公共命令
- 点击该命令的 “执行”,并选择先前准备的 ECS 实例
- 查看执行进度,等待约 2~5分钟后,命令可执行完成
- 命令结束后,打开末尾所示的 Jenkins 服务地址
- 在实例上执行此 cat 命令,获得 Jenkins Admin 密码,并继续 Unlock Jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword
- 实验步骤完成
实验三:将私有云主机托管到阿里云
您可以将私有云或其它云上的服务器,注册为阿里云托管实例。注册完成后,此在该主机上使用阿里云提供的多种在线服务,如云助手、运维编排、云效等多种服务,并且操作方式与阿里云 ECS 实例一致。
阿里云托管实例,支持 Windows 或 Linux 主机,进行该实验前需要有一台私有主机。
- 切换到云助手的“托管实例”页面
- 点击“创建激活码”,打开“创建激活码”
- 填写表单,然后点击“生成激活码”按钮
- 根据您的主机的系统类型,选择并复制生成的脚本,并在私有主机上执行
- 脚本执行完成后,返回到阿里云控制台,查看云助手的"托管实例" 列表
此处将显示您刚才注册的私有主机
- 试一试对该托管实例上“执行命令”!
二、远程操作方式对比
相比于其他常用的实例登入方式 (如 Linux SSH 或 Windows 的 RemteDesktop),云助手的以下多个方面的个方面优势:
- 支持自动化:
使用云助手时,无需实例密码。可使用阿里云 Open API,或阿里云 CLI 编写程序或脚本,实现自动化的 ECS 实例运维操作。
- 免公网暴露:
云助手的功能实现,是通过控制系统来完成。所以不需要让实例暴露在公网上,即有利于实例的安全,也节省了公网流量费用。
- 安全易控制:
通过 RAM 角色与权限的管理,所以配置子帐号能否在指定实例上执行执行特定的操作,可以防止不被授权的操作。
- 有操作审计:
同样,云上的 API 操作都有 ActionTrail 记录,以及命令执行记录,可以被事后审计。
四、云助手的适用场景
借助云助手,能够实现自动化完成 ECS 实例的多种运维操作,例如:
- 系统及应用的安装与配置
- 应用程序的部署与更新
- 系统的监控与数据采集
- 系统的问题诊断自动修复
阿里云也将继续提供更多的服务,为实例运维来带来更多的便利。
五、结束& 感谢
感谢大家的收看,欢迎持续关注阿里云-玩转 ECS 系列视频/文章。