Aplicar as melhores práticas usando o módulo do kit de ferramentas de teste

Concluído

Quando desenvolvemos modelos do ARM (Azure Resource Manager), há maneiras de facilitar a criação de modelos válidos e fornecer recomendações para aprimorar a qualidade deles. Quais são essas recomendações e por que elas podem ser úteis de serem seguidas pelo modelo?

Há recomendações sobre diferentes níveis que abrangem tudo, de parâmetros e variáveis a recomendações aplicáveis aos recursos. Vamos examinar essas recomendações de um alto nível e ver as vantagens de segui-las:

  • Facilidade de manutenção. À medida que você desenvolve seu modelo, da criação na primeira vez à atualização dele, mantê-lo limpo e ordenado passa a ser um desafio ao longo do tempo. Conforme seu modelo cresce, o mesmo acontece com parâmetros e variáveis. É importante que você entenda para que cada um deles é usado e como usá-los apropriadamente.

    Imagine um cenário em que um parâmetro foi nomeado de maneira inadequada e você está com dificuldades de entender o que ele faz. Ou você está usando um valor embutido em código em um local que não deveria e, quando algo muda, seus serviços do Azure ficam inativos. Todos esses problemas contribuem com o fardo de precisar entender e, depois, ignorar o que você está vendo. Ter disciplina em como os itens são nomeados e limpos pode ajudar a atenuar os efeitos desses cenários.

  • Exatidão. Você pode tentar nomear tudo da maneira certa, mas pode haver muitas regras para acompanhar. Essas situações chamam uma ferramenta que lembra todas essas regras e regulamentos e as impõe.

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

  • Extensibilidade. Às vezes, o ideal é adicionar as próprias recomendações. Sua empresa ou equipe pode ter as próprias regras para impor.

Observação

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

O Kit de Ferramentas de Teste do Modelo do ARM

O uso de uma ferramenta de teste é uma boa ideia para que você possa se concentrar na criação, sabendo que uma ferramenta vai encontrar os problemas e aprimorar seus modelos. O Kit de Ferramentas de Teste de Modelo do ARM é, às vezes, chamado de ARM-TTK. Ela resolve os problemas mencionados anteriormente executando uma série de testes. Os testes podem ser agrupados nas seguintes categorias:

  • Validação da intenção do usuário. Essa categoria verifica se as variáveis e os parâmetros declarados são todos usados e avisa o usuário caso contrário.
  • Seguir práticas de segurança. Outro aspecto importante é garantir que nada seja retornado do modelo que possa ser confidencial, como segredos de API.
  • Uso de constructos de linguagem apropriados. Você deve usar constructos de linguagem ou funções auxiliares para não depender de valores embutidos em código.

Observação

Elas são recomendações, não requisitos. Mas é altamente recomendável que você as siga.

Como instalar a ferramenta

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

  1. Instalar o PowerShell. Essa tarefa é feita de maneira diferente de acordo com o sistema operacional em uso: Linux, Mac ou Windows.
  2. Baixar o módulo. O módulo é hospedado em um repositório GitHub. Você pode baixá-lo de lá ou buscá-lo por meio de um comando git clone.
  3. Importar o módulo. Esta etapa é apenas uma instrução de uma linha que você insere em uma sessão do PowerShell, o que disponibiliza os comandos do 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.

Execução dos testes

A execução dos testes envolve a invocação do módulo com os parâmetros apropriados. -TemplatePath é um parâmetro obrigatório que espera uma cadeia de caracteres que aponta para a localização do arquivo de modelo de implantação. O nome do arquivo de modelo precisa ser azuredeploy.json ou maintemplate.json. Uma execução de teste típica pode, portanto, ser semelhante ao seguinte comando:

Test-AzTemplate -TemplatePath path/to/template

A ferramenta testa o arquivo de modelo e testa os arquivos de modelo no mesmo diretório e nas subpastas dele.

Uma saída típica de uma execução de teste pode ser parecida com esta:

[+] 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 prefixados por um [+]. Os testes com falha são codificados em vermelho com o prefixo [-].

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

Até agora, você viu como incluir o parâmetro -TemplatePath é obrigatório ao executar a ferramenta. A ferramenta também aceita parâmetros opcionais. Esses parâmetros permitem que você execute arquivos ou testes específicos. O uso desses parâmetros proporciona um controle mais granular na criação e depuração de seus modelos.

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

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

  • Executar testes em um só arquivo. Talvez você queira executar testes em apenas um arquivo no qual está trabalhando atualmente. O motivo é que é mais fácil se concentrar na criação de um arquivo de modelo específico. Outro benefício é que a saída conterá menos ruído e mostrará apenas aquilo em que você tem interesse. Usando o parâmetro -File com um caminho para um arquivo (incluindo o nome do arquivo), você pode executar os testes apenas nesse arquivo.

    Importante

    O parâmetro ainda espera que azuredeploy.json ou maintemplate.json exista na localização especificada.

  • Executar um só tipo de teste em todos os arquivos. Às vezes, o ideal é executar um único tipo de teste para garantir que você esteja atendendo aos critérios somente para esse 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.