Orchestration mit Foreman

Foreman Logo

Ich möchte heute mal wieder ein Plugin vorstellen, das Foreman um eine neue Funktionalität erweitert. Diesmal handelt es sich um das Plugin “Remote Execution” and die Funktionalität möchte ich mal “Orchestration” nennen.

Nachdem sich unter dem Begriff Orchestration jeder was anderes vorstellt und es mindestens zwei verschiedene Ansätze in der IT gibt, möchte ich mit einer kleine Definition und Abgrenzung anfangen. In diesem Fall verstehe ich unter Orchestration die zentrale Steuerung von Jobs, sowohl zum direkten als auch zeitgesteuerten Ausführung auf den angebundenen Systemen. Der zweite Aspekt zentrale Steuerung von Jobs auf verschiedenen Systemen mit Abhängigkeiten zu einander wird hier leider nicht bedient. Das Plugin unterstützt einen Administrator somit darin beispielsweise allen Systemen ein Update-Kommando zu schicken, um die Logik das jeweils nur ein Knoten im Cluster gleichzeitig gemacht werden soll muss er sich also weiterhin kümmern.

Aber fangen wir doch einfach von vorne mit der Installation an. Diese erfolgt am einfachsten mit dem Foreman-Installer, welcher die Puppet-Module des Projekts verwendet. Wenn man diesen Installationsweg nimmt und auch gleich den Provider “SSH” dazu nimmt, bekommt man gleich alles fertig eingerichtet. Dies heißt es gibt dann einen SSH-Key auf dem Smart-Proxy, der per Snippet direkt auf neuen Systemen als “Authorized Key” für “root” deployed wird. Um bestehende Systeme muss sich noch gekümmert werden, aber dies übernimmt das Konfigurationsmanagement gerne. Wer hier nicht mit “root” arbeiten will oder darf, kann dem Plugin auch einen anderen Anmeldebenutzer, effektiven Benutzer zur Ausführung und die Methode zum Wechseln zwischen diesen konfigurieren. Wem “SSH” als Provider nicht gefällt, kann sich bereits den Entwicklungsstand des “Ansible“-Providers anschauen, für die Zukunft sind noch weitere Provider wie “Salt” oder “MCollective” geplant.

Im Webinterface von Foreman erhält man nun die Option Jobs auszuführen. Ich empfehle den Weg über die Hostliste, um mehrere Host auszuwählen und dann für alle eine “Run Job”-Action auszulösen. Für den Power-User funktioniert auch der direkte Einstieg über die Job-Maske und mit eine Suchbedingung wie alle Systeme mit einer bestimmten Betriebssystemversion oder alle Produktivsysteme.

Job Invocation

Nachdem ein Job eingeplant wurde, wird dieser im Hintergrund über das Foreman-Task-Plugin ausgeführt und man kann für jeden Job die Ausführung sehen, so dass man weiß auf wie vielen System der Job noch ausgeführt werden muss, schon erfolgreich oder mit Fehlern gelaufen ist.

Job Result

Auch der Output jedes einzelnen Systems kann nachgeschaut werden, so dass man sieht warum ein Job fehlgeschlagen ist oder auch bei erfolgreicher Ausführung natürlich was genau passiert ist.

Job Output

Die ausführbaren Kommandos basieren auf Job-Templates ähnlich den Provisioning-Templates. Neben dem generischen Kommandos sind bereits Templates zum Softwaremanagement, Powermanagement, Steuerung von Diensten und der Interaktion mit Puppet vorbereitet. Zusätzlichen können natürlich eigene Templates erstellt werden, inklusive den Eingabemasken mit Validierung.

Neben der sofortigen Ausführung lassen sich Jobs auch zeitgesteuert einplanen. Hierbei wird angegeben wann frühestens aber auch wann spätestens der Job ausgeführt wird. Außerdem können auch wiederkehrende Jobs im gleichen Stil wie Cronjobs eingeplant werden.

Alles in allem ist für mich das “Remote Execution”-Plugin eine echte Bereicherung für Foreman und der logisch nächste Schritt nach Provisioning und Konfigurationsmanagement, weshalb es auch Teil der Foreman-Schulung geworden ist. Von SSH als Provider bin ich allerdings noch nicht überzeugt und will mir mit dem Wissen aus unserer Ansible-Schulung auch mal diesen Provider im Detail anschauen.

Dirk Götz

Autor: Dirk Götz

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Nagios, Puppet und andere Systems Management Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich.

OSMC 2016 – Der Countdown läuft – Noch 15 Wochen

OSMC Countdown 2016:

Open Source Monitoring Conference 2016 | Die weltweit führende Veranstaltung zum Thema Open Source Monitoring | vom 29.11.2016 bis 02.12.2016 in Nürnberg

Fachleuten, IT Administratoren, sowie Entwicklern bietet die zweisprachige, weltweit führende Konferenz zum Thema Open Source Monitoring in Nürnberg wieder die perfekte Möglichkeit, sich über die neuesten Trends und Entwicklungen zum Thema Open Source Monitoring zu informieren.

