使用云助手自动化运维 ECS 实例

一、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 来轮询该任务的进度及脚本输出结果,直到任务终结。

通过阿里云控制台使用云助手

以下有两个小实验,演示了云助手的使用。

  1. 首先,准备一或多台实验用的 Linux ECS 实例
  • 为了能够完成 Jenkins 的全部安全步骤,最好该实例带有公网 IP;
  • 推荐使用 CentOS、Debian、Ubuntu、Foedora 或 Aliyun Liunx。
  1. 导航到 ECS 控制台,打开“运维与监控”下的“云助手”

使用云助手自动化运维 ECS 实例


实验一:在实例上执行自定义脚本命令

  1. 点击按钮“创建/执行命令”,打开对话框"创建命令”

使用云助手自动化运维 ECS 实例

  • (可选) 在命令名称中输入“detect_linux_release_type.sh”
  • 在命令内容中,输入以下脚本:


#!/bin/bash
# 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


  1. 勾择一台或多台实例,然后点击“执行”按钮

使用云助手自动化运维 ECS 实例

  1. 查看命令执行进度及结果

使用云助手自动化运维 ECS 实例


实验二:在实例上安装 Jenkins 服务


  1. 切换到 ECS 云助手下的“公共命令” 标签页

“公共命令”列表,是由阿里云所提供的命令,你可直接使用,或复制修改后使用。

  1. 找到名为 "ACS-ECS-Application-Setup-Jenkins.sh" 的公共命令

使用云助手自动化运维 ECS 实例

  1. 点击该命令的 “执行”,并选择先前准备的 ECS 实例
  2. 查看执行进度,等待约 2~5分钟后,命令可执行完成

使用云助手自动化运维 ECS 实例

  1. 命令结束后,打开末尾所示的 Jenkins 服务地址

使用云助手自动化运维 ECS 实例

  1. 在实例上执行此 cat 命令,获得 Jenkins Admin 密码,并继续 Unlock Jenkins

cat /var/lib/jenkins/secrets/initialAdminPassword

  1. 实验步骤完成

实验三:将私有云主机托管到阿里云

您可以将私有云或其它云上的服务器,注册为阿里云托管实例。注册完成后,此在该主机上使用阿里云提供的多种在线服务,如云助手、运维编排、云效等多种服务,并且操作方式与阿里云 ECS 实例一致。


阿里云托管实例,支持 Windows 或 Linux 主机,进行该实验前需要有一台私有主机。


  1. 切换到云助手的“托管实例”页面

使用云助手自动化运维 ECS 实例

  1. 点击“创建激活码”,打开“创建激活码”
  2. 填写表单,然后点击“生成激活码”按钮

使用云助手自动化运维 ECS 实例

  1. 根据您的主机的系统类型,选择并复制生成的脚本,并在私有主机上执行
  2. 脚本执行完成后,返回到阿里云控制台,查看云助手的"托管实例" 列表

此处将显示您刚才注册的私有主机

使用云助手自动化运维 ECS 实例

  1. 试一试对该托管实例上“执行命令”!


二、远程操作方式对比

使用云助手自动化运维 ECS 实例


相比于其他常用的实例登入方式 (如 Linux SSH 或 Windows 的 RemteDesktop),云助手的以下多个方面的个方面优势:

  1. 支持自动化:

使用云助手时,无需实例密码。可使用阿里云 Open API,或阿里云 CLI 编写程序或脚本,实现自动化的 ECS 实例运维操作。

  1. 免公网暴露:

云助手的功能实现,是通过控制系统来完成。所以不需要让实例暴露在公网上,即有利于实例的安全,也节省了公网流量费用。

  1. 安全易控制:

通过 RAM 角色与权限的管理,所以配置子帐号能否在指定实例上执行执行特定的操作,可以防止不被授权的操作。

  1. 有操作审计:

同样,云上的 API 操作都有 ActionTrail 记录,以及命令执行记录,可以被事后审计。

四、云助手的适用场景

使用云助手自动化运维 ECS 实例

借助云助手,能够实现自动化完成 ECS 实例的多种运维操作,例如:

  • 系统及应用的安装与配置
  • 应用程序的部署与更新
  • 系统的监控与数据采集
  • 系统的问题诊断自动修复


阿里云也将继续提供更多的服务,为实例运维来带来更多的便利。

五、结束& 感谢

感谢大家的收看,欢迎持续关注阿里云-玩转 ECS 系列视频/文章。


上一篇:openStack icehouse for centos6.4 production Env 实战


下一篇:在企业中实施OpenStack:应对各种挑战