Serverspec und Ansible für bessere Kontrolle über die Infrastruktur

Von Ad Hoc zur Automatisierung: Testen mit Serverspec

Stein Inge Morisbak

© Shutterstock / Zhao jian kang

Zero Downtime Deployment with Ansible – das ist das Thema meines Vortrags auf der DevOpsCon 2016 in Berlin. Es spricht einiges dafür, Ansible für das automatisierte Deployment und Provisioning zu wählen; der Umstieg von Shell Scripts und ad hoc Anpassungen auf Ansible kann aber kompliziert sein.

Was ist, wenn das uptime-Kommando mehrere Jahre ausgibt? Was, wenn sich alles ohne echte Dokumentation oder Audit entwickelt hat und die Umgebung einer Art von Blizzard aus einzigartigen Snowflake-Servern gleicht? Wie geht man mit einer solchen Situation um? Das Verständnis der Umgebung stellt die Grundlage für automatisierte Änderungen dar.

Keine Dokumentation?

Als mein Entwicklerteam vor einigen Jahren den Betrieb unserer Systeme von einem externen Dienstleister übernahm, wussten wir nicht, wie die Server aufgesetzt waren. Der Dienstleister stellte uns zwar eine Dokumentation zur Verfügung, allerdings war diese fehlerhaft. Wir stellten fest, dass zwischen den Servern und der Umgebung große Unterschiede auf dem Patchlevel und hinsichtlich der Konfiguration bestanden. Das Setup sollte automatisiert werden, allerdings ohne etwas dabei kaputt zu machen. Immerhin liefen die Systeme zu diesem Zeitpunkt! Wir mussten also einen Weg finden, um die Production des gegenwärtigen Zeitpunkts nachzubilden, ohne dabei erneut Änderungen von Hand einpflegen zu müssen. Handgeschriebene Shell Scripte und manuelle Checks wären viel zu arbeitsaufwändig und fehleranfällig gewesen.

DevOpsCon Whitepaper 2018

Free: BRAND NEW DevOps Whitepaper 2018

Learn about Containers,Continuous Delivery, DevOps Culture, Cloud Platforms & Security with articles by experts like Michiel Rook, Christoph Engelbert, Scott Sanders and many more.


Serverspec ist ein Framework, das Serverkonfigurationen unter Verwendung von RSpec testet. Wie auch Ansible braucht Serverspec keine Agents auf dem Server und wird von einem lokalen Rechner per SSH ausgeführt. Das ist optimal für Test-Driven-Development von Code zur Automatisierung der Infrastruktur; es kann aber auch genutzt werden, um den gegenwärtigen Status zu überprüfen. Wir haben uns dafür entschieden, Tests für einen der Production-Server zu erstellen und die Tests auf den Servern gegeneinander laufen zu lassen. Nachdem wir hunderte von Tests geschrieben hatten, konnten wir endlich den Sinn hinter dem gegenwärtigen Setup erkennen.

Serverspec hilft!

Am Ende lag uns eine Dokumentation unserer Umgebung in Form von Testcode vor. Wir kannten nun nicht nur den Status aller unserer Server und Umgebungen, sondern hatten auch einen exzellenten Ausgangspunkt für das automatisierte Provisioning geschaffen. Mit Ansible konnten wir nun die Einrichtung identischer Server automatisieren, für die der Serverspec-Code als Dokumentation und automatisierte Test-Suite dient. Wir mussten uns zwar erst an das Arbeiten mit Ansible gewöhnen, danach dauerte die Implementierung aber nicht lange. Glücklicherweise ist Ansible leicht zu erlernen, da es eine Sprache verwendet, die dem normalen Englisch ähnelt und über eine hervorragende Dokumentation verfügt. Nachdem wir, basierend auf den Tests, alles überarbeitet hatten, konnten wir unsere Infrastruktur weiterentwickeln und verbessern, weil das Einspielen von Patches und das Ändern von Konfigurationen in allen Umgebungen sehr schnell gingen. Der Code in Ansible stellt außerdem eine Dokumentation dar, sodass wir Serverspec nicht mehr brauchten – beides zu pflegen ist nur unnötiger Aufwand.

Häufig ist es nicht nötig (und nicht möglich), bei Null anzufangen, um das Provisioning von manuell auf automatisch umzustellen. Um die Kontrolle über eine bereits bestehende Umgebung zu gewinnen, ist Serverspec gut geeignet. Danach kann alles automatisiert werden, sodass Serverspec unnötig wird.

Ich hoffe, wir sehen uns im Juni im Berlin! Wenn nicht, auf Wiedersehen!

Aufmacherbild: Clock gear set via Shutterstock / Urheberrecht: Zhao jian kang

Verwandte Themen:

Geschrieben von
Stein Inge Morisbak
Stein Inge Morisbak
Stein Inge is head of Bekks commitment to Continuous Delivery, DevOps and Cloud. He is a true Agile evangelist with fifteen years of experience in both contributing to, and helping others to become better at producing excellent software. He is also an experienced speaker at conferences and the founder of DevOps Norway Meetup.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: