pixel
Select Page

NETWAYS Blog

Debugging mit Docker

docker
Docker ist uns allen als leichtgewichtige Lösung bekannt mit deren Hilfe man Anwendungen in Containern bereitstellen kann. Ist man etwas kreativ, kann man mit Docker aber viel mehr “verbrechen”. So kann man beispielsweise Docker sehr gut zum debuggen von Applikationen verwenden.
Jetzt fragt ihr euch sicher: “Was ist den bei dem kaputt? Zum debuggen brauch ich in 90 % aller Fälle eine Konsole”. Aber warum den nicht!? Es ist zwar gegen die Idee von Docker, aber man kann damit natürlich auch einen kleine Debugging-Container mit SSH betreiben.
 
 
Hier ein kurzes Beispiel in Form eines Dockerfiles:
FROM debian:8.4
MAINTAINER $your_name $your_email


# install needed packages
RUN apt-get update && apt-get install -y openssh-server rsync rsnapshot vim git sudo ntpdate ethtool screen dnsutils shorewall curl unzip telnet net-tools ntp ntpdate


# prepare root account and login
RUN mkdir /var/run/sshd

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile


# prepare user
RUN groupadd -g 10000 $your_name
RUN useradd -g 10000 -u 10000 -s /bin/bash -m $your_name
RUN mkdir /home/$your_name/.ssh && chmod 750 /home/$your_name/.ssh && chown $your_name. /home/$your_name/.ssh
RUN echo "<$your_ssh_key>" > /home/$your_name/.ssh/authorized_keys && chmod 600 /home/$your_name/.ssh/authorized_keys && chown $your_name. /home/$your_name/.ssh/authorized_keys
RUN echo "$your_name ALL=NOPASSWD: ALL" > /etc/sudoers.d/$your_name && chmod 640 /etc/sudoers.d/$your_name


# map ssh port and run ssh
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Wenn ihr jetzt alle $your_name durch euren Benutzernamen ersetzt (Variablen funktionieren bei Docker leider nicht in der RUN-Umgebung) erhaltet ihr ein aktuelles Debian 8.4 mit einem SSH Zugang. Dieses Dockerfile mit SSH kann man nun z. B. sehr einfach um Icinga2 Pakete erweitern. Etwas weiter gesponnen könnte man noch verschiedene Betriebssystemversionen oder die Auswahl Icinga2 Stable oder Snapshot mit einbauen.
Alles in allem erhält man einen sehr leichtgewichtigen Container der das Debuggen ermöglicht, der sehr schnell provisioniert ist und man mit der entsprechenden Storage Config sogar anwendungsspezifische Konfigurationen und Dateien mit schleppen kann.

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.

Foreman/Puppet vs. Gnome – Einstellungen automatisieren

foreman_small
Der Gnome Desktop ist prinzipiell eine sehr schöne Software, da durch seine Hilfe die Bedienung eines Linux Betriebssystems als Desktop deutlich einfacher wird. Ähnlich zu Windows Systemen können Einstellungen durch wenige Klicks mit der Maus getätigt werden.
Aber wie Automatisiert man diese Einstellungen? Und warum will man das? Für alle Teilnehmer unserer Schulungen stellen wir Notebooks zur Verfügung. Diese sind je nach Schulung (Icinga, Puppet, Ceph, usw.) unterschiedlich vorbereitet. Daher betanken wir alle Notebooks vor jeder Schulung mit unserem Foreman neu. Nach der frischen Grundinstallation müssen Einstellungen wie z. B. das Keyboard Layout dementsprechend neu konfiguriert werden.
Keyboard Layout ändern? Ja und? – Genau das dachte ich mir auch. Kann doch nicht so schwer sein…
Aber die Praxis belehrt eines besseren. Ändert man mit Puppet die /etc/default/keyboard ist dies bei unserem Debian 8.4 zwar theoretisch global gültig (z. B. für den Login-Screen), die einzelnen Benutzer-Accounts (mit Gnome) interessiert dies aber herzlich wenig. Wurde das Grundsystem in englischer Sprache installiert, ist das Tastaturlayout englisch und das völlig unabhängig von den Einträgen der /etc/default/keyboard.
Aber nichts leichter als das. Mit einem beherzten gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de')]" lassen sich solche Einstellungen schnell korrigieren. Pustekuchen! Das Kommando gsettings verlangt einen Execute über eine grafische Oberfläche, was Puppet und sein Manifest ziemlich uncool finden.
Rätsels Lösung ist in diesem Fall der für meine Begriffe etwas “dreckige” Workaround:
/usr/bin/sudo -u training dbus-launch --exit-with-session gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de')]"
Tja, wer hätte das gedacht. Es ist nicht sonderlich hübsch, funktioniert aber tadellos. In Zukunft kümmere ich mich lieber wieder um Serversysteme und behaupte nie wieder das die Umstellung des Keyboard Layouts nicht so schwer sein kann 😉

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.

Jobs Jobs Jobs…

