Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tutorial le guía por la creación de un runbook de Python 3.8 en Azure Automation. Los runbooks de Python se compilan en Python 2.7 y 3.8 Puede editar directamente el código del runbook mediante el editor de texto en Azure Portal.
- Creación de un runbook de Python sencillo
- Prueba y publicación del runbook
- Ejecución y seguimiento del estado del trabajo de runbook
- Actualización del runbook para iniciar una máquina virtual de Azure con parámetros de runbook
Prerrequisitos
Para completar este tutorial, necesita lo siguiente:
Una suscripción de Azure. Si aún no tiene una, puede activar las ventajas del suscriptor de MSDN o registrarse para obtener una cuenta gratuita.
Cuenta de Automation para contener el runbook y autenticarse en recursos de Azure. Una identidad administrada se crea automáticamente al crear la cuenta de Automation.
Una máquina virtual de Azure. Durante este tutorial, iniciará y detendrá esta máquina, por lo que no debe ser una máquina virtual de producción.
Crear un runbook
Para empezar, cree un runbook simple que genere el texto Hola mundo.
En Azure Portal, abra la cuenta de Automation.
La página de la cuenta de Automatización permite ver rápidamente los recursos de esta cuenta. Ya debería tener algunos activos. La mayoría de esos recursos son los módulos que se incluyen automáticamente en una nueva cuenta de Automation.
También debe tener habilitada una identidad administrada que se mencione en los requisitos previos. Para comprobarlo, vea el recurso Identidad en Configuración de la cuenta.
Seleccione Runbooks en Automatización de procesos para abrir la lista de runbooks.
Seleccione Crear un Runbook para crear un nuevo runbook.
Asigne al runbook el nombre MyFirstRunbook-Python.
Seleccione Python para el tipo de Runbook.
Seleccione Python 3.8 para la versión en tiempo de ejecución.
Seleccione Crear para crear el runbook y abra el editor de texto.
Agregar código al runbook
Ahora agrega un comando sencillo para imprimir el texto Hello World.
print("Hello World!")
Seleccione Guardar para guardar el runbook.
Probar el runbook
Antes de publicar el runbook para que esté disponible en producción, quieres probarlo para asegurarte de que funciona correctamente. Cuando pruebas un runbook, lo ejecutas en su versión borrador y ves su salida de forma interactiva.
Seleccione Panel de pruebas para abrir el panel Prueba .
Seleccione Iniciar para iniciar la prueba. Esta opción debe ser la única opción habilitada.
Se crea un trabajo de runbook y se muestra su estado. El estado del trabajo se inicia como En cola, lo que indica que está esperando a que esté disponible un trabajo de runbook en la nube. Su estado cambia a Iniciando cuando un trabajo de runbook solicita el trabajo. Cuando el runbook comienza a ejecutarse realmente, el estado es En ejecución.
Cuando se complete el trabajo del runbook, se mostrará su resultado. En este caso, deberías ver
Hello World.Cierre el panel Prueba para volver al lienzo.
Publicar e iniciar el runbook
El runbook que has creado todavía está en modo borrador. Tiene que publicarlo antes de que pueda ejecutarlo en producción. Al publicar un runbook, se sobrescribe la versión publicada existente con la versión de borrador. En este caso, no tiene una versión publicada aún porque acaba de crear el runbook.
Seleccione Publicar para publicar el runbook y, después, Sí cuando se le solicite.
Si cierra el MyFirstRunbook_python panel, volverá a la página de Runbooks, donde debería ver un Estado de Autoría de Publicado.
Seleccione el nombre MyFirstRunbook-Python de la lista, volverá al panel MyFirstRunbook-Python .
Las opciones en la parte superior le permiten iniciar el runbook, ver el runbook, editar el runbook, programarlo para empezar más adelante y realizar otras acciones.
Seleccione Iniciar y, a continuación, seleccione Aceptar cuando se abra el panel Iniciar Runbook.
Se abre un panel Trabajo para el trabajo de runbook que acaba de crear. Puede cerrar este panel, pero vamos a mantenerlo abierto para que pueda ver el progreso del trabajo.
El estado del trabajo se muestra en el campo Estado en Essentials. Los valores aquí coinciden con los valores de estado al probar el runbook.
Una vez que el estado del runbook aparezca Completado, seleccione la pestaña Salida . En la pestaña Salida , puede ver
Hello World.Cierre la pestaña Salida .
Seleccione la pestaña Todos los registros para ver los flujos del trabajo del runbook. Solo debería ver
Hello Worlden el flujo de salida. No obstante, en esta pestaña se pueden mostrar otros flujos de un trabajo de runbook, como Error y Modo detallado, si el runbook escribe en ellas.Cierre el panel Trabajos para volver al panel MyFirstRunbook-Python .
Seleccione el recurso Trabajos para abrir la página de recursos Trabajos para este runbook. Esta página enumera todos los trabajos creados por este runbook. Solo debería ver un trabajo en la lista ya que solo ejecutó el trabajo una vez.
Puede seleccionar este trabajo para abrir el mismo panel Trabajo que vio al iniciar el runbook. Esta panel permite volver atrás en el tiempo y ver los detalles de cualquier trabajo que se creó para un runbook determinado.
Adición de autenticación para administrar recursos de Azure
Ha probado y publicado su runbook, pero hasta ahora no hace nada útil. Quiere que administre los recursos de Azure. Para administrar recursos, el script tiene que autenticarse.
La manera recomendada de autenticarse es con la identidad administrada. Al crear una cuenta de Azure Automation, se crea automáticamente una identidad administrada.
Para usar estos ejemplos, agregue los siguientes paquetes en el recurso Paquetes de Python de la cuenta de Automation. Puede agregar los archivos WHL para estos paquetes con estos vínculos.
Cuando agregue estos paquetes, seleccione una versión de runtime que coincida con su runbook.
Nota:
El código siguiente se probó con la versión 3.8 del entorno de ejecución.
Identidad administrada
Para usar la identidad administrada, asegúrese de que está habilitada:
- Para comprobar si la identidad administrada está habilitada para la cuenta de Automation, vaya a su cuenta de Automation>Configuración de la Cuenta>Identidad y establezca el estado en Activado.
- La identidad administrada tiene un rol asignado para administrar el recurso. En este ejemplo de administración de un recurso de máquina virtual, agregue el rol "Colaborador de máquina virtual" en el grupo de recursos de que contiene la máquina virtual. Para más información, consulte Asignación de roles de Azure mediante Azure Portal.
Con el rol de administración de identidad configurado, puede empezar a agregar código.
Para abrir el editor de texto, seleccione Editar en el panel MyFirstRunbook-Python .
Agregue el código siguiente para autenticarse en 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)
Adición de código para crear el cliente de proceso de Python e iniciar la máquina virtual
Para trabajar con máquinas virtuales de Azure, cree una instancia del cliente de Azure Compute 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.')
Donde MyResourceGroup es el nombre del grupo de recursos que contiene la máquina virtual y TestVM es el nombre de la máquina virtual que desea iniciar.
Vuelva a probar y ejecutar el runbook para ver que inicia la máquina virtual.
Uso de parámetros de entrada
El runbook usa actualmente valores codificados de forma rígida para los nombres del grupo de recursos y la máquina virtual. Ahora vamos a agregar código que obtiene estos valores de los parámetros de entrada.
Usas la variable sys.argv para obtener los valores de parámetro. Agregue el código siguiente al runbook inmediatamente después de las otras import instrucciones:
import sys
resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])
Este código importa el sys módulo y crea dos variables para contener el grupo de recursos y los nombres de máquina virtual. Observe que el elemento de la lista de argumentos, sys.argv[0], es el nombre del script y el usuario no lo introduce.
Ahora puede modificar las dos últimas líneas del runbook para usar los valores de parámetro de entrada en lugar de usar valores codificados de forma rígida:
async_vm_start = compute_client.virtual_machines.begin_start(
resource_group_name, vm_name)
async_vm_start.wait()
Al iniciar un runbook de Python (ya sea en el panel Prueba o como runbook publicado), se pueden especificar los valores de los parámetros en la página Iniciar Runbook, en Parámetros.
Después de empezar a escribir un valor en el primer cuadro, aparece un segundo, etc., para que pueda escribir tantos valores de parámetro como sea necesario.
Los valores están disponibles en la matriz sys.argv del script, tal como en el código que acaba de agregar.
Escriba el nombre del grupo de recursos como el valor del primer parámetro y el nombre de la máquina virtual que se iniciará como el valor del segundo parámetro.
Seleccione Aceptar para iniciar el runbook. El runbook se ejecuta e inicia la máquina virtual que especificó.
Control de errores en Python
También puede usar las siguientes convenciones para recuperar varios flujos de los runbooks de Python, incluidos los flujos WARNING, ERROR y 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")
En el ejemplo siguiente se muestra esta convención usada en un try...except bloque .
try:
raise Exception('one', 'two')
except Exception as detail:
print ('ERROR: Handling run-time error:', detail)
Pasos siguientes
Para más información sobre los tipos de runbook, sus ventajas y limitaciones, consulte Tipos de runbook de Azure Automation.
Para más información sobre el desarrollo para Azure con Python, consulte Azure para desarrolladores de Python.
Para ver ejemplos de runbooks de Python 3, consulte el repositorio de GitHub de Azure Automation.