Desplegar una máquina virtual en Azure siguiendo el modelo ARM desde una plantilla JSON
Bienvenidos nuevamente al TechClub de Tajamar. Hoy nos disponemos a desplegar una máquina virtual en Azure, a partir de una plantilla JSON.
Para empezar, debemos entender a qué nos referimos cuando indicamos «modelo ARM». ARM (Azure Resource Manager) es el servicio de implementación y administración de Azure, mediante la cual crearemos nuestros recursos y controlaremos el acceso a estos. Podríamos decir que es la capa de abstracción en la cual desarrollaremos la organización de todos los elementos de nuestra infraestructura.
Mediante las plantillas JSON, podremos definir los valores de estos objetos y así desplegar de una manera rápida y sencilla cualquier recurso, y permitiéndonos automatizar nuestro trabajo.
Plantillas JSON
JSON es el acrónimo de JavaScript Object Notation, y aunque haga referencia a JavaScript, es un estándar basado texto plano, pensado para el intercambio de información entre distintos sistemas o lenguajes. La gran ventaja que presenta JSON es esa misma, al ser independiente de cualquier otro lenguaje de programación, los servicios pueden compartir información a través de este método, sin necesidad de limitar a un lenguaje determinado.
En nuestro caso, los «schemas» nos proveerán de la descripción y de la estructura de nuestro JSON para realizar el despliegue en Azure de manera correcta. El «schema» que utilizaremos desde Azure es «https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#» ,aquí es de dónde nuestra plantilla se surtirá para definir todos los elementos.
Como curiosidad, en el siguiente sitio Web podemos validar nuestra plantilla JSON utilizando distintos «schemas»:
https://www.jsonschemavalidator.net/
JSON se divide en dos estructuras:
- Colección de pares nombre/valor: Lo que podríamos denominar en cualquier otro lenguaje como objeto
- Una lista ordenada de valores: En otros lenguajes podríamos denominarlos como arreglos o vectores.
Y en JSON podemos encontrarnos con las siguientes formas:
- Objecto: Conjunto desordenado de pares nombre/valor. Un objeto comienza con { (llave de apertura) y termine con } (llave de cierre). Cada nombre es seguido por : (dos puntos) y los pares nombre/valor están separados por , (coma).
- Unarreglo es una colección de valores. Un arreglo comienza con [ (corchete izquierdo) y termina con ] (corchete derecho). Los valores se separan por , (coma).
- Un valor puede ser una cadena de caracteres con comillas dobles, o un número, o true o false o null, o un objeto o un arreglo. Estas estructuras pueden anidarse.
- Una cadena de caracteres es una colección de cero o más caracteres Unicode, encerrados entre comillas dobles, usando barras divisorias invertidas como escape. Un carácter está representado por una cadena de caracteres de un único carácter. Una cadena de carateres es parecida a una cadena de caracteres C o Java.
- Un número es similar a un número C o Java, excepto que no se usan los formatos octales y hexadecimales.
Referencia https://www.json.org/json-es.html
Comencemos con el despliegue
Una vez que ya tenemos una idea de la estructura que presenta JSON, vamos a ver un caso práctico.
A la hora de desplegar una máquina debemos de crear los siguientes elementos:
- Grupo de recursos
- Recursos necesarios que requiera la máquina
- Máquina virtual
Teniendo en cuenta esto, nos dirigiremos dentro de Azure, al buscador y ahí introduciremos «Deploy a Custom Template»
Una vez dentro, se nos presentarán las siguientes opciones:
Como vemos en las distintas opciones, nos permitirá crear nuestra propia plantilla desde cero, o bien seleccionar ya una predeterminada. En el desplegable de «Load a GitHub quickstart template» se nos presentará un listado de plantillas con distintas infraestructuras, que podemos encontrar en Git Hub como Quickstart Templates de Azure.
https://github.com/Azure/azure-quickstart-templates
Para nuestro cometido, seleccionaremos la que viene definida como «Create a Linux Virtual Machine»
Se nos presentarán, todos los parámetros que podemos modificar definidos por la plantilla JSON. Si pulsamos en «Edit Template» veremos el código de esta:
A continuación analizaremos la estructura que tiene nuestra plantilla. En primer lugar, lo primero que va a definir son los parámetros de los recursos a crear, los cuales podremos introducir manualmente a la hora del despliegue, como pueden ser el nombre de la máquina, la localización de los recursos, el prefijo DNS…
Posteriormente se nos presentan las variables y sus valores, para definir también los recursos necesarios.
Y por último, nos encontraremos los recursos a crear.
En los siguientes enlaces podéis encontrar el código en bruto de las plantillas predeterminadas para desplegar una máquina Windows o Linux en Azure, para ver más detenidamente el código:
Una vez que tengamos la plantilla lista, únicamente tenemos guardar la configuración, e introducir los parámetros que se nos solicite:
Desplegamos, y Azure comenzará a crear los recursos:
Espero que os haya sido de utilidad, y os invito a que probéis a configurar vuestra propia plantilla partiendo de las Quickstart Templates de Azure.
Un saludo y hasta la próxima.
Autor: Mario Blanco Pérez
Curso: Microsoft MCSA Windows Server 2016 + Microsoft MCSE Cloud Platform & Infrastructure
Centro: Tajamar
Año académico: 2018-2019
Git Hub: https://github.com/lilwhite