Das Themenspektrum bietet sowohl Anfängern, als auch Fortgeschrittenen interessante Vorträge, um ihr Wissen zu erweitern.

Durch vier zum Konferenzticket hinzubuchbare Workshops zu Elastic Stack, Graphite, Icinga und Git können die Teilnehmer ihr Monitoring-Knowhow erweitern. Als weiteres Add-On wird wegen großen Erfolges auch wieder ein Hackathon angeboten.

Alle Infos zur OSMC gibt’s hier.

Wir freuen uns auf euch und einen tollen Start in das zweite Jahrzehnt OSMC.

Julia Hackbarth

Autor: Julia Hackbarth

Julia ist seit 2015 bei NETWAYS. Sie hat im September ihre Ausbildung zur Kauffrau für Büromanagement gestartet. Etwas zu organisieren macht ihr großen Spaß und sie freut sich auf vielseitige Herausforderungen. In ihrer Freizeit spielt Handball eine große Rolle: Julia steht selbst aktiv auf dem Feld, übernimmt aber auch gerne den Part als Schiedsrichterin.

Schleifen mit Puppet 4

War es bisher mit Puppet notwendig über eine Defined Ressource zu iterieren, ist dies nun in Puppet 4 in einer normalen Klasse möglich.
Als Beispiel nehmen wir eine internationale Firma. Diese Firma hat auf Ihrem Webserver Webseiten für Deutschland, England und Frankreich. nun möchte man für bestimmte Virtual Hosts den Webroot in dem die Seite liegt evtl. an einer anderen Stelle haben.

Dazu definieren wir einen Hash über den wir anschließend iterieren werden.

Folgender Hash kommt aus Hiera:

nginx::vhost::vhosts:
  'www.firma.de':
    webroot_ensure: 'present'
    web_root_directory: '/var/www/www.firma.de'
  'www.firma.co.uk':
    webroot_ensure: 'present'
    web_root_directory: '/var/www/www.firma.co.uk'
  'www.firma.fr':
    webroot_ensure: 'present'
    web_root_directory: '/opt/www/www.firma.fr'

Und hier der Puppetcode:

class nginx::vhost(
  Hash $vhosts = hiera_hash('nginx::vhost::vhosts', {}),
){
 
  file { ['/var/www', '/opt/www']:
    ensure  => directory,
    owner   => 'www-data'
    group   => 'www-data'
    mode    => '0755'
  }
 
  $vhosts.each |$key, $value| {
    $vhost_name = $key
    $webroot_ensure = $value['webroot_ensure']
    $web_root_directory = $value['web_root_directory']
 
 
    if $webroot_ensure == 'present' {
      $create_webroot = 'directory'
      $force_webroot = false
      $webroot_action = 'creating'
    }
    elsif $webroot_ensure == 'absent' {
      $create_webroot = 'absent'
      $force_webroot = true
      $webroot_action = 'removing'
    }
    else {
      fail("Unknown value ${webroot_ensure} for parameter 'webroot_ensure'")
    }
 
    file { "${webroot_action} Webroot ${web_root_directory} for ${vhost_name}":
      path    => $web_root_directory,
      ensure  => $create_webroot,
      force   => $force_webroot,
      owner   => 'www-data'
      group   => 'www-data'
      mode    => '0755'
    }
  }
}

Mit $vhosts.each wird über jedes Hash-Element iteriert. Der Key ist dabei der Domainname. In $value stehen dann die jeweiligen Unterschlüssel. Mit $value[‘Unterschlüssel’] greift man auf den Wert des jeweiligen Unterschlüssels im Hash zu.

Die Möglichkeit Schleifen in normalen Klassen zu nutzen ist definitiv eine der nützlichsten Neuerungen in der Puppet DSL. Viel Spass beim ausprobieren!

Simon Hönscheid

Autor: Simon Hönscheid

Simon ist in der Nähe von Köln geboren und lebt seit einigen Jahren in Berlin. Er arbeitet bei NETWAYS als Senior Consultant und hat schon während der Ausbildung zum Fachinformatiker für Systemintegration die Themen Automatisierung, Monitoring, Backup und Wissenstransfer für sich entdeckt. Wenn er grade nicht arbeitet macht er gerne Sport, Fotografiert, hört Musik oder lernt neue Dinge.

Mission “Neuer NETWAYS Online Store” accomplished!

NETWAYS Online StoreWir bei Sales haben eine klare Aufgabe: Verkaufen. Ohne uns selbst loben zu wollen: Das können wir. Ob wir unsere Professionals zu unseren Kunden schicken, Supportverträge unter die Menschen bringen, Events und Schulungen promoten, unseren Kunden das Händchen halten oder Monitoring Hardware verkaufen – das ist unser Ding.
Zugegeben: Das ist nicht immer leicht. Man stößt bei Kollegen manchmal auf Gegenwehr, Verwunderung, Überraschung und/oder Entrüstung. Auch das “Glücklichmachen” unserer Kunden fordert uns zu manch einem artistischen Kunststückchen heraus. Aber das sehen wir bei Sales entspannt.

NETWAYS Online Store: Ein Sales-Projekt

