Esercitazione: Creare un runbook Python 3.8

Questa esercitazione illustra la creazione di un runbook Python 3.8 in Automazione di Azure. I runbook Python vengono compilati in Python 2.7 e 3.8 È possibile modificare direttamente il codice del runbook usando l'editor di testo nell'portale di Azure.

  • Creare un runbook Python semplice
  • Testare e pubblicare il runbook
  • Eseguire il processo del runbook e monitorarne lo stato
  • Aggiornare il runbook per avviare una macchina virtuale di Azure con i parametri del runbook

Prerequisiti

Per completare questa esercitazione, sono necessari:

  • Una sottoscrizione di Azure. Se non si ha ancora una sottoscrizione, è possibile attivare i vantaggi dell'abbonamento MSDN oppure iscriversi per ottenere un account gratuito.

  • Un account di Automazione per contenere il runbook e l'autenticazione alle risorse di Azure usando identità gestite. Un'identità gestita viene creata automaticamente quando si crea l'account di Automazione.

  • Macchina virtuale di Azure. Durante questa esercitazione si inizierà e si arresterà questo computer, quindi non dovrebbe essere una macchina virtuale di produzione.

Creare un nuovo runbook

Si inizia creando un runbook semplice che restituisce il testo Hello World.

  1. Nel portale di Azure aprire l'account di automazione.

    La pagina dell'account di automazione offre una visualizzazione rapida delle risorse di questo account. Dovrebbero essere già disponibili alcuni asset. Per la maggior parte sono i moduli inclusi automaticamente in un nuovo account di Automazione.

    È necessario disporre anche di un'identità gestita abilitata in base ai prerequisiti. È possibile verificare che visualizzando la risorsa identity in Impostazioni account.

  2. Selezionare Runbook in Automazione processi per aprire l'elenco dei runbook.

  3. Selezionare Crea un runbook per creare un nuovo runbook.

  4. Denominare il runbook MyFirstRunbook-Python.

  5. Selezionare Python per il tipo runbook.

  6. Selezionare Python 3.8 per la versione di Runtime.

  7. Selezionare Crea per creare il runbook e aprire l'editor di testo.

Aggiungere un codice al runbook

È ora possibile aggiungere un semplice comando per stampare il testo Hello World.

print("Hello World!")

Selezionare Salva per salvare il runbook.

Testare il runbook

Prima di pubblicare il runbook per renderlo disponibile nell'ambiente di produzione, occorre testarlo per verificare che funzioni correttamente. Quando si testa un runbook, è necessario eseguire la versione bozza e visualizzarne l'output in modo interattivo.

  1. Fare clic su Riquadro di test per aprire il riquadro Test.

  2. Selezionare Avvia per avviare il test. Questa opzione deve essere l'unica opzione abilitata.

  3. Viene creato un processo del runbook e il relativo stato viene visualizzato. Lo stato del processo viene avviato come Accodato, che indica che è in attesa che un ruolo di lavoro del runbook nel cloud diventi disponibile. Lo stato passa ad Avvio in corso quando un ruolo di lavoro richiede il processo e quindi a In esecuzione quando l'esecuzione del runbook viene effettivamente avviata.

  4. Al termine del processo del runbook, viene visualizzato l'output. In questo caso, verrà visualizzato l'output Hello World.

  5. Chiudere il riquadro Test per tornare all'area di disegno.

Pubblicare e avviare il runbook

Il runbook creato è ancora in modalità bozza. È necessario pubblicarlo prima di poterlo eseguire in produzione. Quando si pubblica un runbook, viene sovrascritta la versione pubblicata esistente con la versione bozza. In questo caso, non esiste ancora una versione pubblicata perché il runbook è appena stato creato.

  1. Selezionare Pubblica per pubblicare il runbook, quindi quando richiesto.

  2. Se si chiude il riquadro MyFirstRunbook_python, si torna alla pagina Runbook in cui dovrebbe essere visualizzato uno stato dicreazione pubblicato.

  3. Selezionare il nome MyFirstRunbook-Python nell'elenco, si tornerà al riquadro MyFirstRunbook-Python .

    Le opzioni nella parte superiore consentono di avviare il runbook, visualizzare il runbook, modificare il runbook, pianificarla per iniziare in qualche momento in futuro e altre azioni.

  4. Selezionare Avvia e quindi OK quando si apre il riquadro Avvia runbook.

  5. Verrà aperto un riquadro Processo per il processo del runbook creato. È possibile chiudere questo riquadro, ma si mantiene aperto, in modo che sia possibile watch lo stato di avanzamento del processo.

  6. Lo stato del processo viene visualizzato nel campo Stato in Essentials. I valori qui corrispondono ai valori di stato durante il test del runbook.

  7. Dopo aver visualizzato lo stato del runbook Completato, selezionare la scheda Output . Nella scheda Output è possibile visualizzare Hello World.

  8. Chiudere la scheda Output .

  9. Selezionare Tutte le schede Log per visualizzare i flussi per il processo del runbook. Nel flusso di output sarà visibile solo Hello World. Tuttavia, questa scheda può visualizzare altri flussi per un processo del runbook, ad esempio Verbose ed Errore, se il runbook li scrive.

  10. Chiudere il riquadro Processi per tornare al riquadro MyFirstRunbook-Python .

  11. Selezionare Risorsa Processi per aprire la pagina Risorse processi per questo runbook. In questa pagina sono elencati tutti i processi creati da questo runbook. Dovrebbe essere elencato un solo processo, perché il processo è stato eseguito una sola volta.

  12. È possibile selezionare questo processo per aprire lo stesso riquadro Processo visualizzato quando è stato avviato il runbook. Questo riquadro consente di tornare indietro nel tempo e visualizzare i dettagli di tutti i processi creati per un runbook specifico.

