Лучшая практика для тестирования рецептов шеф-повара?
Моя команда создала большое количество поваренных кулинарных книг. Мне было интересно, какие методы и структуры я должен изучить, чтобы мы могли начать создавать тесты, чтобы убедиться, что наши узлы настроены правильно?
5 ответов
Там есть cucumber-chef
ruby gem и недавно вышедшая книга Nelson-Smith et al. - "Управляемая тестами инфраструктура с шеф-поваром", в которой используется этот драгоценный камень - http://www.cucumber-chef.org/
Просто вспомнил об этом из моего списка наблюдения на github: https://github.com/gregretkowski/vmth/
VMTH (Virtual Machine Test Harness) предоставляет механизм для модульного тестирования автоматизации вашей инфраструктуры - политик марионеток, рецептов шеф-поваров, выпуска сценариев развертывания и т. Д. Он использует функции современных мониторов виртуальных машин (например, qemu) для создания снимка состояния системы, а затем сбрасывает его. это состояние после каждого теста, так что серия тестов может быть выполнена на экземпляре виртуальной машины в быстрой последовательности
Некоторые ответы здесь кажутся немного старыми. Для CI и локального тестирования я хотел бы использовать инструмент для тестирования, например Test Kitchen, который также поддерживает Vagrant, если вы уже использовали его.
Это позволит вам использовать свои coobkooks против многих облачных решений и решений для виртуализации, существующих сегодня: EC2, Digital Ocean, Vagrant, Docker и т. Д.
Он также имеет плагины, позволяющие вам запустить один из многих инструментов тестирования инфраструктуры, существующих сегодня:
- serverpec - самая популярная среда тестирования.
- goss - YAML, простой, автономный двоичный файл, чрезвычайно быстрый.
- inspec - думайте об этом как об улучшенной serverpec (написано ребятами шеф-повара)
- testinfra - основанная на Python среда тестирования серверов.
Есть несколько вариантов.
- огурец-шеф-повар rubygem от Стивена Нельсона-Смита, с соответствующей / сопровождающей книгой.
- Мини поваренная книга А.Я. Кристенсена.
- vagrant для предоставления тестовых виртуальных машин благодаря Митчеллу Хасимото
Opscode поддерживает план разработки Chef "no-op", который поможет с тестированием. Мы утверждаем, что "no-op" не обязательно делает то, что вы хотите, но понимаете желание этой функции.
По моему опыту, единственный способ действительно сделать это с помощью промежуточной среды и тщательной практики разработки. Макетирование фактической работы, которую нужно выполнить, невероятно запутано и хрупко, и наборы тестов CI, работающие на коммите или push, требуют много усилий для написания и поддержки (хотя Chef, вероятно, намного лучше в этом, чем Puppet, который является моим основным опытом), и занять смешное количество времени, чтобы бежать.
РЕДАКТИРОВАТЬ
Сразу после того, как я написал это, я внезапно понял, что может быть способ сделать достаточно эффективное "модульное" тестирование рецептов Chef/Puppet с объединенной файловой системой и значительным количеством строительных лесов. Тем не менее, я не могу найти там ничего, что кто-нибудь уже делал в этой области. Возможно, я только что нашел себе проект.