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).
object
Esquema Objeto
  • Unarreglo es una colección de valores. Un arreglo comienza con [ (corchete izquierdo) y termina con ] (corchete derecho). Los valores se separan por , (coma).
array
Esquema Arreglo
  • 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.
value
Esquema Valor
  • 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.
string
Esquema Cadena de Caracteres
  • Un número es similar a un número C o Java, excepto que no se usan los formatos octales y hexadecimales.
number
Esquema número

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»

deploy
Buscador Azure

Una vez dentro, se nos presentarán las siguientes opciones:

custom
Opciones Custom Template

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»

ubuntu
Parámetros Ubuntu

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:

codigo
Plantilla JSON

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…

parametros
Parametros JSON

Posteriormente se nos presentan las variables y sus valores, para definir también los recursos necesarios.

variables
Variables JSON

Y por último, nos encontraremos los recursos a crear.

recursos
Recursos JSON

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:

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.json

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-windows/azuredeploy.json

Una vez que tengamos la plantilla lista, únicamente tenemos guardar la configuración, e introducir los parámetros que se nos solicite:

parametrosfinales
Parámetros finales

Desplegamos, y Azure comenzará a crear los recursos:

wip
Desplegando 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

Leave a Comment

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.