Этот блог возник в результате взаимодействия с развитием клиентов. Хотите прочитать связанные блоги? Защита Azure как код
Тестирование политики выполняется с несколькими шагами, каждый из которых является сценарием Terraform:
- Проверьте положительный случай, когда плохой результат, от которого защищает политика, не оспаривается
- Проверьте отрицательный случай, где предпринимается плохой результат (и, надеюсь, проверяется или отрицается)
- Оба создают и обновлять варианты использования
Если каждый тестовый пример требует создания нескольких ресурсов Azure, время для проведения этих тестов один после другого растет быстро, особенно в случае тестирования. Наличие> 100 политик для тестирования не является необычным. Кроме того, политики обычно определяются на уровне группы управления. Этот шаг может быть сделан независимо от тестов, чтобы установить контекст. Запуск тестов, вероятно, начинается с назначения политик в тестовую среду — группу управления более низким уровнем или подписку. Затем отдельные тесты проходят в этой испытательной среде, прежде чем она будет сброшена с помощью «Terraform Drouss».
Определить политику и политическую инициативу в группе управления
module "diagnostic_policies" { source = "github.com/Nepomuceno/terraform-azurerm-monitoring-policies.git?ref=main" name = "DiagnosticsInitiative" management_group_name = var.definition_management_group }
Скрипт Terraform в корневой папке GitHub Repo Полностью реализует этот шаг. Это сделано однажды, прежде чем провести какие -либо тесты.
Запустить тесты
В папке тестов GitHub Repo Есть два подхода к этому. Один реализован последовательно, другой параллельно. Оба запускают Terraform в папке Tests, чтобы выполнить назначение политики в тестовую среду. Это также создает пару ресурсов для использования во время тестов, которые будут следовать.
Сериал
func TestSerial(t *testing.T) { // setup the environment by assigning policy to the subscription options := &terraform.Options{ TerraformDir: ".", } terraform.InitAndApply(t, options) defer terraform.Destroy(t, options) // run the first test t.Run("terraform_init_should_succeed", func(t *testing.T) { terraformTestOptions := &terraform.Options{ TerraformDir: "./test-01", ... // and so on
Параллель
func TestParallel(t *testing.T) { // setup the environment by assigning policy to the subscription options := &terraform.Options{ TerraformDir: ".", } terraform.InitAndApply(t, options) defer terraform.Destroy(t, options) t.Run("group", func(t *testing.T) { // <-- group the tests t.Run("terraform_init_should_succeed", func(t *testing.T) { t.Parallel() // <-- invoke Parallel() terraformTestOptions := &terraform.Options{ TerraformDir: "./test-01", ... // and so on
Оригинал: «https://dev.to/cse/test-your-azure-policies-in-parallel-5g2k»