Nun ging heute unser neuer Online Store an den Start. Ein Projekt das zum allergrößten Teil von uns SalesianerInnen (an dieser Stelle soll aber auch unserem  Development gedankt sein – ohne euch ginge
es  
natürlich nicht!) gestemmt wurde. Mit einer knallharten Deadline vor der Brust machten wir uns also vor einigen Wochen ans Werk. Da hieß es Artikel aus dem alten Shop migrieren (vieles funktionierte auch automatisch), Preise abgleichen, Bilder einpflegen, neue Strukturen überdenken, Testen und, und, und..

NETWAYS Online Store kurz offlineDoch ganz ohne Ausfallzeiten funktioniert ein Umzug nie. Während der heutigen internen Umstellung durften unsere Kunden und andere Neugierige für kurze Zeit unsere Fehlerseite bewundern. Natürlich waren wir in dieser Zeit telefonisch und per E-Mail  erreichbar!

Fazit: Wir sind happy mit dem neuen Shop und freuen uns, das alles nahezu unspektakulär verlaufen ist. Ich persönlich war etwas irritiert in den letzten Tagen, da die Aufregung bei KollegInnen aus anderen Abteilungen offensichtlich größer war als bei uns. Vielen Dank für den guten Zuspruch! Trotzdem wird unser Head of Sales von im Laufe des Tages zum Anstoßen gezwungen 🙂

Grund zum Feiern für unsere Online Store Kunden

Aprospos Anstoßen: Auch für unsere Kunden gibt es Gründe zum Feiern,
denn wir hauen zum Start des neuen Shops folgende Schmankerl raus:Hurra neuer Online Store

  • Gutscheincode “weloveopensource” verwenden und 5% sparen*
  • Das Buch “Icinga 2 – Ein praktischer Einstieg ins Monitoring“, das von zwei unserer fantastischen Consultants Thomas Widhalm und Lennart Betz verfasst wurde, ist ab sofort verfügbar. Das Tolle: Beim Verwenden des Gutscheincodes “icinga2book” wird der komplette Einkauf versandkostenfrei**
  • Unser langfristiges Bonbon: Bestellungen ab einem Bestellwert
    von 500 EUR sind grundsätzlich versandkostenfrei**

Wir laden nun zum großen inoffiziellen Lasttest ein: Bestellen was das Zeug hält im neuen NETWAYS Online Store! Gern auch von unterwegs, denn der neue Shop ist responsive. Wir lehnen uns dann mal zurück und freuen uns auf neue Aufträge. Denn bei uns sieht man alles eher entspannt.
Lust auf eine Aufgabe bei Sales bekommen? Prima! Wir suchen nämlich zufällig eine/n neue/n (Junior) Account Manager 

 

 

*gilt bis einschließlich 31.08.2016 innerhalb Deutschlands
**gilt nur innerhalb Deutschlands

 

Isabel Salampasidis

Autor: Isabel Salampasidis

Isabel ist seit Februar zurück bei NETWAYS. Bis 2009 war sie unsere Office Managerin und verstärkt nun ab sofort das Sales Team. Hier ist sie für alle Belange des Online Stores verantwortlich. Der Ein- und Verkauf der Monitoring Hardware sowie die Weiterentwicklung des Shops und seines Portfolios wird sie mit ihrem bekannten Tatendrang gehörig vorantreiben. Privat verbringt die halbgriechische Ruhrpott-Fränkin sehr gerne so viel Zeit wie möglich mit ihren bald 4-jährigen Patensöhnen oder schreit sich für den Club - als stolze Dauerkartenbesitzerin! - die Seele aus dem Leib.

Sharing Git patches in a different way

training_gitSometimes it is necessary to share git patches locally. Either you cannot push it to the public domain in a feature or master branch or you simply don’t have an internet connection – for example while working in a customer VPN reproducing issues locally.

You could hope for XMPP sending patch files or any other local transport. But if you don’t want to add, commit, format-patch and send a patch file you’ll obviously go for plain text copy paste of a ‘git diff’ output. Editors and messengers tend to destroy the tab indent. Now what?

base64 encoding to the rescue.

michi@mbmif ~/coding/icinga/icinga2 (master) $ git diff | base64

Send the blob to your colleague who can easily apply it. Example on MacOS:

michi@mbmif ~/coding/icinga/icinga2 (master) $ base64 -D | patch -p1

Or if written to a temporary file:

michi@mbmif ~/coding/icinga/icinga2 (master) $ base64 -D < patchfile | patch -p1

More about working with Git and applying patches can be learned in our Git training sessions. There’s also a Git workshop during this years OSMC 🙂

Michael Friedrich

Autor: Michael Friedrich

Michael ist Icinga-Core-Developer und im Rahmen des Icinga-Projekts schon viele Jahre mit NETWAYS in Kontakt. Im Dezember 2012 hat er das schöne Wien verlassen und ist nun bei uns in den Bereichen Development und Consulting im Einsatz. Durch seine unglaubliche Aktivität im Monitoring-Portal und auf diversen Mailinglisten ist Michael in den vergangenen Jahren für ca. 20% des österreichischen Webtraffics verantwortlich.