Валидация результата рецепта CHEF - PullRequest
0 голосов
/ 21 января 2019

Я занимаюсь настройкой среды для своих приложений.Это может включать в себя конвергенцию различных рецептов CHEF, например, установку пакетов, создание папок, монтирование nfs и т. Д.

Я должен выполнить их примерно на 5k + серверах, следовательно, я хотел бы получить некоторую проверку для действияrecipes;

Для этого: Recipe должен проверять результат своих действий и регистрировать состояние, чтобы его можно было затем проанализировать и заполнить на информационной панели состояния

Рассматривать это как общий рецепт для каталогасоздание.

node['my_cookbook']['directory'].each do |directory|
  directory "Applying #{directory['path']} directory configuration" do
    path directory['path']
    group directory['group']
    owner directory['owner']
    mode directory['mode']
    recursive directory['recursive'] || true
    action directory['action'] || :create
  end
end

Учитывая вышесказанное, каким должен быть подход?

Существуют ли какие-либо конкретные ресурсы CHEF, которые мы можем использовать для проверки?

1 Ответ

0 голосов
/ 24 января 2019

есть несколько тестовых фреймворков, которые вы можете использовать:

  • chefspec (единица \ преднамеренное тестирование)

    Используйте ChefSpec для имитации конвергенции ресурсов на узле:

    • Является расширением RSpec, среды разработки, основанной на поведении (BDD) для Ruby
    • Самый быстрый способ проверить ресурсы и рецепты ChefSpec - это фреймворк, который тестирует ресурсы и рецепты в рамках имитации запуска chef-client. Тесты ChefSpec выполняются очень быстро. Когда тесты ChefSpec используются как часть рабочего процесса создания кулинарной книги, они часто являются первым индикатором проблем, которые могут существовать в кулинарной книге.

    ChefSpec запускает ваш код рецепта с отключением всех действий с ресурсами. Это означает, что ChefSpec превосходен при тестировании сложной логики в кулинарной книге, но на самом деле не может сказать вам, правильно ли кулинарная книга делает правильные вещи.

  • test-kitchen (интеграция и тестирование системы)

    Test Kitchen - это инструмент интеграции для разработки и тестирования кода и программного обеспечения инфраструктуры на изолированных целевых платформах.

  • inspec (тестирование системы)

    Превратите ваши требования соответствия, безопасности и других политик в автоматизированные тесты.

можно интегрировать установку inspec как часть запуска chef-client и создать обработчик для вызова inspec в конце запуска chef-client. как часть этого, сериализация объекта узла и десериализация его в inspec для легкого доступа к атрибутам узла;)

...