Chef und ChefSpec


Bicycle

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

 1require 'chefspec'
 2require 'chefspec/berkshelf'
 3
 4describe 'git::default' do
 5  let(:chef_run) { ChefSpec::SoloRunner.converge(described_recipe) }
 6
 7  it 'install git package' do
 8    expect(chef_run).to install_package('git')
 9  end
10end
  • 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 Unsere Trainings entdecken

Wir sind für Sie da

Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.

Hier kontaktieren