Configurar Azure Service EndPoint en Visual Studio Team Services (VSTS) para Release en Azure App Service

Este fin de semana, quería dejar preparadas algunas Releases, tanto para ejemplos del blog como para un pequeño proyecto que estoy preparando (y del cual ya hablaré un poco mas adelante), y al llegar al punto en el que se tiene que desplegar sobre el Azure App service que tenía preparado me he encontrado bastantes problemas a la hora de conectar VSTS (Visual Studio Team Services) con Azure. Esta es una parte que siempre me había encontrado configurada, y sinceramente, teniendo en cuenta que es un VSTS «atacando» a Azure pensaba que sería algo tan sencillo como un par de clics. Pero va a ser que no, y al final he tardado mas de lo que me gustaría reconocer en pedir algo de ayuda y solucionarlo.

Al crear una nueva Release, seleccionamos la plantilla de Azure App Service Deployment, se crea un entorno por defecto «Environment 1». Haciendo clic sobre el enlace para configurar las tareas se accede a la configuración de esta.

environmentComo se puede comprobar en los datos que se solicitan, hay que indicar una suscripción de Azure y una vez seleccionada, el «App service name». En este punto es donde hay que agregar el endpoint y donde pueden surgir los problemas.

releasedefinition

Si intentas seleccionar un valor para «Azure Subscription» verás que te aparece un bonito mensaje indicándote que no hay nada que seleccionar. De momento. Podemos clicar sobre el botón «New» para empezar el proceso de añadir el nuevo endpoint.

add_endpoint

 

Aparecerá una ventana donde introducir todos los datos necesarios:

add_endpoint_popup.png

Todos estos datos puedes encontrarlos fácilmente navegando por el portal de Azure, excepto el de «Service Principal Key«, aquí es donde yo me volví loco buscando. El truco, hay que registrar la aplicación de VSTS dentro del «Service Principal Client» de Azure.

principalclient

Registrar la aplicación en AAD

Hacerlo desde el panel puede resultar un tanto complicado (al menos a mí me lo pareció), así que para facilitar un poco las cosas vamos a tirar de PowerShell.

En esta página (Service endpoints for Build and Release) del equipo de Visual Studio hay muchísima información sobre el tema y desde ahí se llega a la página en GitHub donde se encuentra el script que nos salvará. Una vez descargado el script, se tiene que abrir una ventana de PowerShell en modo administrador para empezar con la magia.

Lo primero que has de hacer es lanzar el comando:

Set-ExecutionPolicy Unrestricted

Y decirle que si cuando te pregunte para cambiar la directiva de ejecución.

policies

Ahora ya se puede ejecutar el script que hemos descargado antes:

.\SPNCreation.ps1

scriptps

Durante la ejecución del script se nos pedirá primero una confirmación de ejecución y luego el nombre de la suscripción de Azure. Seguidamente nos pedirá una contraseña, que será el famoso «Service Principal Key» que tendremos que informar en la ventana de creación del endpoint. Por último aparecerá una ventana de explorador donde se nos pedirán nuestras credenciales de Azure.

login.PNG

Una vez terminado el proceso, se habrá registrado la aplicación dentro del AAD, y se nos mostrará un resumen con los datos necesarios para poder añadir el endpoint.

aplicaciones

 

Añadir Azure Resource Manager Service Endpoint

Una vez registrada la aplicación solo queda rellenar el formulario de la ventana que antes nos aparecía con los datos que nos ha dado el resumen de la ejecución del script.

scriptps_result

Ahora ya se puede seleccionar la suscripción de Azure y el App service deseado.

release1

Una vez configurado a nivel de entorno, los datos se asignan automáticamente a nivel de la tarea.

release2

En próximas entradas entraré en mas detalle con todo lo relacionado con las Releases.

¡Nos leemos!

 

Gracias por leerme. Últimamente le estoy dedicando mucho tiempo a generar contenido para Youtube y Twich. Te invito a que te pases por los canales y me sigas 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *