亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

云助手如何實現自動化管理

發布時間:2020-07-16 10:42:47 來源:億速云 閱讀:207 作者:Leah 欄目:建站服務器

這篇文章將為大家詳細講解有關云助手如何實現自動化管理,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

使用云助手自動化管理實例

運維 ECS 實例的目的是保持 ECS 實例的最佳狀態以及確保排錯的效率,但是手動維護會花費您大量的時間和精力,因此阿里云研制了 云助手,用以解決如何自動化、批量處理日常維護任務。本文舉例如何使用云助手 API,為 ECS 實例執行相應命令,達到自動化運維 ECS 實例的目的。

命令類型介紹

目前,云助手支持如下三種命令類型。

云助手如何實現自動化管理

前提條件

您需要確保目標 ECS 實例的網絡類型為 專有網絡(VPC)。

目標 ECS 實例的狀態必須為 運行中(Running)。

目標 ECS 實例必須預先安裝云助手客戶端。您可以參閱 阿里云助手 安裝并使用云助手客戶端。

執行類型為 PowerShell 的命令時,您需要確保目標 Windows 實例已經配置了 PowerShell 模塊。

以下示例在命令行工具中完成,您需要確保您已經安裝了阿里云命令行工具 CLI(Command-Line Interface)。

Windows 實例參閱 在線安裝命令行工具和 SDK。

Linux 實例參閱 在線安裝命令行工具和 SDK。

您需要 升級 SDK。

修改 CLI 配置:

下載文件 aliyunOpenApiData.py。

使用下載的文件替換路徑中 %python_install_path%\Lib\site-packages\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) 時,您還可以為命令設置如下請求參數。

云助手如何實現自動化管理

通過 Python SDK 使用云助手的完整代碼示例

您也可以通過 阿里云 SDK 使用云助手。關于如何配置阿里云 SDK,參閱文檔 配置命令行工具和 SDK。以下為通過 Python SDK 使用云助手的完整代碼示例。

# coding=utf-8
# if the python sdk is not install using 'sudo pip install aliyun-python-sdk-ecs'
# if the python sdk is install using 'sudo pip install --upgrade aliyun-python-sdk-ecs'
# make sure the sdk version is 2.1.2, you can use command 'pip show aliyun-python-sdk-ecs' to check
import json
import logging
import os
import time
import datetime
import base64
from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.CreateCommandRequest import CreateCommandRequest
from aliyunsdkecs.request.v20140526.InvokeCommandRequest import InvokeCommandRequest
from aliyunsdkecs.request.v20140526.DescribeInvocationResultsRequest import DescribeInvocationResultsRequest
# configuration the log output formatter, if you want to save the output to file,
# append ",filename='ecs_invoke.log'" after datefmt.
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',filename='aliyun_assist_openapi_test.log', filemode='w')
#access_key = 'Your Access Key Id'
#acess_key_secrect = 'Your Access Key Secrect'
#region_name = 'cn-shanghai'
#zone_id = 'cn-shanghai-b'
access_key = 'LTAIXXXXXXXXXXXX'
acess_key_secrect = '4dZXXXXXXXXXXXXXXXXXXXXXXXX'
region_name = 'cn-hangzhou'
zone_id = 'cn-hangzhou-f'
clt = client.AcsClient(access_key, acess_key_secrect, region_name)
def create_command(command_content, type, name, description):
    request = CreateCommandRequest()
    request.set_CommandContent(command_content)
    request.set_Type(type)
    request.set_Name(name)
    request.set_Description(description)
    response = _send_request(request)
    if response is None:
        return None
    command_id = response.get('CommandId')
    return command_id;
def invoke_command(instance_id, command_id, timed, cronat):
    request = InvokeCommandRequest()
    request.set_Timed(timed)
    InstanceIds = [instance_id]
    request.set_InstanceIds(InstanceIds)
    request.set_CommandId(command_id)
    request.set_Frequency(cronat)
    response = _send_request(request)
    invoke_id = response.get('InvokeId')
    return invoke_id;
def get_task_output_by_id(instance_id, invoke_id):
    logging.info("Check instance %s invoke_id is %s", instance_id, invoke_id)
    request = DescribeInvocationResultsRequest()
    request.set_InstanceId(instance_id)
    request.set_InvokeId(invoke_id)
    response = _send_request(request)
    invoke_detail = None
    output = None
    if response is not None:
        result_list = response.get('Invocation').get('InvocationResults').get('InvocationResult')
        for item in result_list:
            invoke_detail = item
            output = base64.b64decode(item.get('Output'))
            break;
        return output;
def execute_command(instance_id):
    command_str = 'yum check-update'
    command_id = create_command(base64.b64encode(command_str), 'RunShellScript', 'test', 'test')
    if(command_id is None):
        logging.info('create command failed')
        return
    invoke_id = invoke_command(instance_id, command_id, 'false', '')
    if(invoke_id is None):
        logging.info('invoke command failed')
        return
    time.sleep(15)
    output = get_task_output_by_id(instance_id, invoke_id)
    if(output is None):
        logging.info('get result failed')
        return
    logging.info("output: %s is \n", output)
# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)
if __name__ == '__main__':
    execute_command('i-bp17zhpbXXXXXXXXXXXXX')

關于云助手如何實現自動化管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垦利县| 星子县| 嵊泗县| 南乐县| 东至县| 安塞县| 临猗县| 宣武区| 新津县| 九江市| 布拖县| 共和县| 阿拉善左旗| 天台县| 上虞市| 抚远县| 开封市| 九龙坡区| 云阳县| 都兰县| 泾源县| 固原市| 阿图什市| 堆龙德庆县| 鄯善县| 佛山市| 横峰县| 邯郸县| 南华县| 宝清县| 沙坪坝区| 景德镇市| 镇沅| 洪湖市| 顺平县| 南充市| 慈溪市| 张掖市| 宁安市| 京山县| 贵港市|