云助手如何实现自动化管理

  介绍

这篇文章将为大家详细讲解有关云助手如何实现自动化管理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

使用云助手自动化管理实例

运维ECS实例的目的是保持ECS实例的最佳状态以及确保排错的效率,但是手动维护会花费您大量的时间和精力,因此阿里云研制了云助手,用以解决如何自动化,批量处理日常维护任务。本文举例如何使用云助手API,为ECS实例执行相应命令,达到自动化运维ECS实例的目的。

目前,云助手支持如下三种命令类型。

云助手如何实现自动化管理

您需要确保目标ECS实例的网络类型为专有网络(VPC)。

目标ECS实例的状态必须为运行中(运行)。

目标ECS实例必须预先安装云助手客户端。您可以参阅阿里云助手安装并使用云助手客户端。

执行类型为PowerShell的命令时,您需要确保目标Windows实例已经配置了PowerShell模块。

以下示例在命令行工具中完成,您需要确保您已经安装了阿里云命令行工具CLI(命令行界面)。

Windows实例参阅在线安装命令行工具和SDK。

Linux实例参阅在线安装命令行工具和SDK。

您需要升级SDK。

修改CLI配置:

下载文件aliyunOpenApiData。py .

使用下载的文件替换路径中% python_install_path % \ Lib \网站\ aliyuncli中的文件aliyunOpenApiData。py。

云助手如何实现自动化管理

关于如何配置阿里云 CLI,参阅文档 配置命令行工具和 SDK。

以下举例说明怎么在阿里云 CLI 中通过 API 使用云助手,为 ECS 实例执行相应命令。以执行一条 echo 123 命令为例。

在本地计算机的 CMD、PowerShell 或者 Shell 中运行 aliyuncli ecs CreateCommand --CommandContent ZWNobyAxMjM=--Type RunShellScript --Name test --Description test 创建命令(CreateCommand)。

云助手如何实现自动化管理

运行 aliyuncli ecs InvokeCommand --InstanceIds your-vm-instance-id1 instance-id2 --CommandId your-command-id --Timed false 执行命令(InvokeCommand)。

注意:

InstanceIds 为您的 ECS 实例 ID,支持多台 ECS 实例,最多 100 台。

Timed 表示是否为周期性任务,Timed True 表示是周期性任务,Timed False表示不是周期性任务。

当您的任务为周期性任务时,即参数 Timed 取值为 True 时,您需要通过参数 Frequency 指定周期,例如 0 */20 * * * * 表示周期为每 20 分钟。更多关于 Cron 表达式详情,请参阅 Cron 表达式取值说明。

返回结果为所有的目标 ECS 实例返回一个共同的 InvokeId。您可以使用该 InvokeId 查询命令的执行情况。

(可选)运行 aliyuncli ecs DescribeInvocations --InstanceId your-vm-instance-id --InvokeId your-invoke-id 查看命令执行状态(DescribeInvocations)。其中,InvokeId 是 第二步 为 ECS 实例执行命令时返回的执行 ID。

返回参数 InvokeStatus 为 Finished 时仅表示命令进程 执行完成,不代表一定有预期的命令效果,您需要通过 DescribeInvocationResults 中的参数 Output 查看实际的具体执行结果。

(可选)运行 aliyuncli ecs DescribeInvocationResults --InstanceId your-vm-instance-id --InvokeId your-invoke-id 查看指定 ECS 实例的命令的实际执行结果(DescribeInvocationResults)。其中,InvokeId 是 第二步 为 ECS 实例执行命令时返回的执行 ID。

在 创建命令(CreateCommand) 时,您还可以为命令设置如下请求参数。

云助手如何实现自动化管理

您也可以通过 阿里云 SDK 使用云助手。关于如何配置阿里云 SDK,参阅文档 配置命令行工具和 SDK。以下为通过 Python SDK 使用云助手的完整代码示例。

# coding=utf-8
  #如果不安装使用python sdk & # 39; sudo pip安装aliyun-python-sdk-ecs& # 39;
  #如果python sdk安装使用& # 39;sudo pip安装,升级aliyun-python-sdk-ecs& # 39;
  #确保2.1.2 sdk版本,您可以使用命令& # 39;脉冲显示aliyun-python-sdk-ecs& # 39;检查
  进口json
  导入日志
  进口操作系统
  导入的时间
  进口日期时间
  进口base64
  从aliyunsdkcore进口端
  从aliyunsdkecs.request.v20140526。CreateCommandRequest进口CreateCommandRequest
  从aliyunsdkecs.request.v20140526。InvokeCommandRequest进口InvokeCommandRequest
  从aliyunsdkecs.request.v20140526。DescribeInvocationResultsRequest进口DescribeInvocationResultsRequest
  #配置日志输出格式化程序,如果你想将输出保存到文件,
  #添加“文件名=& # 39;ecs_invoke.log& # 39;“datefmt之后。=logging.INFO logging.basicConfig(水平,
  格式=& # 39;% (asctime) %(文件名)年代(线:% (lineno) d) % (levelname) % & # 39;(消息),
  datefmt=& # 39; %, % d % b % Y % H: % M: % & # 39;,文件名=& # 39;aliyun_assist_openapi_test.log& # 39;, filemode=& # 39; w # 39;)
  # access_key=& # 39;你的访问密钥id # 39;
  # acess_key_secrect=& # 39;你的访问密钥秘密# 39;
  # region_name=& # 39; cn-shanghai& # 39;
  # zone_id=& # 39; cn-shanghai-b& # 39;
  access_key=& # 39; LTAIXXXXXXXXXXXX& # 39;
  acess_key_secrect=& # 39; 4 dzxxxxxxxxxxxxxxxxxxxxxxxx& # 39;
  region_name=& # 39; cn-hangzhou& # 39;
  zone_id=& # 39; cn-hangzhou-f& # 39;
  解释水平理论=客户。AcsClient (access_key acess_key_secrect region_name)
  def create_command (command_content、类型、名称、描述):
  请求=CreateCommandRequest ()
  request.set_CommandContent (command_content)
  request.set_Type(类型)
  request.set_Name(名字)
  request.set_Description(描述)
  响应=_send_request(请求)
  如果响应没有:
  回来没有
  command_id=response.get (& # 39; CommandId& # 39;)
  返回command_id;
  def invoke_command(即instance_id command_id,定时,cronat):
  请求=InvokeCommandRequest ()
  request.set_Timed(时间)
  InstanceIds=[即instance_id]
  request.set_InstanceIds (InstanceIds)
  request.set_CommandId (command_id)
  request.set_Frequency (cronat)
  响应=_send_request(请求)
  invoke_id=response.get (& # 39; InvokeId& # 39;)
  返回invoke_id;
  def get_task_output_by_id(即instance_id invoke_id):
  logging.info(“检查实例% s invoke_id % s",即instance_id, invoke_id)
  请求=DescribeInvocationResultsRequest ()
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

云助手如何实现自动化管理