Aplicar práticas recomendadas usando o módulo de kit de ferramentas de teste

Concluído

Quando desenvolvemos modelos do Azure Resource Manager (modelos ARM), há maneiras de facilitar a criação de modelos válidos e fornecer recomendações para melhorar sua qualidade. Quais são as recomendações e por que podem ser benéficas para o seu modelo?

Existem recomendações em diferentes níveis: tudo, desde parâmetros e variáveis, até recomendações que se aplicam aos seus recursos. Vamos examinar estas recomendações de um panorama elevado e ver o que tem a ganhar se as seguir:

  • Capacidade de manutenção. À medida que desenvolve um modelo, desde a primeira criação à atualização, mantê-lo organizado e ordenado torna-se complicado ao longo do tempo. À medida que seu modelo cresce, seus parâmetros e variáveis também crescem. É importante saber a finalidade de cada um e como o utilizar corretamente.

    Imagine um cenário em que um parâmetro é mal nomeado e você está lutando para entender o que ele faz. Ou você está usando um valor codificado onde não deveria e, quando algo muda, seus serviços do Azure ficam inativos. Todas essas questões contribuem para o fardo de ter que entender e depois descartar o que você está olhando. Ter disciplina ao organizar e atribuir nomes aos elementos pode ajudar a mitigar os efeitos desses cenários.

  • Exatidão. Você pode tentar nomear tudo da maneira certa, mas pode haver muitas regras para acompanhar. Tais situações exigem uma ferramenta que o lembre de todas essas regras e regulamentos, e os aplique.

  • Flexibilidade. Garanta que os seus modelos são suficientemente flexíveis para serem utilizados em qualquer ambiente. Se você não parametrizar seus modelos corretamente, talvez não seja possível reutilizá-los.

  • Extensibilidade. Por vezes, quer adicionar as suas próprias recomendações. Sua empresa ou equipe pode ter suas próprias regras para aplicar.

Nota

A verificação do código em relação a esses tipos de recomendações às vezes é chamada de linting.

O Kit de Ferramentas de Teste de Modelo ARM

Utilizar uma ferramenta de teste é boa ideia, para que se possa concentrar na criação sabendo que a ferramenta irá procurar problemas e melhorar os seus modelos. Existe uma ferramenta desse tipo: o ARM Template Test Toolkit, às vezes chamado de ARM-TTK. Resolve os problemas referidos anteriormente ao executar uma série de testes. Os testes podem ser agrupados nas seguintes categorias:

  • Confirmar a intenção do utilizador. Esta categoria verifica se os parâmetros e as variáveis declaradas são todos utilizados e avisa se não for o caso.
  • Seguir práticas de segurança. Outro aspeto importante é garantir que nada que possa ser confidencial, como segredos da API, é devolvido do modelo.
  • Utilizar construções de linguagem apropriadas. Deve utilizar construções de linguagem ou funções auxiliares para não depender de valores hard-coded.

Nota

O que se segue são recomendações, não requisitos. No entanto, é altamente recomendável que as siga.

Instalar a ferramenta

A ferramenta é um módulo do PowerShell. Para poder executá-lo, você precisa seguir estas etapas:

  1. Instale o PowerShell. Esta tarefa varia consoante tenha Linux, Mac ou Windows.
  2. Faça o download do módulo. O módulo está hospedado em um repositório GitHub. Pode transferi-lo daí ou obtê-lo através de um comando git clone.
  3. Importe o módulo. Esta etapa é apenas uma instrução de uma linha que você insere em uma sessão do PowerShell, que disponibilizará os comandos ARM-TTK.

Você verá como fazer tudo isso na próxima unidade. Depois de instalar a ferramenta, você estará pronto para executar os testes em seu modelo.

Executar os testes

A execução dos testes envolve invocar o módulo com os parâmetros apropriados. -TemplatePath é um parâmetro obrigatório que espera uma cadeia de caracteres que aponta para o local do arquivo de modelo de implantação. O nome do arquivo do modelo deve ser azuredeploy.json ou maintemplate.json. Assim, uma execução de testes normal pode assemelhar-se ao seguinte comando:

Test-AzTemplate -TemplatePath path/to/template

A ferramenta testa o arquivo de modelo e também testa quaisquer arquivos de modelo no mesmo diretório e suas subpastas.

Um resultado normal de uma execução de testes pode assemelhar-se ao seguinte:

[+] 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)

Os testes bem-sucedidos são codificados em verde e são prefixados pelo [+]. Os testes com falha são codificados em vermelho com o prefixo [-].

Configurar a execução de testes com os parâmetros de teste

Você viu até agora como incluir o parâmetro -TemplatePath é obrigatório quando você está executando a ferramenta. A ferramenta também aceita parâmetros opcionais. Estes parâmetros permitem executar ficheiros ou testes específicos. A utilização destes parâmetros dá-lhe um controlo mais granular ao criar e depurar os seus modelos.

O parâmetro -File é usado para executar um arquivo específico. O parâmetro -Test permite especificar um cenário de teste a ser executado.

Você pode usar os parâmetros das seguintes maneiras:

  • Para executar testes num único ficheiro. Pode querer executar testes apenas num dos ficheiros em que está a trabalhar. Tal deve-se ao facto de ser mais fácil concentrar-se em criar um ficheiro de modelo específico. Um outro benefício é o facto de o resultado conter menos ruído e mostrar apenas aquilo em que está interessado. Usando o parâmetro com um caminho para um arquivo (incluindo o -File nome do arquivo), você pode executar os testes apenas nesse arquivo.

    Importante

    O parâmetro ainda espera que azuredeploy.json ou maintemplate.json exista no local especificado.

  • Para executar um único tipo de teste em todos os ficheiros. Por vezes, quer executar um único tipo de teste para garantir que cumpre os critérios apenas desse cenário. Você pode realizar essa tarefa usando o parâmetro -Test. O parâmetro espera o nome completo do teste entre aspas; por exemplo, os recursos devem ter localização.