Ir al contenido principal

Conectando GNU/Linux con Azure

Hace tiempo el mundo Linux y el mundo Windows estaban prácticamente separados. Las prácticas habituales de Microsoft de usar estándares propios ajenos al resto de la industria provocaban muchos recelos y quejas dentro de la comunidad.

Sin embargo, aunque siga provocando recelos, los tiempos han cambiado y a día de hoy es posible trabajar desde/con Linux sobre una gran parte de los productos y servicios de Microsoft. Por citar algunos ejemplos:

  • SQL Server o .NET se encuentran disponibles para entornos Linux.

  • Powershell y .NET son ahora plataformas de código abierto.

  • Microsoft ha empezado a contribuir al código del kernel de Linux.

  • La nube de microsoft, Azure, contiene miles de máquinas virtuales ejecutando Linux.

Con el mundo cloud pegando cada vez más fuerte y siendo Microsoft uno de los principales proveedores de nube pública del mundo, en este pequeño tutorial vamos a mostrar cómo conectar nuestra máquina Linux contra Azure para poder hacer despliegues, backups, etc.

Azure CLI

En primer lugar, debemos conectar la CLI de Azure, para gestionar la mayoría de servicios de la nube. Prefiero usar la CLI de Azure en lugar de Powershell por su portabilidad entre sistemas.

# Añadimos el repositorio de Azure-CLI para sistemas Debian o Ubuntu (El ejemplo está basado en Ubuntu 18.04)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ bionic main" | \
    sudo tee /etc/apt/sources.list.d/azure-cli.list

# Añadimos la clave GPG del repositorio e instalamos la CLI
curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli

Para ejecutar la CLI tan sólo tenemos que usar el comando az

Configuración

Ya tenemos nuestro PC preparado para conectarse a Azure sin usar el portal, pero necesitamos autenticarnos ante Azure para poder trabajar.

# Primer ejecutamos az configure para deshabilitar la telemetría. También podemos ejecutar el formato de la salida y el log donde se guarde el histórico.
az configure

# Ahora vamos a proceder a loguearnos en nuestra cuenta de Azure
az login

Nos mostrará un mensaje como el siguiente

To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code XXXXXXXXX to authenticate.

Deberemos abrir el navegador, pegar el link y el código y listo. Ya estaremos autenticados con nuestra cuenta dentro de Azure.

Autenticación en Microsoft Azure

Por ejemplo este comando nos mostrará todas las subscripciones de Azure a las que tenemos acceso y nos indicará cual es la seleccionada por defecto.

# Explicación del comando:
# az account list nos lista todas las subscripciones con todos sus datos
# --query [*].[name,state,isDefault] filtra sólo los campos que deseamos
# --out table nos muestra el resultado en formato tabla.

az account list --query [*].[name,state,isDefault] --out table

az account list

Nuestra configuración se encuentra en una carpeta dentro de nuestro $HOME llamada _.azure:

/home/tangelov/.azure
├── accessTokens.json
├── az.json
├── az.sess
├── azureProfile.json
├── clouds.config
├── config
└── logs
    └── az.log

AzCopy

Otro programa de gran utilidad para trabajar con almacenamiento de Azure es AzCopy por lo que vamos a proceder también a su instalación.

Primero debemos instalar .NET Core:

# Instalamos .NET Core. Para otras distribuciones mirar la documentación anexa. Ocupa unos 320 MB.

# Primero instalamos el repositorio de .NET Core 
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

# Después tendríamos que añadir la clave GPG de Microsoft si no lo hemos hecho antes
curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Ahora instalamos .NET Core
sudo apt-get install apt-transport-https libcurl3
sudo apt-get update
sudo apt-get install dotnet-runtime-2.1

# Deshabilitamos la telemetría (si queremos), creando una variable de entorno con los siguientes comandos:
sh -c 'echo "\n# Disabling .NET Core Telemetry
export DOTNET_CLI_TELEMETRY_OPTOUT=true" >> ~/.profile'

source ~/.profile

# Ahora nos descargamos e instalamos AzCopy
wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64
tar -xf azcopy.tar.gz
sudo ./install.sh

Documentación:

Revisado a 01/12/2018.