Tutorial: Criar um runbook python 3.8

Este tutorial explica-lhe a criação de um runbook python 3.8 no Automatização do Azure. Os runbooks do Python são compilados em Python 2.7 e 3.8 Pode editar diretamente o código do runbook com o editor de texto no portal do Azure.

  • Criar um runbook Python simples
  • Testar e publicar o runbook
  • Executar e controlar o estado da tarefa do runbook
  • Atualizar o runbook para iniciar uma máquina virtual do Azure com parâmetros de runbook

Pré-requisitos

Para concluir este tutorial, precisa de:

  • Uma subscrição do Azure. Se ainda não tiver uma, pode ativar os benefícios do subscritor do MSDN ou inscrever-se numa conta gratuita.

  • Uma conta de Automatização para manter o runbook e autenticar nos recursos do Azure com Identidades Geridas. É criada automaticamente uma identidade gerida quando cria a conta de Automatização.

  • Uma máquina virtual do Azure. Durante este tutorial, irá iniciar e parar este computador, pelo que não deve ser uma VM de produção.

Criar um novo runbook

Comece por criar um runbook simples que produz o texto Hello World.

  1. No portal do Azure, abra a sua conta da Automatização.

    A página da conta da Automatização dá-lhe uma vista rápida dos recursos nesta conta. Já deverá ter alguns recursos. A maioria destes ativos são os módulos que estão incluídos automaticamente na nova conta da Automatização.

    Também deve ter uma identidade gerida ativada que seja mencionada nos pré-requisitos. Pode verificar isso ao ver o recurso identidade em Definições de Conta.

  2. Selecione Runbooks em Automatização de Processos para abrir a lista de runbooks.

  3. Selecione Criar um runbook para criar um novo runbook.

  4. Dê ao runbook o nome MyFirstRunbook-Python.

  5. Selecione Python para o tipo runbook.

  6. Selecione Python 3.8 para a versão do Runtime.

  7. Selecione Criar para criar o runbook e abra o editor textual.

Adicionar código ao runbook

Agora, adicione um comando simples para imprimir o texto Hello World.

print("Hello World!")

Selecione Guardar para guardar o runbook.

Testar o runbook

Antes de publicar o runbook para o disponibilizar na produção, deve testá-lo para garantir que funciona corretamente. Quando testa um runbook, executa a versão de rascunho e vê o respetivo resultado interativamente.

  1. Selecione Painel de teste para abrir o painel Teste.

  2. Selecione Iniciar para iniciar o teste. Esta opção deve ser a única opção ativada.

  3. Uma tarefa do runbook é criada e o respetivo estado é apresentado. O estado da tarefa começa como Em fila, indicando que está à espera que uma função de trabalho de runbook na cloud fique disponível. Muda para Iniciar quando um trabalhador reclama a tarefa e, em seguida, em Execução quando o runbook começa realmente a ser executado.

  4. Quando a tarefa de runbook tiver concluído, o resultado é apresentado. Neste caso, deverá ver Hello World.

  5. Feche o painel Teste para regressar à tela.

Publicar e iniciar o runbook

O runbook que criou ainda está no modo de rascunho. Tem de publicá-lo antes de poder executá-lo em produção. Quando publica um runbook, substitui a versão publicada existente com a versão de rascunho. Neste caso, ainda não tem uma versão publicada porque acabou de criar o runbook.

  1. Selecione Publicar para publicar o runbook e, em seguida, Sim quando lhe for pedido.

  2. Se fechar o painel MyFirstRunbook_python , está novamente na página Runbooks onde deverá ver um Estado de Criação de Publicado.

  3. Selecione o nome MyFirstRunbook-Python na lista e voltará ao painel MyFirstRunbook-Python .

    As opções na parte superior permitem-lhe iniciar o runbook, ver o runbook, editar o runbook, agende-o para começar em algum momento no futuro e outras ações.

  4. Selecione Iniciar e, em seguida, selecione OK quando o painel Iniciar Runbook for aberto.

  5. É aberto um painel Tarefa para a tarefa de runbook que criou. Pode fechar este painel, mas vamos mantê-lo aberto, para que possa watch o progresso da tarefa.

  6. O estado da tarefa é apresentado no campo Estado em Essentials. Os valores aqui correspondem aos valores de estado quando testou o runbook.

  7. Assim que o estado do runbook mostrar Concluído, selecione o separador Saída . No separador Saída , pode ver Hello World.

  8. Feche o separador Saída .

  9. Selecione o separador Todos os Registos para ver fluxos para a tarefa do runbook. Só deverá ver Hello World no fluxo de saída. No entanto, este separador pode mostrar outros fluxos para uma tarefa de runbook, como Verboso e Erro, se o runbook escrever nos mesmos.

  10. Feche o painel Tarefas para regressar ao painel MyFirstRunbook-Python .

  11. Selecione Recurso tarefas para abrir a página de recursos Tarefas deste runbook. Esta página lista todas as tarefas criadas por este runbook. Apenas deve conseguir ver uma tarefa listada, uma vez que apenas executou a tarefa uma vez.

  12. Pode selecionar esta tarefa para abrir o mesmo painel Tarefa que viu quando iniciou o runbook. Este painel permite-lhe voltar atrás no tempo e ver os detalhes de qualquer tarefa que tenha sido criada para um runbook específico.

