导读:云时代的运维是怎么样的?如何快人一步实践 云上自动化运维?
本次分享将为大家介绍在 ECS 实例内部署与更新应用、监控系统或应用的运行状态、以及批量操作多个实例内部系统的这些场景下,如何使用 ECS 云助手实现云上自动化运维。
作者 | 阿里云技术专家 朱士松
来源 | 弹性计算百晓生
ECS云助手简介
云助手是阿里云ECS提供的一种自动化的远程操作方式,在阿里云官方的系统镜像中几乎都包含有云助手。
云助手的使用方法比较简单,只有两项主要功能:
1、向指定的实例发送命令,对应 API ecs:RunCommand
2、向指定的实例发送文件,对应 API ecs:SendFile
(一)通过 API 使用云助手
1、发送命令 (RunCommand)
发送命令的功能,由 ECS:RunCommand API 承载,API 的主要参数如下:
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秒;
• 关于 ecs:RunCommand 的详细 API 文档: https://help.aliyun.com/document_detail/141751.html.
• 推荐使用 aliyun 命令行工具 (https://help.aliyun.com/document_detail/110244.html) 执行阿里云 API。
调用了 RunCommand 之后,将会创建一个任务,并返回 InvokeId 值;之后可使用 DescribeInvocationResults 轮论这次任务的执行进度与结果;关于 DescribeInvocationResults 说明,请参见文档:https://help.aliyun.com/document_detail/64845.html
2、发送文件 (SendFile)
发送文件的功能,由 SendFile API 承载,API 的主要参数如下:
aliyun ecs SendFile \
--RegionId="cn-shenzhen" \
--InstanceId.1="i-wz9g75dkmfp0ofsplnlr" \
--InstanceId.2="i-wz9g75dkmfp0ofsplnls" \
--TargetDir="/root/.ssh/" \
--Name="authorized_keys" \
--Content="ssh-rsa AAAA...."
• 其他参数:RegionId & InstanceId - 指定实例所在地域和实例 ID 列表
• 参数:TargetDir 与 Name - 分别指定文件在实例上的目录名与文件名
• 参数:Content - 指定文件的内容
• 关于 ecs:SendFile 的详细 API 文档:https://help.aliyun.com/document_detail/184118.html
调用了 SendFile 之后,也将会创建一个任务,并返回 InvokeId ;之后可使用 DescribeSendFileResults 轮论这次任务的执行进度与结果。
了解了以上两对 API,也就学会云助手的主要用法,那么就可以在脚本或代码中使用。
(二)通过控制台使用云助手
如果想通过阿里云控制台使用云助手,可以从这个两个位置找到“云助手”控制台:
1、一是 Ecs 控制台 https://ecs.console.aliyun.com/ 左侧的“运维与监控” 服务列表这里
2、二是 Ecs “实例详情”页面的“本实例远程命令”
使用实践示例
接下来,咱们通过一个实践,体验一下云助手的使用,实现一项常规的任务:将一个应用的代码自动部署到 ECS 服务器上,并且当代码更新时立即更新服务。
(一)准备的资源
将要使用的资源如下:
1、应用代码:这里使用示例代码是 spring-boot 的官方示例程序 gs-