En este tutorial hablaremos de cómo utilizar la consola de Powershell en Azure, tanto de Cloud Shell (en el portal de Azure) como de la configuración de la consola de Powershell en nuestra propia máquina.
Dejaremos otras opciones como las cuentas de automatización para otro post.
Pero antes de nada me presento, soy Javier Orejana, Arquitecto Cloud especializado en Azure y este es mi primer artículo como colaborador en Virtualiza desde Zero.
Espero que sea el primero de muchos.
Ah y si quieres puedes seguir este artículo en video.
Contenido del artículo
- Consola de Azure Powershell en el portal de Azure
- Consola de Azure Powershell en Local
- Actualizar la Consola de Powershell
- Instalar los Módulos de Azure en Powershell
- Actualizar los Módulos de Azure en Powershell
- AzureRm vs Az modules
- Importar el perfil de usuario de Azure a la consola de Powershell local
- Posible Error: Use multiple repositories with PowerShellGet
Consola de Azure Powershell en el portal de Azure
Para acceder a la consola de powershell podemos cliclar en el «botón de Cloud Shell» superior o bien acceder a «shell.azure.com».
Lo primero que quiero que veais es que la versión que tiene instala la consola del portal.
Esta consola siempre va a ser la última version publicada. No tendremos que preocuparnos de irla actualizando como tendríamos (o deberías hacer) con la consola local. Qué pereza…
Del mismo modo que tenemos actualizada la versión de PowerShell. También tendremos instalados los últimos módulos.
Consola de Azure Powershell en Local
Para trabajar en local necesitaremos tener:
- Franework 4.7.2 como versión mínima
Fuente: https://docs.microsoft.com/es-es/powershell/azure/install-az-ps?view=azps-4.7.0
Descargar: https://docs.microsoft.com/en-us/dotnet/framework/install
- Consola de PWS como mínimo 5.1
Para sistemas Windows 10 (versión 1607) la versión es 5.1 o superior. La tendremos sin problemas. En el 99% de los casos vamos a tener ya instalada esa versión.
La recomendación de Microsoft es usar siempre la última versión. Pero podemos funcionar con versiones viejas de la consola sin problema como vemos en el vídeo. El propio Windows 10 se actualiza mediante «actualizaciones de sistema operativo» de la versión 5.0 a la 5.1. Ya os comento que no debería de preocuparos.
Si hacemos un «$psversiontable» en nuestra consola local. Un Windows 10 1804 vemos que cumple el requisito de PWS.
Actualizar la Consola de Powershell
Lo primero será descargar el instalador.
https://github.com/PowerShell/PowerShell/releases
En el momento de escribir este artículo la última versión estable es la 7.0.3
https://github.com/PowerShell/PowerShell/releases/tag/v7.0.3
Podemos actualizar a PWS 7 descargando el paquete e instalándolo como cualquier otra App.
Si lo abrimos. Veremos con un «$psversiontable» que la versión es superior a la que viene con el sistema operativo.
Instalar los Módulos de Azure en Powershell
Como hemos visto. En el shell de Azure los módulos están instalados y actualizados a la última versión. En local nos tocará hacerlo a nosotros.
Abrimos una consola con privilegios de administrador y añadimos el siguiente comando.
Install-Module -Name Az
Los módulos de PWS se cargan en el perfil de usuario. Estamos haciendo la instalación sólo para nosotros.
Si preferimos instalar el módulo para todos los usuarios que usen la máquina. Podemos ejecutar el cmdlet con el siguiente parámetro.
Install-Module -Name Az -AllowClobber -Scope AllUsers
Este comando empezará a descargar todos los paquetes que componen los diferentes módulos de Az.
Para instalar los módulos. Necesitamos acceder a un repositorio externo. En este caso el de PSGallery . Por lo que necesitaremos acceso a internet.
Si vienes o has tocado Linux esto de descargar software desde repositorios te sonará 😉
Actualizar los Módulos de Azure en Powershell
Podemos crear una tarea programa que nos actualize los módulos de vez en cuando o bien acordarnos de hacerlo cada cierto tiempo.
Podemos hacerlos con:
Update-module az -f
O aprovechar para actulizar todos los módulos existentes. Los de Az y los otros que hayamos instalado para nuestro trabajo
update-module -f
Si no tenemos la consola o los módulos a última versión. Nos puede ocurrir que un script localizado en un repositorio nos funcione en cloud shell pero no desde local.
Si alguna vez encontramos una situación similar. Acuérdate de este post. Actualiza los módulos y si el error se mantiene la consola. De todos modos estate tranquilo que no es normal que te de error.
AzureRm vs Az modules
Y hablando de buscar script por internet. Toca hablar de AzureRM.
AzureRM es el sistema antiguo de cmdlets. Sí, antiguo… que esto corre que se las vuela.
Los módulos de AzureRM siguen vivos en la nube pero Microsoft nos recomienda usarlos. Si vemos que hemos descargado un script y nos indica que no se reconocen los cmdlest mira si está usando cmdlest de AzureRM.
Estos cmdlets pueden usarse. Podrías instalarte el módulo correspondiente. Pero lo preferible es migrar los scripts que tengas en AzureRM a los nuevos comandos Az.
El cmdlet antigo sería:
New-AzureRmResourceGroup
Y el moderno:
New-AzResourceGroup
(https://docs.microsoft.com/en-us/powershell/module/az.resources/new-azresourcegroup?view=azps-4.7.0)
Si usas un SO diferente al de Microsoft. Mira este detalle.
The AzureRM module is not supported for macOS or Linux. To use Azure PowerShell cmdlets on these platforms, Install the Az module.
Puede que necesitemos instalarlo por alguna compatibilidad en algún script antiguo que tenga nuestro cliente. Pero como es evidente, si nos encontramos con un script en AzireRM, lo recomendable es ponernos a picar código y pasarlo al nuevo formato. No os asustenis, como veis es eliminar una serie de caracteres.
Si necesitas instalar este módulo. Ejecuta el siguiente script.
Install-Module -Name AzureRM -AllowClobber
Importar el perfil de usuario de Azure a la consola de Powershell local
La consola de PWS tiene un perfil para el usuario que se loga. Eesto nos permite ejecutar una serie de «cmdlet» en el inicio de la consola de PWS.
Por ejemplo, podemos agregar la importación de los módulos en nuestro perfil
Agregamos el cmdlet Import-Module Az y listo.
Lo malo de importar todos los módulos es que el arranque iniciar de PWS es bastante lento.
Una buena práctica podría instalar (o cargar) sólo los paquetes que emplees.
Según actualicemos los módulos. Se nos quedará instalada la versión antigua (por temas de compatibilidad).
Si queremos verla usaremos el siguiente comando.
Get-InstallModule Az -AllVersions
Si tenemos varias versiones. Podemos decirle a la consola de PWs que cargue una en concreto de la siguiente forma.
Import-Module -Name Az -RequiredVersion 3.6.1
Si necesitamos «hacer limpia». Podemos desinstalar los módulos. El problema es la dependencia que hay entre ellos. En la documentación de microsoft se nos ofrece una opción para poder eliminar versiones obsoletas sin volvernos locos.
https://docs.microsoft.com/en-us/powershell/azure/uninstall-az-ps?view=azps-4.7.0
Uninstall-AzModule -Name Az -Version 3.6.1
Por último para poder trabajar con Azure tenemos que logarnos.
Es posible que si tu empresa funciona con Azure AD o ADDS. El propio usuario de la máquina te «autologue» en el portal. Si no, en el vídeo vimos el comando a usar:
Connect-AzAccount
Una vez logados ya podremos trabajar contra los recursos de Azure como con el Shell del portal.
Posible Error: Use multiple repositories with PowerShellGet
Si te gusta cacharrear y has añadido varios repositorios. Por ejemplo para cargar software usando Chocolatey- Puede que tengas varios repositorios indexados.
Puedes usar el parámetro «-Repository» para indicar que buscas el módulo de Az en este repositorio. Si no has toqueteado, te irá a este repositorio por defecto.
Install-Module -Name Az -Repository PSGallery -AllowClobber -Force
Espero que poco a poco vayas perdiendo el miedo a toquetear en Azure con Powershell. Que el portal está muy bien pero se tarda menos con script.
Y si quieres saber como certificarte en Azure, te dejo esta megaguía:
Espero que te haya servidor este tutorial para utilizar la consola local de Powershell en Azure.