Cerrar
InicioAzureAzure PowerShell: detener e iniciar los servicios de PowerBI Embedded

Azure PowerShell: detener e iniciar los servicios de PowerBI Embedded

Una de las grandes ventajas que tienen los servicios de Cloud aparte de la escalabilidad, disponibilidad, etc.. es el ahorro de costes tan importante que podemos conseguir. Por ejemplo en Azure si tenemos un servidor parado (Deallocated)  no tenemos coste asociado, a menos que tengamos por ejemplo discos SSD adicionales que estos siempre tienen coste, pero a nivel de proceso no tenemos coste alguno. Esto ocurre con casi todo los servicios que podemos desplegar en Azure,  además, podemos automatizar el apagado he iniciado de dichos servicios de forma muy sencilla.

No todos los servicios son tan “sencillo de detener” de forma automatizada, como por ejemplo un servicio de Power Bi Embedded. Este servicio de Power Bi como servicios (SaaS), desde el portal de Azure no tenemos ningún proceso sencillo para automatizar su detención e iniciado, por lo que mientras lo tengamos iniciado nos consume €. Este servicio se factura por hora de proceso y algunos factores adicionales, pero lo que realmente nos supone coste es el tener iniciado el servicio de Power Bi Embedded. Aquí os dejo el enlace de los costes de dicho servicio: Precios de Power BI Embedded:

Por ejemplo, si tenemos un noto de tipo A1 las 730 horas de un mes iniciado, el coste será de 620,60€:

Pero si lo iniciamos la mitad de horas, porque es el tiempo que nuestros usuarios harán uso del servicio, entonces pagaríamos la parte que corresponda, en este caso con el 50% menos del tiempo iniciado pues pagaríamos 310,30€:

La forma de iniciar y parar dicho servicio (Power Bi Embedded) es mediante el portal de Azure, ahora que está pausado podemos Iniciarlo y si estuviese iniciado pues lo podemos Pausar:

Ahora llega el “problema”, no tenemos desde el portal de Azure nada gráfico para poder automatizar este proceso. Una cuenta de automatización nos permite “automatizar” muchos de los servicios desplegados en Azure y otros servicios. Aquí os dejo que más información sobre que es y como configurar una cuenta de automatización en Azure (sino el artículo se me hará muy extenso): Creación de una cuenta de Azure Automation.

Una vez que tengamos nuestra cuenta de automatización, lo que haré será crear un runbook y lanzarlo desde mi cuenta de automatización.Aquí os dejo varios enlaces al respecto:

Insisto en este artículo no voy a entrar en muchos detalles sobre los servicios a utilizar, porque sino algo que nos llevará 5 min configurarlo me llevará a crear un artículo súper grande. Si en otra ocasión alguien estaré interesado en ello, por favor, dejar un comentario en el blog y me pondré con ello.

Dicho esto, lo primero, la infografía donde muestro los componentes básicos que voy a utilizar para configurar un pausado e inicio de un servicio de Power Bi Embedded, de tal forma que sólo estará iniciado durante unas horas (14) de lunes a viernes y apagado el fin de semana:

Antes de nada aquí los requisitos:

  • Cuenta de automatización de Azure (omitiré este paso)
  • Modulos requeridos: AzureRM.PowerBIEmbedded

Los módulos de AzureRM.PowerBIEmbedded son necesarios para ejecutar el script de PowerShell vía cuenta de automatización, porque por defecto los cmdlets de PowerShell no los tenemos disponibles. Sino los instalamos previamente, cuando iniciemos el runbook veremos que obtendremos un error.

Pues venga, lo primero instalar el AzureRM.PowerBIEmbedded, para ello desde la cuenta de automatización nos vamos a la sección de Módulos y comprobamos que no lo tenemos instalado (ya lo sabemos, pero vamos a verificarlo). Dentro desde la sección de módulos escribimos PowerBi y vemos que no tenemos nada, por lo que, tendremos que instalarlo, para ello pulsamos en Browse Gallery

En el cuadro de búsqueda escribimos PowerBi y elegimos AzureRM.PowerBIEmbedded

Pulsamos en import

pero .. nos dice que nos falta una dependencia y que tenemos que instalarla primero, por lo que, tenemos que cancelar el proceso e instalar primero el AzureRM.profile:

Otra vez desde Browse Gallery volvemos al cuadro de búsqueda pero ahora escribimos AzureRM.profile:

Pulsamos en Import:

Marcamos la casilla de que nos actualice todos los módulos de Azure (de paso ya lo dejamos listo) y pulsamos en Ok

Ahora si buscamos el módulo AzureRM.profile veremos que ya está disponible:

y que los módulos de Azure se están actualizando:

En cuestión de unos minutos volvemos a buscar el AzureRM.PowerBIEmbedded y lo tenemos ya disponible para importar:

En cuestión de uno segundos ya lo tendremos disponible:

Si ahora lo buscamos lo tenemos disponible ..

Pues ahora si podemos crear nuestro runbook desde la cuenta de automatización que tengamos, para ello, accedemos a la sección de Runbooks de nuestra cuenta de automatización, pulsamos en Create a runbook , escribimos un nombre para el runbook y luego elegimos tipo de runbook en mi caso elegiré PowerShell:

Antes no lo he comentado, pero tenemos los cmdlets de Azure PowerShell para controlar parte de los servicios de PowerBi, en este caso tenemos los cmdlets que nosotros necesitamos:

Dicho esto, lo que haremos será invocar estos cmdlets en dos runbooks diferentes (tenemos que crearnos uno por cada proceso que queremos ejecutar), aquí os muestro el código que tenéis que escribir en el runbook:

Script para detener el servicio de PowerBi Embedded

Disable-AzureRmContextAutosave –Scope Process

$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
-ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint

$AzureContext = Select-AzureRmSubscription -SubscriptionId $connection.SubscriptionID

Suspend-AzureRmPowerBIEmbeddedCapacity -Name <Nombre-Recurso-PowerBiEmbedded>

Script para iniciar (resumir) el servicio de PowerBi Embedeed

Disable-AzureRmContextAutosave –Scope Process

$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal -Tenant $connection.TenantID `
-ApplicationID $connection.ApplicationID -CertificateThumbprint $connection.CertificateThumbprint

$AzureContext = Select-AzureRmSubscription -SubscriptionId $connection.SubscriptionID

Resume-AzureRmPowerBIEmbeddedCapacity -Name <Nombre-Recurso-PowerBiEmbedded>

Una vez que hayáis terminado, pulsáis en Publish para dejar el runbook activo

Por ahora únicamente tenemos el runbook activo, pero sin programación, así que solo nos serviría para ejecutarlo de forma manual.

Para agregar una programación en la sección de  Schedules pulsamos en Add a schedule

Como siempre en Azure podemos seleccionar un elemento de configuración que hemos creado previamente o crear una nueva, en mi caso elegiré una programación que ya tengo  pero os voy a mostrar como crear desde aquí una nueva programación. Lo primero, pulsar en Create a new schedule

Las opciones que tenemos disponibles son las siguientes, muy sencillo, únicamente debéis crear la planificación que mas se ajuste a lo que buscáis:

Como os comentaba yo elegiré una de las que ya tenía y pulsamos en Ok

Ahora vemos que ya tenemos la programación asociada a nuestro Runbook

Pasados unos días veremos las ejecuciones desde el runbook y si ha tenido algún problema en su ejecución:

Por último (o no), podemos ir al servicio de PowerBi Embedded y revisar el registro de actividad:

Y podemos observar que tenemos dos procesos diarios, uno que lo  detiene (Suspend-AzureRmPowerBIEmbeddedCapacity ) y otro lo inicia (Resume-AzureRmPowerBIEmbeddedCapacity )

Como vemos es un proceso sencillo, únicamente tenemos que tener claro los requisitos previos y luego podemos automatizar casi cualquier tarea y ahorrarnos unos € muy importantes.

Con las cuentas de automatización podemos hacer muchas cosas, crear, eliminar, mantener, monitorizar, etc.. servicios de Azure y externos (Office 365 por ejemplo).

Ahora, como siempre os tocar probarlo a vosotros!!

Microsoft Teams, con
Microsoft Teams, con
NO HAY COMENTARIOS

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This