CIS CIS CIS CIS-тестирование модуля Terraform с поваром Inspec, Kitchen-Terraform & GitHub (3 серии деталей)
В последнем Пост Мы рассмотрели «местное» развитие. В духе Непрерывная интеграция Мы хотим иметь возможность, чтобы члены команды интегрировали свою работу. Если вы помните, нарушения, которые у нас были от управления Inspec-gcp-cis-benchmark Профиль, у нас есть какая -то работа! Мы сделаем это с помощью Kitchen-terraform и запустить рабочий процесс в Действия GitHub Анкет В этом посте мы рассмотрим кухню-терраформу.
Настройка проекта
Структура каталогов важна при использовании кухни-терраформы. Моя текущая структура выглядит так:
Светильники
Вам нужно будет иметь светильники
каталог.
Этот каталог-это то, где ваши модули корня Terraform будут жить или на языке кухни-терраформ »,-тестовые приспособления. «Он будет называть дочерним модулем, модуль, который мы разрабатываем. Этот язык совпадает с Модульная документация Итак, в нашем случае дочерний модуль находится в корне Репозиторий , и это модуль, который мы публикуем через GitHub для повторного использования. В этом примере у нас есть только один корневой модуль или тестовое приспособление, с которым мы тестируем. Там может и, скорее всего, будет больше, если мы не сможем покрыть несколько тестовых сценариев в одном приспособлении. У меня также есть общий каталог для общего кода в многочисленных тестовых приспособлениях, если это необходимо.
Интеграция
интеграция
каталог будет держать ваш профиль с Chef Inspec DSSL Controls Вы хотите бежать против тестового прибора.
Для этого поста мы сосредоточимся только на cis_benchmark.rb
и Inspec.yml
файлы Поскольку Google сделал для нас все тяжелую работу, написав элементы управления для конкретных критериев, на которые мы тестируем, 3.1 Сеть и 4.4 Вм , мы можем добавить их очень быстро. Во -первых, вы добавляете хранилище, от которого вы зависите:
ПРИМЕЧАНИЕ: Вход gcp_project_id Это то, что ожидает профиль Inspec-GCP-CIS-Benchmark, чтобы узнать, с каким проектом для проведения тестов. Кухня-терраформ может делать атрибуты и картирование вывода терраформ. Я коснусь того, почему это важно, когда мы посмотрим на Kitchen.yml файл.
Затем, чтобы вызвать конкретный элемент управления, мы добавляем его в cis_benchmark.rb
вот так:
Kitchen.yml
Последнее, что нам нужно сделать, это рассказать о кухне-терраформе, что делать! Мы делаем это, создав Kitchen.yml
файл:
Вы можете прочитать документацию о Kitchen.yml Если вы хотите узнать больше. Тем не менее, я хочу затронуть пару вещей.
Три и четыре строки — это способ пройти -var = "foo = bar"
к терраформу из внутренней кухни-терраформы. В этом примере я использую идентификатор счетов в качестве Секрет в GitHub Анкет Мы можем поговорить об этом немного больше, когда настраиваем рабочий процесс в действиях GitHub.
Другое дело-строки двадцать четыре и двадцать пять. Это связано с атрибутом и картированием вывода Terraform, о котором я говорил ранее. Я взял меня немного Обучение вслух Чтобы убрать это квадрат, но с некоторой помощью я смог получить это. Короче говоря, вот как я наметил свой терраформный выход Project_id
к атрибуту, необходимому для запуска профиля Inspec-GCP-CIS-Benchmark.
Бег кухня-терраформный
Теперь мы можем запустить кухню сходиться и посмотреть, что у нас есть:
Это сделает для вас всевозможные работы. Это проверит версию клиента Terraform, Инициализировать Рабочий каталог Terraform, а также создает и переключается на Рабочая пространство :
Это также будет подтвердить Файлы конфигурации Terraform и, наконец, запустите Terraform применить :
Далее мы можем запустить тесты, используя кухню Проверьте и увидеть результаты:
Наконец, мы можем уничтожить инфраструктуру, используя кухню разрушать . Вы также можете сделать все вышеперечисленное в одной команде, используя кухню тест Анкет
В следующем посте я расскажу о запуске рабочего процесса тестирования через Действия GitHub !
CIS CIS CIS CIS-тестирование модуля Terraform с поваром Inspec, Kitchen-Terraform & GitHub (3 серии деталей)
Оригинал: «https://dev.to/brettcurtis/gcp-cis-benchmark-terraform-module-testing-with-chef-inspec-kitchen-terraform-github-actions-1227»