Team
…und damit meine ich nicht Steve! Wer diesen schlechten Spruch kapiert hat, sollte sich direkt mit einer E-Mail an jobs@netways.de bewerben 😉
Aber mal zum ernst der Sache: In diesem Blog wird viel zu selten drauf aufmerksam gemacht, das wir quasi durchgehend neue Kollegen suchen. Egal ob San Francisco, Zürich, Brüssel oder einfach Deutschlands Großstädte, als reisebegeisterter Consultant kommt man hier ganz schön rum. Solltet ihr Lust aufs Reisen und ein wenig Icinga, Puppet oder Logstash haben könnt ihr euch sehr gerne als Linux Consultant (m/w) oder Puppet Consultant (m/w) bewerben. Sollte euch die Wahl schwer fallen, könnt ihr unsere Kunden selbstverständlich auch mit allen Themen beglücken.
 
Als kleiner Anreiz: Aktuell haben wir für 2016 noch Consulting-Termine in Atlanta und Peking zu vergeben. Wenn euer Knowledge passt und ihr schnell genug eure Bewerbung schreibt, könnt ihr gerne dort hin fliegen 🙂
In diesem Sinne: Bewerben! Bewerben! Bewerben!

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.

Consultingleben – Kapitel 2: Online in 17 Ländern (Update)

three_ukAn dieser Stelle möchte ich nur ein kurzes Update zu meinem Blogpost mit der “Reise-SIM-Karte” geben. Mittlerweile hat Three.uk seine Feel-At-Home Zone weiter ausgebaut, womit Neuseeland und Spanien hinzugekommen sind.
 
Summa summarum sind wir nun bei:

  • Großbritannien
  • USA (inkl. Hawaii)
  • Österreich
  • Schweiz
  • Italien
  • Spanien
  • Frankreich
  • Schweden
  • Norwegen
  • Finnland
  • Dänemark
  • Irland
  • Australien
  • Neuseeland
  • Hong Kong
  • Sri Lanka
  • Macau
  • Israel
  • Indonesien

Eine SIM-Karte – 19 Länder! Es fehlt eigentlich nur noch Deutschland 😉

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.

inDoc – Mach es dem Support einfacher…

16811692146_85b370edb1_oBeim eröffnen eines Tickets ist es immer das gleiche. Welches Betriebssystem? Welche Version der Applikation? Immer die gleichen Fragen… Ihr habt keine Lust mehr Informationen zusammen zu sammeln? Dann nehmt doch inDoc!
inDoc ist eine kleine Sammlung an Skripten die Informationen aus eurem Monitoring-Setup sammelt und diese in einer XML-Datei speichert. Auf diese Weise wird z. B. die icinga.cfg oder auch Daten über den laufenden Icinga Prozess (PID, Speicherverbrauch, usw.) gesichert.
Aber keine Angst, der Entwickler ist nicht die NSA! Die Daten sind dann ausschließlich auf eurem Server und Passwörter werden in formschöne Sterne (******) verwandelt.
Der XML-Output ist neutral und kann mit allen gängigen Programmiersprachen wieder eingelesen werden, womit das gute Stück auch für Dokumentationszwecke genutzt werden kann. Ein erstes Beispiel hierfür zeigt das Skript inDoc2HTML.pl.
In der Praxis ist inDoc denkbar einfach:
icinga@monitoring-host# git clone https://github.com/NETWAYS/indoc
icinga@monitoring-host# cd indoc
icinga@monitoring-host# ./inDoc.pl

That’s it! 🙂
Das war kurz und schmerzlos, aber was hab’ ich nun davon?

icinga@monitoring-host# ls -la /tmp/inDoc-out/
total 56
drwxr-xr-x 3 icinga icinga 4096 Aug 14 18:49 .
drwxrwxrwt 4 root root 4096 Aug 14 18:54 ..
-rw-r--r-- 1 icinga icinga 492 Aug 14 18:49 check_disk.xml
-rw-r--r-- 1 icinga icinga 450 Aug 14 18:49 check_http.xml
-rw-r--r-- 1 icinga icinga 449 Aug 14 18:49 check_load.xml
-rw-r--r-- 1 icinga icinga 7456 Aug 14 18:49 icinga.xml
-rw-r--r-- 1 icinga icinga 2434 Aug 14 18:49 indoc_base.xml
-rw-r--r-- 1 icinga icinga 12875 Aug 14 18:49 inDoc.xml
-rw-r--r-- 1 icinga icinga 1476 Aug 14 18:49 pnp4nagios.xml
drwxr-xr-x 2 icinga icinga 4096 Aug 14 18:48 savedFiles

Ohne weitere Optionen schreibt das Skript nach /tmp/inDoc-out. Hierunter findet ihr die Discovery-Ergebnisse der einzelnen Module. Das inDoc.xml beinhaltet die Informationen aller Module. So sind die Daten bequemer weiter zu verarbeiten.
Das ganze Set an Skripten wird von Zeit zu Zeit erweitert. Icinga 2 wird selbstverständlich zu den ersten gehören 😉
Picture by GotCredit – https://www.flickr.com/photos/jakerust

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker und renoviert, baut und bastelt als Heimwerker an allem was er finden kann.