Vagrant+SaltStack

Saltstack und Vagrant – ein perfektes Duo!

Jeder der sich schon einmal mit dem Thema Konfigurationsmanagement Servern auseinander gesetzt hat, wird die Begriffe Chef oder Puppet gehört haben. Diese Tools helfen deskriptiv die Installationsroutinen zu beschreiben und fortan auf jeglicher Umgebung auszuführen sind. Logisch nur, dass dies ein fundamentaler Schritt im Cloud-Zeitalter ist. Hilf das Konfigurationsmanagement doch virtuelle Server automatisiert aufzusetzen. Damit steht der automatisierten Skalierung nichts mehr im Wege.

Saltstack

SaltStack

Seit einiger Zeit tummeln sich einige neue Player, rund um das Konfigurationsmanagement oder auch die Orchestrierung, am Markt. Ein neuer Stern an diesem Himmel heisst SaltStack. Als einst beliebtestes GitHub Repository eroberte es schnell die Herzen der Administratoren und DevOps. Dabei setzt Saltstack anders als Chef und Puppet auf eine noch ausdrucksstärkere Sprache. Mit Hilfe von sogenannten SLS Dateien (Salt State) die im YAML-Format sind, werden so die Installationsroutinen beschrieben. Dies ist nicht nur sehr leserlich, es fühlt sich zu dem auch sehr leichtgewichtig an. Ebenfalls arbeitet SaltStack nach dem Client-Server-Modell. Es ist darauf ausgelegt für kleinere Netzwerk-Umgebungen genauso gut zu funktionieren, wie für unendlich große Server-Infrastrukturen. Dabei werden vom Master die Minions über so genannte Grains angesprochen. Dies sind beliebige Filter um die Menge der Clients einzugrenzen.

Installationsanleitungen und weitere Informationen findet ihr hier: http://saltstack.com/

Vagrant

Vagrant

Vagrant ist eine in Ruby verfasste Anwendung, um virtuelle Maschinen zu verwalten. Besonders im lokalen Betrieb von virtuellen Maschinen bietet sich Vagrant an. Es hilft dabei einfach und schnell virtuelle Maschinen, mit verschiedensten Images, zu laden, zu starten, zu stoppen und auch wieder zu löschen. Noch besser, man kann deskriptiv beschreiben, welches Image genutzt werden soll, wie Verbindungen (Beispielweise Freigaben) zum eigenen Host-System aussehen sollen oder welche Ports über welche Netzwerkschnittstelle durchgeleitet werden sollen. Im Zusammenhang mit einer Versionsverwaltung für Quellcode ergibt das erstaunliche Möglichkeiten und vor allem eine gleiche Umgebung für alle Entwickler.

Installationsanleitungen und weitere Informationen findet ihr hier: https://www.vagrantup.com/ Denkt auch daran, dass ihr idealerweise Virtualbox installiert habt (https://www.virtualbox.org/).

SaltStack & Vagrant

Warum erläutere ich das eigentlich alles? Ganz einfach, wenn man Server automatisiert Konfigurieren möchte, muss man zunächst in einer Umgebung, die möglichst wieder herstellbar ist, diese Konfiguration testen.
Nun kann man natürlich den eigenen alten Computer nehmen, ein Linux darauf installieren und die ersten programmierten Zeilen in einer Konfigurationsmanagement-Technologie ausrollen und schauen was passiert. Funktioniert nicht alles auf Anhieb, wie man es erwartet hatte, wird man spätestens nach der 3 Installation von Linux, auf dem alten Computer, zum Strick greifen.
Es ist also nachvollziehbar, dass man ausschau hält,nach einer Technologie mit der man schnell und einfach eine frische Installation von Linux erhält. Genau das bietet Vagrant. Dazu braucht es nicht einmal einen alten Computer. Auf dem eigenen laufenden Computer kann eine virtuelle Maschine gestartet werden.

Damit jedoch, noch einfacher und automatisch, die geschrieben SaltStack-Zeilen ausgerollt werden, bedarf es noch einiger Konfigurationen. Die folgenden Zeilen versuchen demnach zu erläutern, wie man Vagrant zusammen mit SaltStack einsetzen kann, um die eine Serverkonfiguration zu schreiben und zu testen.

Den Quellcode, in Form eines Beispielprojektes, findet ihr wie immer auf GitHub: SaltStack Vagrant Beispiel

Vagranfile

Am besten man startet mit einem neu angelegten Verzeichnis. Als Beispiel nennen wir es „SaltStack-Vagrant“. Darin legen wir eine Datei mit dem Namen Vagrantfile an. Der Inhalt könnte wie folgt aussehen:

#
# Vagrant file for use with SaltStack
#
Vagrant.configure(„2“) do |config|
## Choose your base box
config.vm.box = „ubuntu/trusty64“
config.vm.synced_folder „saltstack/“, „/srv“
## Use all the defaults:
config.vm.provision :salt do |salt|
# call state.highstate in local mode
salt.masterless = true
# most important in this file is the option file_client: local
salt.minion_config = „etc/unicorn“
# execute highstate on start
salt.run_highstate = false
# install stable SaltStack
salt.install_type = „stable“
# default option when running boostrap script
salt.bootstrap_options = „-P -c /tmp“
end
# enable port forward for host system
config.vm.network „forwarded_port“, guest: 5432, host: 5444
end

Durch diese Maßnahme teilen wir Vagrant mit, wie wir uns unser Image vorstellen, welche Schnittstellen es nach außen haben soll und das wir es gerne mit SaltStack initialisiert haben wollen.
Habt ihr Virtualbox und Vagrant auf eurem System installiert, könnt ihr dieses Setup testen indem ihr in das Verzeichnis „SaltStack-Vagrant“ wechselt und folgenden Befehl eingebt:

 $ vagrant up

Im folgenden wird Vagrant zunächst das Image beziehen, falls noch nicht geschehen und starten. Daraufhin werden die Ports und weiteres initialisiert und SaltStack ausgeführt.

Beispiel am GitHub-Repository

Am einfachsten und komplett ist das Beispiel bei GitHub (https://github.com/unicorn-it/saltstack-vagrant-example). Klont dieses mit folgendem Befehl (Git sollte installiert sein).

 $ git clone https://github.com/unicorn-it/saltstack-vagrant-example

Ihr solltet nun ein neues Verzeichnis mit dem Namen saltstack-vagrant-example haben. Wechselt auf der Kommandozeile in dieses Verzeichnis und gebt folgendes ein:

 $ vagrant up

Wie im vorherigen Beispiel wird zunächst das Image bezogen und gestartet. Daraufhin wird das Image gestartet und die SaltStack-Konfiguration ausgerollt. In diesem Fall wird die Datei top.sls aus dem Verzeichnis saltstack/salt gelesen und angewandt. In diesem Beispiel wird eine MySQL Datenbank installiert und eingerichtet.

Zusammenfassung

Um das Konfigurationsmanagement von SaltStack ausgebiebig testen und anwenden zu können, bietet es sich an, schnell und einfach neue Linux Images installieren zu können. Dafür eignet sich Vagrant. Das Zusammenspiel von Vagrant und SaltStack ist denkbar einfach und wurde exemplarisch aufgezeigt.

Wir wünschen euch viel Spaß beim testen und bauen eurer ersten SalstStack Orchestrierung.

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar