So verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung

坏嘻嘻
Freigeben: 2018-09-19 15:37:39
Original
2809 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit der Verwendung des Cloud-Assistenten zur automatischen Verwaltung von Instanzen. Ich hoffe, dass er für Freunde hilfreich ist.

Verwenden Sie Cloud Assistant, um Instanzen automatisch zu verwalten

Der Zweck des Betriebs und der Wartung von ECS-Instanzen besteht darin, die ECS-Instanzen in optimalem Zustand zu halten und die Effizienz der Fehlerbehebung sicherzustellen, aber die manuelle Wartung kostet Sie einen viel Zeit und Energie, deshalb hat Alibaba Cloud einen Cloud-Assistenten entwickelt, um zu lösen, wie tägliche Wartungsaufgaben automatisiert und stapelweise verarbeitet werden können. Dieser Artikel enthält ein Beispiel für die Verwendung der Cloud Assistant-API zum Ausführen entsprechender Befehle für ECS-Instanzen, um den Zweck des automatisierten Betriebs und der Wartung von ECS-Instanzen zu erreichen.

Einführung in die Befehlstypen

Derzeit unterstützt Cloud Assistant die folgenden drei Befehlstypen.

So verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung

Voraussetzungen

Sie müssen sicherstellen, dass der Netzwerktyp der Ziel-ECS-Instanz privat ist Netzwerk (VPC).

Der Status der Ziel-ECS-Instanz muss „Wird ausgeführt“ lauten.

Auf der Ziel-ECS-Instanz muss der Cloud Assistant-Client vorinstalliert sein. Sie können sich an Alibaba Cloud Assistant wenden, um den Cloud Assistant-Client zu installieren und zu verwenden.

Beim Ausführen eines Befehls vom Typ PowerShell müssen Sie sicherstellen, dass für die Ziel-Windows-Instanz das PowerShell-Modul konfiguriert ist.

Die folgenden Beispiele werden im Befehlszeilentool ausgefüllt. Sie müssen sicherstellen, dass Sie das Alibaba Cloud-Befehlszeilentool CLI (Command-Line Interface) installiert haben.

Windows-Beispiele finden Sie unter „Befehlszeilentools und SDK online installieren“.

Linux-Beispiele finden Sie unter „Befehlszeilentools und SDK online installieren“.

Sie müssen das SDK aktualisieren.

CLI-Konfiguration ändern:

Laden Sie die Datei aliyunOpenApiData.py herunter.

Ersetzen Sie die Datei aliyunOpenApiData.py im Pfad %python_install_path%Libsite-packagesaliyuncli durch die heruntergeladene Datei.

So verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung

Informationen zur Konfiguration der Alibaba Cloud CLI finden Sie im Dokument „Konfigurieren von Befehlszeilentools und SDK“.

Vorgangsschritte

Das folgende Beispiel zeigt, wie Sie Cloud Assistant über die API in Alibaba Cloud CLI verwenden, um entsprechende Befehle für ECS-Instanzen auszuführen. Nehmen Sie als Beispiel die Ausführung eines echo 123-Befehls.

Führen Sie aliyuncli ecs CreateCommand --CommandContent ZWNobyAxMjM= --Type RunShellScript --Name test --Description test Befehl erstellen (CreateCommand) in CMD, PowerShell oder Shell des lokalen Computers aus.

So verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung

Führen Sie aliyuncli ecs InvokeCommand --InstanceIds your-vm-instance-id1 instance-id2 --CommandId your-command-id --Timed false aus. Führen Sie den Befehl aus (InvokeCommand). .

Hinweis:

InstanceIds ist Ihre ECS-Instanz-ID, die mehrere ECS-Instanzen unterstützt, bis zu 100.

Timed gibt an, ob es sich um eine periodische Aufgabe handelt, Timed True gibt an, dass es sich um eine periodische Aufgabe handelt, und Timed False gibt an, dass es sich nicht um eine periodische Aufgabe handelt.

Wenn es sich bei Ihrer Aufgabe um eine periodische Aufgabe handelt, d. h. wenn der Parameter „Timed“ „True“ ist, müssen Sie den Zeitraum über den Parameter „Frequenz“ angeben. Beispiel: 0 */20 * * * * bedeutet, dass der Zeitraum ist alle 20 Minuten. Weitere Einzelheiten zu Cron-Ausdrücken finden Sie in der Beschreibung des Cron-Ausdruckswerts.

Das Rückgabeergebnis ist eine gemeinsame InvokeId für alle Ziel-ECS-Instanzen. Mit der InvokeId können Sie die Ausführung des Befehls abfragen.

(Optional) Führen Sie aliyuncli ecs DescribeInvocations --InstanceId your-vm-instance-id --InvokeId your-invoke-id aus, um den Status der Befehlsausführung anzuzeigen (DescribeInvocations). Unter diesen ist InvokeId die Ausführungs-ID, die bei der Ausführung des Befehls für die ECS-Instanz im zweiten Schritt zurückgegeben wird.

Wenn der Rückgabeparameter InvokeStatus Finished ist, bedeutet dies nur, dass die Ausführung des Befehlsprozesses abgeschlossen ist. Es bedeutet nicht, dass der erwartete Befehlseffekt vorliegen muss. Sie müssen die tatsächlichen spezifischen Ausführungsergebnisse überprüfen den Parameter Output in DescribeInvocationResults.

(Optional) Führen Sie aliyuncli ecs DescribeInvocationResults --InstanceId your-vm-instance-id --InvokeId your-invoke-id aus, um die tatsächlichen Ausführungsergebnisse (DescribeInvocationResults) des Befehls für die angegebene ECS-Instanz anzuzeigen. Unter diesen ist InvokeId die Ausführungs-ID, die bei der Ausführung des Befehls für die ECS-Instanz im zweiten Schritt zurückgegeben wird.

Beim Erstellen eines Befehls (CreateCommand) können Sie auch die folgenden Anforderungsparameter für den Befehl festlegen.

So verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung

Vollständiges Codebeispiel für die Verwendung von Cloud Assistant über das Python SDK

Sie können Cloud Assistant auch über das Alibaba Cloud SDK verwenden. Informationen zur Konfiguration des Alibaba Cloud SDK finden Sie im Dokument „Konfigurieren von Befehlszeilentools und SDK“. Unten finden Sie ein vollständiges Codebeispiel für die Verwendung von Cloud Assistant über das 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')
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Cloud Assistant zur Automatisierung der Instanzverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage