Рубрики
Uncategorized

Тестирование инфраструктуры с тестовой кухней и шеф -поваром

Узнайте, как проверить инфраструктуру с помощью Test Kitchen, Chef и Inspec на Azure. Помечено Azureapril, DevOps, Azure, Tuperial.

Azure April (4 серия Part)

Мы выбрали наши любимые советы и рекомендации, созданные Майкл Крамп также как и Запланированный свежий технический контент на Azure весь апрель! Пропустить день (или больше)? Догнать серию .

Нет лазурной? Возьмите бесплатную подписку Анкет

После того, как у меня есть тестовая конфигурация кухни, которая работает, я могу скопировать эту конфигурацию из проекта на изменение проекта, что необходимо. Как написать тесты для инфраструктуры, которую я строю?

В этом посте я собираюсь пройти через как протестировать образец проекта node.js, используя Inspec , Тестовая кухня и Кухонный водитель азормерного суда Анкет Все в этом посте зависит от работы от Тестирование инфраструктуры с тестовой кухней и шеф -поваром на Azure Так что, если вы пытаетесь повторить эти шаги, обязательно ознакомьтесь с этим постом в первую очередь. Кроме того, Test Kitchen может быть настроена на работу с различными предварительными и драйверами, поэтому, если вы используете Puppet или Ansible; Например, вы можете полностью использовать их вместо этого.

Как упоминалось в Вчерашний пост , У меня есть Комплект разработки шеф -повара (Chefdk) Установлен в моей системе, которая включает в себя Inspec Анкет К концу 2018 года шеф -повар выпущен Шеф -повара Рабочая станция в качестве замены для комплекта разработки шеф -повара. Если у вас нет Chefdk, шеф -повара — хорошая отправная точка с тем же программным обеспечением.

Прежде чем я тоже попаду в детали, цель статьи — показать Inspec, а не идеальный способ написать код шеф -повара, особенно для этого приложения. Например, есть Nodejs Community Cookbook У этого есть намного больше наворотов, которые могут обеспечить необходимую функциональность для развертывания Node.js/NPM и управления пакетами NPM. С учетом сказанного, давайте начнем!

Предварительные условия

Пересмотр строки 14 из файла .kitchen.yml, мы можем увидеть конфигурацию Verifier Анкет

Проверник — это то, что мы используем для проверки конфигурации инфраструктуры, которую мы определили. В этой конфигурации он настроен на проверку, но мы также можем использовать Serverspec или Летучие мыши Анкет

Примечание. Можно использовать Inspec без тестовой кухни и проверить инфраструктуру, которую мы построили с Шаблоны управления ресурсами Azure или терраформ. Проверьте все эти великие Inspec Azure Resources Чтобы подтвердить различные части вашей инфраструктуры!

Описание процесса тестирования инфраструктуры

Я собираюсь следовать за циклом Red-Green-Refactor при разработке кода инфраструктуры. Во -первых, я напишу тест, который описывает основную функцию, которую я хочу добавить. Этот тест потерпит неудачу, потому что я не написал никакого кода инфраструктуры. Это «красный» или неудачная фаза. Затем я напишу код инфраструктуры, который сделает тестовый проход. Это «зеленый» или проходная фаза. Тогда я реформирую код, который я только что написал, чтобы сделать его лучше.

Одним из критических различий в кодировании инфраструктуры в сравнении с кодом проекта является модульные тесты, как правило, являются первыми тестами и наибольшим количеством тестов для написания в соответствии с Тестирование пирамиды . В кодировании инфраструктуры модульные тесты часто пишутся неправильно и тестируют приложение инфраструктуры. Например, написание теста, который будет установлен пакет с использованием ресурсов пакета по умолчанию в нужном месте. Этот вид теста принадлежит к тестовому набору для шеф -повара или марионетки, а не в коде инфраструктуры.

В зависимости от типа инфраструктурного блока, который вы пишете, например, с шеф -поваром, является ли это кулинарной книгой, которая является кулинарной книгой библиотеки по сравнению с поваренной книгой обертке, вы можете пройти модульный тест, создается ли определенный файл. Это тонкая разница в тестировании. Проверка, делает ли ваше приложение для инфраструктуры правильным поступком, что вы вводите Бриттли в свой набор тестирования, что делает тестирование более сложным, а также более подверженным ошибкам.

