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
- Selecciona tu Automation Account. Si ya tienes una Automation Account creada, haz clic en su nombre. Si no, primero deberás crear una.
- Panel de Runbooks: Dentro de tu Automation Account, en la sección “Process Automation”, haz clic en “Runbooks”.
- Crea un Nuevo Runbook: En la parte superior del panel “Runbooks”, haz clic en el botón “+ Add a runbook”.
- 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.
- 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:
- 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.
Leave a Reply