Adicionar autenticação para gerir recursos do Azure

Testou e publicou o seu runbook, mas, até ao momento, não faz nada de útil. Deve fazer com que gira os recursos do Azure. Para gerir recursos, o script tem de ser autenticado.

A forma recomendada de autenticação é com a identidade gerida. Quando cria uma Conta Automatização do Azure, é criada automaticamente uma identidade gerida.

Para utilizar estes exemplos, adicione os seguintes pacotes no recurso Pacotes python da Conta de Automatização. Pode adicionar os ficheiros WHL para estes pacotes com estas ligações.

Quando adicionar estes pacotes, selecione uma versão de runtime que corresponda ao runbook.

Nota

O código seguinte foi testado com a versão 3.8 do runtime.

Identidade gerida

Para utilizar a identidade gerida, certifique-se de que está ativada:

  • Para verificar se a identidade gerida está ativada para a conta de Automatização, aceda àIdentidadedas Definições> da Conta > de Automatizaçãoe defina o Estado como Ativado.
  • A identidade gerida tem uma função atribuída para gerir o recurso. Neste exemplo de gestão de um recurso de máquina virtual, adicione a função "Contribuidor de Máquina Virtual" no grupo de recursos que contém a Máquina Virtual. Para obter mais informações, veja Atribuir funções do Azure com o portal do Azure

Com a função gerir identidade configurada, pode começar a adicionar código.

  1. Abra o editor textual ao selecionar Editar no painel MyFirstRunbook-Python .

  2. Adicione o seguinte código para autenticar no 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)

Adicionar código para criar um cliente de Computação Python e iniciar a VM

Para trabalhar com VMs do Azure, crie uma instância do cliente de Computação do Azure para 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.')

Onde MyResourceGroup está o nome do grupo de recursos que contém a VM e TestVM é o nome da VM que pretende iniciar.

Teste e execute o runbook novamente para ver se inicia a VM.

Utilizar parâmetros de entrada

Atualmente, o runbook utiliza valores hard-coded para os nomes do grupo de recursos e da VM. Agora, vamos adicionar código que obtém estes valores a partir dos parâmetros de entrada.

Utilize a sys.argv variável para obter os valores dos parâmetros. Adicione o seguinte código ao runbook imediatamente após as outras import instruções:

import sys

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

Este código importa o sys módulo e cria duas variáveis para conter os nomes do grupo de recursos e da VM. Repare que o elemento da lista de argumentos, sys.argv[0], é o nome do script e não é introduzido pelo utilizador.

Agora, pode modificar as duas últimas linhas do runbook para utilizar os valores dos parâmetros de entrada em vez de utilizar valores hard-coded:

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

Quando inicia um runbook do Python, a partir do painel Teste ou como um runbook publicado, pode introduzir os valores dos parâmetros na página Iniciar Runbook em Parâmetros.

Depois de começar a introduzir um valor na primeira caixa, é apresentado um segundo, etc., para que possa introduzir o número de valores de parâmetros necessários.

Os valores estão disponíveis para o script na sys.argv matriz, tal como no código que acabou de adicionar.

Introduza o nome do grupo de recursos como o valor do primeiro parâmetro e o nome da VM a iniciar como o valor do segundo parâmetro.

Introduzir valores de parâmetros

Selecione OK para iniciar o runbook. O runbook é executado e inicia a VM que especificou.

Processamento de erros no Python

Também pode utilizar as seguintes convenções para obter vários fluxos dos runbooks do Python, incluindo fluxos DE AVISO, ERRO e DEPURAÇÃO.

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

O exemplo seguinte mostra esta convenção utilizada num try...except bloco.

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

Passos seguintes