Aplicación de procedimientos recomendados mediante el módulo del kit de herramientas para pruebas

Completado

Al desarrollar plantillas de Azure Resource Manager (plantillas de ARM), hay formas de facilitar la creación de plantillas válidas y proporcionar recomendaciones para mejorar su calidad. ¿Cuáles son estas recomendaciones y por qué puede ser beneficioso que la plantilla se adhiera a ellas?

Hay recomendaciones en diferentes niveles, desde parámetros y variables hasta recomendaciones que se aplican a los recursos. Examine estas recomendaciones desde un nivel alto y vea lo que se puede obtener al adherirse a ellas:

  • Capacidad de mantenimiento. A medida que desarrolla una plantilla, desde su creación inicial hasta su actualización, el hecho de mantenerla limpia y ordenada se complica a lo largo del tiempo. A medida que crece la plantilla, también lo hacen los parámetros y las variables. Es importante que comprenda para qué se usa cada uno de ellos y cómo usarlos de forma adecuada.

    Imagine un escenario en el que un parámetro tiene un nombre incorrecto y le cuesta comprender lo que hace. O bien, que usa un valor codificado de forma rígida donde no debería y, cuando se produce algún cambio, los servicios de Azure dejan de responder. Todos estos problemas contribuyen a la carga de tener que comprender y después descartar lo que se examina. La disciplina a la hora de asignar nombres a los elementos y realizar las tareas de limpieza puede ayudar a mitigar los efectos de esos escenarios.

  • Corrección. Es posible que intente nombrar todo de la forma correcta, pero podría haber demasiadas reglas de las que realizar un seguimiento. Estas situaciones exigen una herramienta que le recuerde todas estas reglas y normativas y las aplique.

  • Flexibilidad. Asegúrese de que las plantillas son lo suficientemente flexibles para poder usarse en cualquier entorno. Si no parametriza correctamente las plantillas, es posible que no se puedan reutilizar.

  • Extensibilidad. En ocasiones, querrá agregar recomendaciones propias. Quizá su empresa o equipo tengan sus propias reglas que aplicar.

Nota:

La comprobación del código con estos tipos de recomendaciones a veces se denomina linting.

Kit de herramientas para pruebas de plantillas de ARM

El uso de una herramienta para pruebas es una buena idea para que pueda centrarse en la creación mientras sabe que la herramienta detectará cualquier problema y mejorará las plantillas. Existe una herramienta de este tipo: el kit de herramientas para pruebas de plantillas de ARM, a veces denominado ARM-TTK. Soluciona los problemas mencionados anteriormente mediante la ejecución de una serie de pruebas. Las pruebas se pueden agrupar en las categorías siguientes:

  • Validación de la intención del usuario. Esta categoría examina si se usan todas las variables y los parámetros declarados, y le advierte en caso contrario.
  • Prácticas de seguridad siguientes. Otro aspecto importante es asegurarse de que no se devuelve nada de la plantilla que podría ser confidencial, como secretos de API.
  • Uso de construcciones de lenguaje apropiadas. Se deben usar construcciones de lenguaje o funciones auxiliares para no depender de valores codificados de forma rígida.

Nota:

Se trata de recomendaciones, no de requisitos. Sin embargo, recomendamos encarecidamente que las siga.

Instalación de la herramienta

La herramienta es un módulo de PowerShell. Para poder ejecutarlo, debe seguir estos pasos:

  1. Instale PowerShell. Esta tarea se realiza de manera diferente en función de si se encuentra en Linux, Mac o Windows.
  2. Descargue el módulo. El módulo se hospeda en un repositorio de GitHub. Puede descargarlo desde allí o capturarlo a través de un comando git clone.
  3. Importe el módulo. Este paso es simplemente una instrucción de una línea que se escribe en una sesión de PowerShell, lo que hará que los comandos ARM-TTK estén disponibles.

Verá cómo hacer todo esto en la unidad siguiente. Una vez que haya instalado la herramienta, podrá ejecutar las pruebas en la plantilla.

Ejecución de las pruebas

La ejecución de las pruebas implica invocar el módulo con los parámetros adecuados. -TemplatePath es un parámetro obligatorio que espera una cadena que apunta a la ubicación del archivo de plantilla de implementación. El nombre de archivo de plantilla debe ser azuredeploy.json o maintemplate.json. Por tanto, una serie de pruebas típica puede tener un aspecto similar al del siguiente comando:

Test-AzTemplate -TemplatePath path/to/template

La herramienta prueba el archivo de plantilla, así como los archivos de plantilla del mismo directorio y sus subcarpetas.

Una salida típica de una serie de pruebas puede tener este aspecto:

[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
     azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)

Las pruebas correctas se codifican en color verde y llevan el prefijo [+]. Las pruebas con errores se codifican en color rojo con el prefijo [-].

Configuración de la serie de pruebas con parámetros de prueba

Ya ha visto que incluir el parámetro -TemplatePath es obligatorio al ejecutar la herramienta. La herramienta también acepta parámetros opcionales. Estos parámetros permiten ejecutar determinados archivos o pruebas concretas. El uso de estos parámetros le ofrece un control más granular de la creación y la depuración de las plantillas.

El parámetro -File se usa para ejecutar un archivo específico. El parámetro -Test permite especificar un escenario de prueba que se va a ejecutar.

Puede usar los parámetros de estas formas:

  • Ejecución de pruebas en un solo archivo. Es posible que solo quiera ejecutar pruebas en solo un único archivo en el que trabaje actualmente. El motivo es que es más fácil concentrarse en la creación de ese archivo de plantilla específico. Una ventaja adicional es que la salida contendrá menos ruido y solo mostrará lo que le interesa. Al usar el parámetro -File con una ruta de acceso a un archivo (incluido el nombre de archivo), se pueden ejecutar las pruebas solo en ese archivo.

    Importante

    El parámetro todavía espera que azuredeploy.json o maintemplate.json existan en la ubicación especificada.

  • Ejecución de un solo tipo de prueba en todos los archivos. En ocasiones, es posible que quiera ejecutar un solo tipo de prueba para asegurarse de que cumple los criterios concretos para ese escenario. Puede realizar esta tarea mediante el parámetro -Test. El parámetro espera el nombre completo de la prueba entre comillas, por ejemplo Los recursos deben tener una ubicación.