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. С учетом сказанного, давайте начнем!
Предварительные условия
- Комплект для разработки шеф -повара (Chefdk)
- Служба директора
- ~/.azure/учетные данные, настроенные с вашей конфигурацией основного обслуживания
Пересмотр строки 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)
Дополнительные ресурсы
- Узнайте об инфраструктуре как коде
- Тестовая разработка с Inspec
- Используйте Inspec для тестирования вашей лазурной инфраструктуры
Мы будем публиковать статьи каждый день в апреле, так что следите Теперь .
Azure April (4 серия Part)
Оригинал: «https://dev.to/azure/testing-infrastructure-with-test-kitchen-and-chef-3o0i»