Chef und ChefSpec


Was ist ChefSpec?

ChefSpec ist ein Unit-Testing Framework zum Testen von Cookbooks. ChefSpec macht es Ihnen einfach, Beispiele zu schreiben und schnelles Feedback zu Cookbook Änderungen zu erhalten, ohne dass dafür virtuelle Maschinen oder Cloud-Server benötigt werden.

ChefSpec stellt eine Methode bereit, mit der wir eine speicherinterne Ausführung erstellen mit dem Anwenden der Run-Liste, die Ressourcenauflistung erstellen und dann Erwartungen über den Status der Ressourcenauflistung festlegen können. ChefSpec, ähnlich wie InSpec, baut auf RSpec auf. Der Vorteil für uns ist, dass viele der gleichen Sprachkonstrukte verwendet werden.

Bei der Erstellung von Recipes erhalten wir auch eine passende Spezifikationsdatei im Verzeichnis 'spec / unit'. Die von ChefSpec definierten Spezifikationen sind alle in diesem Verzeichnis enthalten.

Beispiel

require 'chefspec'
require 'chefspec/berkshelf'

describe 'git::default' do
  let(:chef_run) { ChefSpec::SoloRunner.converge(described_recipe) }

  it 'install git package' do
    expect(chef_run).to install_package('git')
  end
end
  • Zuerst inkludieren wir das ChefSpec Gem, damit wir es im Test verwenden können
  • Der Rest ist einem RSpec-Test sehr ähnlich
  • Wir definieren, welcher ChefSpec-Runner für den Test verwendet wird
  • Schließlich wollen wir überprüfen, ob das Git-Paket installiert wurde

Die README von ChefSpec bietet eine Menge von Beispielen. In der Vergangenheit war ein 'include_recipe' Beispiel eines von vielen in der README. Das ChefSpec-Projekt enthält einen übergeordneten Ordner mit dem Namen "examples", der Beispiele für fast alle Funktionen enthält, mit denen ChefSpec Erwartungen definieren kann. Dieser enthält einen Ordner mit dem Titel "include_recipe", in dem Recipes und die entsprechenden Spezifikationen angezeigt werden sollen.

Wollen Sie mehr über Chef und ChefSpec erfahren? Dann sehen Sie sich unsere Chef Trainings an.

Zurück

We are here for you

You are interested in our courses or you simply have a question that needs answering? You can contact us at anytime! We will do our best to answer all your questions.

Contact us