x

Menü

Chef und ChefSpec

veröffentlicht in: Infrastructure as Code Datum: 08.12.2017
Miriam Grainer, Junior IT-Consultant

Über die Autorin

Miriam Grainer ist eine Junior IT-Beraterin für Infralovers und Commandemy. Miriam liebt es neue Technologien und Programmiersprachen zu lernen und damit zu experimentieren. Derzeit studiert sie Informationsmanagement an der FH Joanneum Graz. Twitter LinkedIn

Alle Artikel von diesem Autor sehen

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.