首頁 運維 linux運維 如何使用雲端助手自動化管理實例

如何使用雲端助手自動化管理實例

Sep 19, 2018 pm 03:37 PM
linux

這篇文章帶給大家的內容是關於如何使用雲端助理自動化管理實例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

使用雲端助理自動化管理實例

維運ECS 執行個體的目的是保持ECS 執行個體的最佳狀態以及確保排錯的效率,但是手動維護會花費您大量的時間和精力,因此阿里雲研發了雲端助手,用來解決如何自動化、大量處理日常維護任務。本文舉例如何使用雲端助理 A​​PI,為 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 使用雲端助理的完整程式碼範例

#您也可以透過 Alimb 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')
登入後複製

以上是如何使用雲端助手自動化管理實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vscode需要什麼電腦配置 vscode需要什麼電腦配置 Apr 15, 2025 pm 09:48 PM

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

vscode終端使用教程 vscode終端使用教程 Apr 15, 2025 pm 10:09 PM

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode 無法安裝擴展 vscode 無法安裝擴展 Apr 15, 2025 pm 07:18 PM

VS Code擴展安裝失敗的原因可能包括:網絡不穩定、權限不足、系統兼容性問題、VS Code版本過舊、殺毒軟件或防火牆干擾。通過檢查網絡連接、權限、日誌文件、更新VS Code、禁用安全軟件以及重啟VS Code或計算機,可以逐步排查和解決問題。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

vscode 可以用於 mac 嗎 vscode 可以用於 mac 嗎 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有強大的擴展功能、Git 集成、終端和調試器,同時還提供了豐富的設置選項。但是,對於特別大型項目或專業性較強的開發,VS Code 可能會有性能或功能限制。

See all articles