Sich wiederholende Aufgaben sind mühselig und fehleranfällig, wenn sie von Hand ausgeführt werden. Im August befasst sich IT-Administrator deshalb mit dem ... (mehr)

Konfiguration von Linux-Servern

Als Administrator unterschiedlicher Linux-Server kennen Sie das Problem der initialen Konfiguration neu aufgesetzter Systeme. Auf einem Linux-System finden Sie die meisten Konfigurationen unter "/etc", was häufig als Kürzel für "editable text configuration" verstanden wird. Die hauptsächlich enthaltenen Textdateien zur Konfiguration lassen sich gut in einem Git-Repository verwalten. Das erlaubt auch den Zugriff auf die Versionshistorie einzelner Konfigurationen und den Notfall-Revert im Falle eines Tippfehlers.

Ein Git-Repository mit Continuous Integration erlaubt nicht nur die dezentrale Änderung von Konfigurationsdateien mit der Möglichkeit, Autoren zuzuordnen, sondern auch Tests zu etablieren, um fehlerhafte Konfigurationen zu vermeiden. Streng genommen betreten Sie damit den Bereich des Continuous Delivery oder besser Continuous Deployment. Bei jedem erfolgreichen Build werden die Konfigurationsdateien auf alle Systeme verteilt.

Im vorigen Beispiel haben Sie den grundlegenden Aufbau einer CI-Konfiguration in der Datei "gitlab-ci.yml" kennengelernt. In diesem Beispiel soll nun die Konfiguration eines Apache-Webservers verteilt werden. Dafür gibt es ein Repository, das die Konfigurationsdateien unterschiedlicher Apache-Webserver Ihres Unternehmens vorhält. Aufgrund verschiedener Anforderungen betreiben wir in diesem Beispiel unterschiedliche Versionen des Webservers. Eine Änderung der Konfigurationsoptionen für die Zugriffskontrolle von Apache 2.2 zu 2.4 führt gelegentlich zu Syntaxfehlern. Daher möchten wir die Konfiguration automatisiert vor jedem Deployment testen lassen.

Listing 1: Auszug aus gitlab-ci.yml



image: httpd:2.2
    script:
       - cp -r ./confdir/* /etc/apache2/
       - apache2ctl configtest

Für die Tests der Konfiguration auf unterschiedlichen Systemen bieten sich entsprechende Docker-Container an [5]. Für jedes Konfigurationsverzeichnis erstellen Sie einen eigenen Job in der CI-Konfiguration. Das »image« -Keyword gibt den entsprechenden Docker-Container mit der passenden Apache-Version an und führt dann die unter »script« definierten Befehle zum Kopieren der Konfigurationsdateien nach "/etc/apache2/" aus und stößt mit »apache2ctl configtest« die gewollte Überprüfung an. Erst dann, wenn diese Überprüfungen in der Test-Stufe erfolgreich sind, werden die Jobs der Deploy-Stufe ausgeführt.

Um den Überblick in unserem Beispiel zu behalten, führen wir auf jedem der Systeme einen eigenen Gitlab-Runner mit Shell-Executor aus. Später lässt sich diese Funktionalität einfacher mit dem SSH-Executor durchführen, dann müssen Sie nicht für jeden Server einen eigenen Runner verwalten. In der einfachen Konfiguration wird jeder der Shell-Executoren mit einem individuellen Tag über das tags-Keyword der Deploy-Jobs ausgewählt. Sind die Tests in den Docker-Containern erfolgreich, wird die Konfiguration an die richtige Stelle kopiert und der Apache2-Dienst neu gestartet.

Bild 4: Erfolgreich ausgeführte Tests unterschiedlicher Stufen.

Fazit

In diesem Artikel haben Sie grundlegende Automatisierungsmöglichkeiten im Bereich Continuous Integration und Continuous Deployment mit Gitlab kennengelernt. Die Beispiele decken jedoch nur die grundlegende Funktionalität ab. Sowohl für die professionelle Software-Entwicklung als auch für die nachhaltige Nutzung von Continuous Deployment verschiedener Linux-Konfigurationsdateien sind weitere Schritte zur Konfiguration der Umgebung notwendig. Einmal eingerichtet ersparen die hinterlegten Skripte aber regelmäßige Arbeiten bei der Wartung vieler Linux-Server – und sie geben Sicherheit, weil vor jeder Änderung automatisiert getestet wird.

(of)

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Gitlab 10.5 integriert Let's Encrypt

Die neueste Version der Git-Teamsoftware erlaubt nun einfachere TLS-Verschlüsselung. 

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023