Min första python-RunbookMy first Python runbook

Den här självstudien vägleder dig genom skapandet av en python-Runbook i Azure Automation.This tutorial walks you through the creation of a Python runbook in Azure Automation. Du börjar med en enkel Runbook som du testar och publicerar.You start with a simple runbook that you test and publish. Sedan ändrar du runbook-jobbet så att det hanterar Azure-resurser. I det här exemplet ska det starta en virtuell dator i Azure.Then you modify the runbook to actually manage Azure resources, in this case starting an Azure virtual machine. Slutligen gör du runbooken mer robust genom att lägga till Runbook-parametrar.Lastly, you make the runbook more robust by adding runbook parameters.

Anteckning

Det finns inte stöd för att använda en webhook för att starta en python-Runbook.Using a webhook to start a Python runbook is not supported.

FörutsättningarPrerequisites

För att kunna genomföra den här kursen behöver du följande:To complete this tutorial, you need the following:

  • En Azure-prenumeration.Azure subscription. Om du inte redan har ett konto kan du aktivera dina MSDN-prenumerantförmåner eller registrera dig för ett kostnadsfritt konto.If you don't have one yet, you can activate your MSDN subscriber benefits or sign up for a free account.
  • Ett Automation-konto för Azure som runbooken ska ligga under och som ska användas för autentisering mot Azure-resurser.Automation account to hold the runbook and authenticate to Azure resources. Det här kontot måste ha behörighet att starta och stoppa den virtuella datorn.This account must have permission to start and stop the virtual machine.
  • En virtuell dator i Azure.An Azure virtual machine. Eftersom du ska stoppa och starta den här datorn bör det inte vara en virtuell dator som finns i produktionsmiljön.You stop and start this machine so it should not be a production VM.

Skapa en ny RunbookCreate a new runbook

Du börjar med att skapa en enkel Runbook som visar texten Hello World.You start by creating a simple runbook that outputs the text Hello World.

  1. Öppna ditt Automation-konto på Azure Portal.In the Azure portal, open your Automation account.

    Automation-kontosidan innehåller en snabb översikt över resurserna i det här kontot.The Automation account page gives you a quick view of the resources in this account. Du bör redan ha vissa tillgångar.You should already have some assets. De flesta av dessa tillgångar är de moduler som ingår automatiskt i ett nytt Automation-konto.Most of those assets are the modules that are automatically included in a new Automation account. Du behöver även autentiseringstillgången som nämns i kravavsnittet.You should also have the Credential asset that's mentioned in the prerequisites.

  2. Välj Runbooks under PROCESSHANTERING för att öppna listan med runbook-jobb.Select Runbooks under PROCESS MANAGEMENT to open the list of runbooks.

  3. Välj + Lägg till en Runbook för att skapa en ny Runbook.Select + Add a runbook to create a new runbook.

  4. Ge runbooken namnet MyFirstRunbook-python.Give the runbook the name MyFirstRunbook-Python.

  5. I det här fallet ska du skapa en python- Runbook så att du väljer python 2 för Runbook-typ.In this case, you're going to create a Python runbook so select Python 2 for Runbook type.

  6. Klicka på Skapa för att skapa runbooken och öppna textredigeraren.Click Create to create the runbook and open the textual editor.

Lägg till kod i RunbookAdd code to the runbook

Nu lägger du till ett enkelt kommando för att skriva ut texten "Hello World":Now you add a simple command to print the text "Hello World":

print("Hello World!")

Klicka på Spara för att spara runbooken.Click Save to save the runbook.

Testa runbookenTest the runbook

Innan du publicerar runbook-jobbet så att den blir tillgänglig i produktionsmiljön testar du den och kontrollerar att den fungerar som den ska.Before you publish the runbook to make it available in production, you want to test it to make sure that it works properly. När du testar en runbook kör du dess utkastversion och visar dess utdata interaktivt.When you test a runbook, you run its Draft version and view its output interactively.

  1. Öppna testfönstret genom att klicka på Testfönster.Click Test pane to open the Test pane.
  2. Starta testet genom att klicka på Starta.Click Start to start the test. Detta bör vara det enda aktiverade alternativet.This should be the only enabled option.
  3. Ett runbook-jobb skapas och dess status visas.A runbook job is created and its status displayed. Jobbets första status är I kö, vilket betyder att det väntar på att en runbook-arbetsroll i molnet ska bli tillgänglig.The job status starts as Queued indicating that it is waiting for a runbook worker in the cloud to come available. Den flyttar till Start när en arbets tagare anlitar jobbet och Kör sedan när runbooken faktiskt börjar köras.It moves to Starting when a worker claims the job, and then Running when the runbook actually starts running.
  4. När runbook-jobbet är klart visas dess utdata.When the runbook job completes, its output is displayed. I så fall bör du se Hello World.In this case, you should see Hello World.
  5. Gå tillbaka till arbetsytan genom att stänga testfönstret.Close the Test pane to return to the canvas.

Publicera och starta runbookenPublish and start the runbook

Den Runbook som du har skapat är fortfarande i utkast läge.The runbook that you created is still in draft mode. Du måste publicera den innan du kan köra den i produktion.You need to publish it before you can run it in production. När du publicerar en Runbook skriver du över den befintliga publicerade versionen med utkastet.When you publish a runbook, you overwrite the existing published version with the Draft version. I det här fallet har du inte någon publicerad version än eftersom du nyss skapade runbooken.In this case, you don't have a published version yet because you just created the runbook.

  1. Klicka på Publicera för att publicera runbooken och sedan på Ja när du uppmanas att göra det.Click Publish to publish the runbook and then Yes when prompted.
  2. Om du rullar åt vänster för att Visa Runbook i fönstret Runbooks nu visas redigerings statusen publicerad.If you scroll left to view the runbook in the Runbooks pane now, it shows an Authoring Status of Published.
  3. Rulla tillbaka till höger för att visa fönstret för MyFirstRunbook-python.Scroll back to the right to view the pane for MyFirstRunbook-Python. Med alternativen överst kan vi starta runbooken, Visa runbooken eller schemalägga den så att den startar vid ett senare tillfälle.The options across the top allow us to start the runbook, view the runbook, or schedule it to start at some time in the future.
  4. Du vill starta runbooken, så klicka på Start och sedan på OK när bladet starta Runbook öppnas.You want to start the runbook, so click Start and then click Ok when the Start Runbook blade opens.
  5. Ett jobb fönster öppnas för det Runbook-jobb som du har skapat.A job pane is opened for the runbook job that you created. Du kan stänga det här fönstret, men i det här fallet lämnar du det öppet så att du kan se jobbets förlopp.You can close this pane, but in this case you leave it open so you can watch the job's progress.
  6. Jobbets status visas i jobb Sammanfattning och matchar de status värden som du såg när du testade runbooken.The job status is shown in Job Summary and matches the statuses that you saw when you tested the runbook.
  7. När runbookens status visas som Slutförd klickar du på Utdata.Once the runbook status shows Completed, click Output. Fönstret utdata öppnas och du kan se din Hello World.The Output pane is opened, and you can see your Hello World.
  8. Stäng utdatafönstret.Close the Output pane.
  9. Klicka på Alla loggar för att öppna fönstret Strömmar för runbook-jobbet.Click All Logs to open the Streams pane for the runbook job. Du bör endast se Hello World i utdataströmmen, men även andra dataströmmar kan visas för ett runbook-jobb, till exempel Utförlig och Fel, om runbook-jobbet skriver till dem.You should only see Hello World in the output stream, but this can show other streams for a runbook job such as Verbose and Error if the runbook writes to them.
  10. Stäng fönstret strömmar och fönstret jobb för att återgå till fönstret MyFirstRunbook-python.Close the Streams pane and the Job pane to return to the MyFirstRunbook-Python pane.
  11. Öppna fönstret Jobb för runbooken genom att klicka på Jobb.Click Jobs to open the Jobs pane for this runbook. Här visas alla jobb som skapats av den här runbooken.This lists all of the jobs created by this runbook. Nu bör du endast se ett jobb eftersom du bara körde jobbet en gång.You should only see one job listed since you only ran the job once.
  12. Du kan klicka på det här jobbet för att öppna samma jobbfönster som du visade när du startade runbook-jobbet.You can click this job to open the same Job pane that you viewed when you started the runbook. På så sätt kan du gå tillbaka i tiden och visa information om alla jobb som har skapats för en specifik runbook.This allows you to go back in time and view the details of any job that was created for a particular runbook.

Lägg till autentisering för att hantera Azure-resurserAdd authentication to manage Azure resources

Du har testat och publicerat din runbook, men hittills gör den egentligen inget användbart.You've tested and published your runbook, but so far it doesn't do anything useful. Du vill att den ska hantera Azure-resurser.You want to have it manage Azure resources. För att hantera Azure-resurser måste skriptet autentisera med hjälp av autentiseringsuppgifterna från ditt Automation-konto.To manage Azure resources, the script has to authenticate using the credentials from your Automation Account. För att hjälpa dig kan du använda Azure Automation Utility-paketet för att göra det enklare att autentisera och interagera med Azure-resurser.To help you, you can use the Azure Automation utility package to make it easier to authenticate and interact with Azure resources.

Anteckning

