Script de Python para automatizar la pausa y reanudación de SQL Dedicated Pools en Azure Automation Account con Managed Identity

Les presento dos scripts simples para automatizar la pausa y reanudación de un Azure SQL Dedicated Pool a través de un Runbook en Automation Account.

Una característica destacada de estos scripts es su uso de Azure Managed Identity. La Managed System Identity está habilitada a nivel de Automation Account con una identidad única, permitiéndoles conectarse sin problemas a recursos que admiten autenticación de Azure AD. Esto asegura la autenticación a los servicios de Azure sin el problema de hardcodear credenciales en tu código y sin tener que manipular run as account y tokes de autorización.

Repositorio: stop-resume-azure-sql-dedicated-pool-py

Dependencias

Instala los siguientes paquetes de Python:

  • azure_core.
  • azure_identity.
  • azure_mgmt_core.
  • azure_mgmt_sql.

Habilita Managed Identity en tu Automation Account

Ir a tu Azure Automation Account y habilita la system-managed identity:

Asigna los permisos necesarios

La managed identity generalmente necesitaría los permisos Microsoft.Sql/servers/databases/pause/action y Microsoft.Sql/servers/databases/resume/action en Azure RBAC (Control de Acceso Basado en Roles). Podrías asignar el siguiente permiso (del más al menos restrictivo):

  • SQL DB Contributor: Este rol permite la gestión de bases de datos SQL, pero no sus políticas relacionadas con la seguridad. Dado su amplio rango de permisos, incluirá la capacidad de pausar y reanudar.
  • SQL Server Contributor: Este es un rol más completo que el SQL DB Contributor, permitiendo la gestión de servidores SQL y sus bases de datos, pero no sus políticas relacionadas con la seguridad. Nuevamente, debido a sus amplios permisos, incluiría la capacidad de pausar y reanudar.
  • Contributor: Este también es un rol muy amplio que proporciona derechos completos de gestión al recurso asignado, excepto para cambiar permisos. Esto también incluiría la capacidad de pausar y reanudar.
  • Owner: Este es un rol muy amplio que proporciona derechos completos de gestión al recurso asignado, lo que significa que puede gestionar todo, incluido pausar y reanudar bases de datos.

Crear el Runbook

  1. Selecciona tu Automation Account. Si ya tienes una Automation Account creada, haz clic en su nombre. Si no, primero deberás crear una.
  2. Panel de Runbooks: Dentro de tu Automation Account, en la sección “Process Automation”, haz clic en “Runbooks”.
  3. Crea un Nuevo Runbook: En la parte superior del panel “Runbooks”, haz clic en el botón “+ Add a runbook”.
  4. Detalles del Runbook:
    • Nombre: Ingresa un nombre para tu runbook.
    • Lenguaje: Python.
    • Python runtime: 3.8
    • Descripción (opcional): Proporciona una breve descripción del propósito o funcionalidad del runbook.
  5. Crear: Haz clic en el botón “Create”. Tras unos momentos, tu runbook se creará y serás dirigido al editor del runbook.

Subir y probar el código Python:

Insertar el codigo y probar a través del Test Pane:

  1. Antes de publicar, siempre es buena practica probar el runbook para asegurarte de que funcione como se espera a través del Test Pane.

El script utiliza el Long Running processes pool en Python, lo que permite que finalice solo si el proceso de pausa o reanudación se completa con éxito.

Guardar y publicar el Runbook

Una vez que hayas probado y estés satisfecho con tu runbook, haz clic en el botón “Publish” para guardar el runbook y hacerlo disponible para triggers, schedules, o inicios manuales.

Luego puedes probarlo en la sección Runbook. Ejecutar el Runbook: De vuelta en el main pane de tu runbook, puedes hacer clic en “Start” para ejecutarlo manualmente. Ver Jobs: En el left pane, bajo “Jobs”, puedes monitorear el estado y ver la salida de las ejecuciones del runbook.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.