Aggiungere l'autenticazione per gestire le risorse di Azure

Il runbook è stato testato e pubblicato, ma finora non esegue alcuna attività utile. Si vuole fare in modo che gestisca le risorse di Azure. Per gestire le risorse, lo script deve eseguire l'autenticazione.

Il modo consigliato per eseguire l'autenticazione è con l'identità gestita. Quando si crea un account Automazione di Azure, viene creata automaticamente un'identità gestita.

Per usare questi esempi, aggiungere i pacchetti seguenti nella risorsa Pacchetti Python dell'account di automazione. È possibile aggiungere i file WHL per questi pacchetti con questi collegamenti.

Quando si aggiungono questi pacchetti, selezionare una versione di runtime corrispondente al runbook.

Nota

Il codice seguente è stato testato con runtime versione 3.8.

Identità gestita

Per usare l'identità gestita, assicurarsi che sia abilitata:

  • Per verificare sel'identità gestita è abilitata per l'account di Automazione passare all'identitàdell'account>>di Automazionee impostare Lo stato su Attivato.
  • L'identità gestita ha un ruolo assegnato per gestire la risorsa. In questo esempio di gestione di una risorsa macchina virtuale aggiungere il ruolo "Collaboratore macchina virtuale" nel gruppo di risorse di che contiene la macchina virtuale. Per altre informazioni, vedere Assegnare ruoli di Azure usando la portale di Azure

Con il ruolo di gestione dell'identità configurato, è possibile iniziare ad aggiungere codice.

  1. Aprire l'editor testuale selezionando Modifica nel riquadro MyFirstRunbook-Python .

  2. Aggiungere il codice seguente per l'autenticazione in Azure:

#!/usr/bin/env python3
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

SUBSCRIPTION_ID="YOUR_SUBSCRIPTION_ID"

azure_credential = DefaultAzureCredential()

import os
import requests
# printing environment variables
endpoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER' : identityHeader,
'Metadata' : True
}
response = requests.get(endpoint, headers)
print(response.text)

Aggiungere il codice per creare client Python di calcolo e avviare la macchina virtuale

Per usare le macchine virtuali di Azure, creare un'istanza di client di calcolo Azure per Python.

# Initialize client with the credential and subscription.
compute_client = ComputeManagementClient(
    azure_credential,
    SUBSCRIPTION_ID
)

print('\nStart VM')
async_vm_start = compute_client.virtual_machines.begin_start(
    "MyResourceGroup", "TestVM")
async_vm_start.wait()
print('\nFinished start.')

MyResourceGroup è il nome del gruppo di risorse che contiene la macchina virtuale e TestVM è il nome della macchina virtuale che si desidera avviare.

Testare ed eseguire nuovamente il runbook per verificare che venga avviata la macchina virtuale.

Usare parametri di input

Attualmente, il runbook usa valori hardcoded per i nomi del gruppo di risorse e della macchina virtuale. A questo punto, aggiungere il codice che ottiene tali valori dai parametri di input.

Si usa la variabile sys.argv per ottenere i valori dei parametri. Aggiungere il codice seguente al runbook immediatamente dopo le altre istruzioni import:

import sys

resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])

Questo codice importa il sys modulo e crea due variabili per contenere il gruppo di risorse e i nomi delle macchine virtuali. Si noti che l'elemento dell'elenco di argomenti, sys.argv[0], è il nome dello script e non viene immesso dall'utente.

A questo punto è possibile modificare le ultime due righe del runbook per usare i valori del parametro di input invece dei valori hardcoded:

async_vm_start = compute_client.virtual_machines.begin_start(
    resource_group_name, vm_name)
async_vm_start.wait()

Quando si avvia un runbook Python, nel riquadro Test o come un runbook pubblicato, è possibile immettere i valori per i parametri nella pagina Avvia runbook nella sezione Parametri.

Quando si inizia a digitare un valore nella prima casella, viene visualizzata una seconda casella e così via, per immettere il numero di parametri desiderato in base alle esigenze.

I valori sono disponibili per lo script come matrice sys.argv, come nel codice appena aggiunto.

Immettere il nome del gruppo di risorse come valore per il primo parametro e il nome della macchina virtuale da avviare come valore del secondo parametro.

Immettere i valori dei parametri

Selezionare OK per avviare il runbook. Il runbook viene eseguito e avvia la macchina virtuale specificata.

Gestione degli errori in Python

È anche possibile usare le convenzioni seguenti per recuperare flussi diversi dai runbook Python, inclusi i flussi di AVVISO, ERRORE e DEBUG.

print("Hello World output")
print("ERROR: - Hello world error")
print("WARNING: - Hello world warning")
print("DEBUG: - Hello world debug")
print("VERBOSE: - Hello world verbose")

L'esempio seguente mostra l'utilizzo di questa convenzione in un blocco try...except.

try:
    raise Exception('one', 'two')
except Exception as detail:
    print ('ERROR: Handling run-time error:', detail)

Passaggi successivi