Есть ли причина писать модульные тесты для кода инфраструктуры? Конечно! Особенно, когда мы пишем сложный код, который должен использовать разные пути. Для модульных тестов с шеф -поваром я бы использовал Chefspec . На данный момент я начинаю с интеграционных тестов и использую Inspec.

Реализация теста

Первое, что мне нужно, чтобы получить приложение Express, это убедиться, что у меня установлены Node.js и NPM. Я использую Команда Ресурс для проверки того, что node.js установлен. Командный ресурс позволяет мне запустить конкретную команду на экземпляре и проверить набор свойств.

Вчера, когда я побежал Шеф -повар генерирует кулинарную книгу test_software_cookbook Он создал для меня кучу лесов, которые включают в себя интеграционный тест на test_software_cookbook/test/Integration/default/default_test.rb . Я очистил содержимое и провели первый тест.

Я бегаю Кухня сходящаяся с последующим Кухня проверка , и я получаю свой ожидаемый «красный» вывод, потому что Node.js не установлен.

Реализация прохождения инфраструктуры

Чтобы установить node.js из Ubuntu, предоставленных хранилищами, я могу использовать шеф -повар Ресурс пакета Анкет

Примечание: в корпоративной среде я мог бы кэшировать артефакты на местном уровне Так что у меня был бы другой метод определения этого кода, но этого достаточно для этого примера.

Я бегаю Кухня сходится . На этот раз я вижу, что мой узел обновляется, и node.js устанавливается:

       Recipe: test_software_cookbook::default
         * apt_package[nodejs] action install
           - install version 8.10.0~dfsg-2ubuntu0.4 of package nodejs

Теперь, когда я бегу Кухня проверка Я получаю свой ожидаемый «зеленый» выход, потому что установлен Node.js.

Это Старая версия node.js , но это то, что доступно в пакетах Ubuntu 18.10 по умолчанию.

Чтобы рефактор, я использую шеф -повар apt_repository resource Чтобы обновить, где я загружаю обновление Бинарные распределения от Nodesource Анкет

Во время сходящегося я вижу последнюю node.js, установленную из Nodesource

Я мог бы начать с Inspec Пакет ресурс, который позволил бы мне проверить конкретный пакет и версию Node.js. Это чрезвычайно полезно, например, если вы хотите убедиться, что минимальная версия установлена (или определенная версия не установлена, например, из -за проблемы безопасности!).

Добавление требуемого пакета NPM

Поскольку я продолжаю писать свой код инфраструктуры, я продолжаю следить за циклом красного/зеленого/рефактор, внедряя небольшие тесты, затем добавляя функцию, а затем рефакторинг. Есть Inspec npm resources Доступно только стандартные ресурсы пакета.

Заинтересованы в большем количестве шеф -повара + тестовая кухня + Inspec + Azure Content? Дайте мне знать в комментариях ниже, и я добавлю больше. Есть гораздо больше областей, которые я мог бы покрыть, но я хотел бы сосредоточиться на том, что полезно.

Очистка моих ресурсов лазурных

Всегда не забывайте очищать облачные ресурсы, которые вы используете для разработки и тестирования. Я очищаю свои экземпляры с Кухня уничтожить И это удаляет все ресурсы, которые я создал.

$ kitchen destroy
----------> Starting Kitchen (v2.0.1)
----------> Destroying ...
       Azure environment: Azure
       Destroying Resource Group: kitchen-default-ubuntu-1804-20190424T071334
       Destroy operation accepted and will continue in the background.
       Finished destroying  (0m1.61s).
----------> Kitchen is finished. (0m11.28s)

Дополнительные ресурсы

Мы будем публиковать статьи каждый день в апреле, так что следите Теперь .

Azure April (4 серия Part)

Оригинал: «https://dev.to/azure/testing-infrastructure-with-test-kitchen-and-chef-3o0i»