Automation-kontot måste ha skapats med tjänstens huvud namns funktion för att det ska finnas ett Kör som-certifikat.The Automation account must have been created with the service principal feature for there to be a Run As Certificate. Om ditt Automation-konto inte har skapats med tjänstens huvud namn kan du autentisera med hjälp av metoden som beskrivs i autentisera med Azures hanterings bibliotek för python.If your automation account was not created with the service principal, you can authenticate by using the method described at Authenticate with the Azure Management Libraries for Python.

  1. Öppna text redigeraren genom att klicka på Redigera i fönstret MyFirstRunbook-python.Open the textual editor by clicking Edit on the MyFirstRunbook-Python pane.

  2. Lägg till följande kod för att autentisera till Azure:Add the following code to authenticate to Azure:

    import os
    from azure.mgmt.compute import ComputeManagementClient
    import azure.mgmt.resource
    import automationassets
    
    def get_automation_runas_credential(runas_connection):
        from OpenSSL import crypto
        import binascii
        from msrestazure import azure_active_directory
        import adal
    
        # Get the Azure Automation RunAs service principal certificate
        cert = automationassets.get_automation_certificate("AzureRunAsCertificate")
        pks12_cert = crypto.load_pkcs12(cert)
        pem_pkey = crypto.dump_privatekey(crypto.FILETYPE_PEM,pks12_cert.get_privatekey())
    
        # Get run as connection information for the Azure Automation service principal
        application_id = runas_connection["ApplicationId"]
        thumbprint = runas_connection["CertificateThumbprint"]
        tenant_id = runas_connection["TenantId"]
    
        # Authenticate with service principal certificate
        resource ="https://management.core.windows.net/"
        authority_url = ("https://login.microsoftonline.com/"+tenant_id)
        context = adal.AuthenticationContext(authority_url)
        return azure_active_directory.AdalAuthentication(
        lambda: context.acquire_token_with_client_certificate(
                resource,
                application_id,
                pem_pkey,
                thumbprint)
        )
    
    # Authenticate to Azure using the Azure Automation RunAs service principal
    runas_connection = automationassets.get_automation_connection("AzureRunAsConnection")
    azure_credential = get_automation_runas_credential(runas_connection)
    

Lägg till kod för att skapa python Compute Client och starta den virtuella datornAdd code to create Python Compute client and start the VM

Om du vill arbeta med virtuella Azure-datorer skapar du en instans av Azure Compute-klienten för python.To work with Azure VMs, create an instance of the Azure Compute client for Python.

Använd Compute-klienten för att starta den virtuella datorn.Use the Compute client to start the VM. Lägg till följande kod i runbooken:Add the following code to the runbook:

# Initialize the compute management client with the RunAs credential and specify the subscription to work against.
compute_client = ComputeManagementClient(
    azure_credential,
    str(runas_connection["SubscriptionId"])
)


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

Där MyResourceGroup är namnet på den resurs grupp som innehåller den virtuella datorn och testvm är namnet på den virtuella dator som du vill starta.Where MyResourceGroup is the name of the resource group that contains the VM, and TestVM is the name of the VM you want to start.

Testa och kör runbooken igen för att se att den startar den virtuella datorn.Test and run the runbook again to see that it starts the VM.

Använda indataparametrarUse input parameters

Runbooken använder för närvarande hårdkodade värden för namnen på resurs gruppen och den virtuella datorn.The runbook currently uses hard-coded values for the names of the Resource Group and the VM. Nu ska vi lägga till kod som hämtar dessa värden från indataparametrar.Now let's add code that gets these values from input parameters.

Du kan använda sys.argv variabeln för att hämta parameter värden.You use the sys.argv variable to get the parameter values. Lägg till följande kod i Runbook omedelbart efter de andra import -satserna:Add the following code to the runbook immediately after the other import statements:

import sys

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

Detta importerar sys modulen och skapar två variabler för att lagra resurs gruppen och namn på virtuella datorer.This imports the sys module, and creates two variables to hold the Resource Group and VM names. Observera att elementet i argument listan sys.argv[0], är namnet på skriptet och inte indata från användaren.Notice that the element of the argument list, sys.argv[0], is the name of the script, and is not input by the user.

Nu kan du ändra de två sista raderna i runbooken så att de använder värdena för Indataparametern i stället för att använda hårdkodade värden:Now you can modify the last two lines of the runbook to use the input parameter values instead of using hard-coded values:

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

När du startar en python-Runbook (antingen på test sidan eller som en publicerad Runbook) kan du ange värden för parametrarna på sidan starta Runbook under parametrar.When you start a Python runbook (either on the Test page or as a published runbook), you can enter the values for parameters in the Start Runbook page under Parameters.

När du börjar ange ett värde i den första rutan visas en sekund, och så att du kan ange så många parameter värden som behövs.After you start entering a value in the first box, a second will appear, and so on, so that you can enter as many parameter values as necessary.

Värdena är tillgängliga för skriptet som sys.argv matrisen som i den kod som du nyss lade till.The values are available to the script as the sys.argv array as in the code you just added.

Ange namnet på din resurs grupp som värde för den första parametern, och namnet på den virtuella dator som ska starta som värdet för den andra parametern.Enter the name of your resource group as the value for the first parameter, and the name of the VM to start as the value of the second parameter.

Ange parameter värden

Starta runbooken genom att klicka på OK .Click OK to start the runbook. Runbooken körs och startar den virtuella dator som du har angett.The runbook runs and starts the VM that you specified.

Nästa stegNext steps