Terraform Changes

Hallo!

Was vielen unseren von geneigten Lesern entgeht ist das wir auch in unserem Alltag zwischen der ganzen Softwareschreiber- und Kompilier Tätigkeiten auch ganz viele virtuelle Maschinen und Container zum testen selbiger Software rauf und runter installieren müssen und das Tag für Tag.

Deshalb und gerade deshalb versuchen wir uns das Leben mit dafür erstellter Software und deren arbeitserleichternden Funktionen leichter zu machen. Wie mein Kollege schon in seinem Blogpost im März mir vorgegriffen hat benutzen wir bei der Netways Terraform. Achim wird in weiteren Artikeln darauf eingehen wie man Openstack per Terraform nach seiner Pfeife tanzen lassen kann und Ich möchte mich heute auf ein anderes Terraform Thema beziehen nämlich dem nahen release von Terraform 0.12.

Zu dem Zeitpunkt wo ich diese Zeilen niederschreibe ist auf der aktuellen Website von Hashicorp noch die Aktuelle Version 0.11.13 zu finden.

Aber Terraform hat schon etwas den Vorgang gelüftet und uns vielversprechendes gezeigt mit dem 0.12.0-beta1 pre-release.

Damit kann man schon die viele Erleichterungen welche der neue Terraform release mit sich bringt erahnen und auch schon antesten. Ich versuche mich an einer Erleuterung den änderungungen Anhand eines kleinen Beispiels.
Vielleicht kann ich den einen oder anderen IaaS Codeschreiber welcher sich hierfür interessiert etwas auf den Geschmack zu bringen schon etwas zu testen mit der neuen Version.

Hier der Unterschied zwischen einer (aktuell 0.11.13) alten Terraform Version und einer neuen Version in Terraform 0.12 durch eine Gegenüberstellung.

main.tf (Random Tiernamen Beispiel)

variable "count" { default = 1 } variable "default_prefix" { default = "Giraffe" } variable "zoo_enabled" { default = "0" } variable "prefix_liste" { default = [] } resource "random_pet" "my_pet" { count = "${var.count}" prefix = "${var.zoo_enabled == "0" ? var.default_prefix : element(concat(var.prefix_liste, list (""), count.index)}" }

main.tf HCL2 Version(Random Tiernamen Beispiel)

variable "pet_count" { default = 1 } variable "default_prefix" { default = "Giraffe" } variable "prefix_list" { default = [] } resource "random_pet" "my_pet" { count = var.pet_count prefix = var.zoo_enabled ? element(var.prefix_list, count.index) : var.default_prefix }

Die Unterschiede fallen zuerst etwas weniger ins Auge sind aber dafür meines Erachtens tiefgreifender für Leute die IaaS Code schreiben müssen und es dient der Lesbarkeit des Codes.

Vorteil Nummer 1:
Im alten Beispiel musste noch mit “${var.count}” von einem String zu einer Number evaluiert werden, mit der neuen HCL2 schreibweise entfällt das und es kann mit var.pet_count direkt der korrekte String oder Number Wert adressiert werden.

Vorteil Nummer 2:
Auch die Evaluierung der Liste prefix = “${var.zoo_enabled == “0” ? var.default_prefix : element(concat(var.prefix_liste, list (“”), count.index)}”  wird mit der neuen notation der HCL2 wesentlich eingängiger. prefix = var.zoo_enabled ? element(var.prefix_list, count.index) : var.default_prefix ist prägnanter. Es entfällt auch die element(concat(x), list(“”), x ) Hack-Situation um aus einer leeren Liste auch eine Liste mit einem NULL Element zum machen.

Vorteil Nummer usw. es gibt viel mehr was geändert worden ist, if you want to know more here.

Ich hoffe ich habe euch nicht zu sehr gelangweilt mit C.O.D.E. kurz vor dem Wochenende.

Gruß David

 

David Okon
David Okon
Senior Consultant

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

NFC-Leser mit einem Raspberry Pi

In meinem letzten Blogpost habe ich schon etwas über NFC und RFID geschrieben. In diesem Blog erstellen wir einen Leser, mit dem man beispielsweise auch NFC-fähige Karten oder Chips auslesen kann.

Was brauchen wir?

  1. Einen Raspberry Pi
  2. Female-Female Jumperkabel
  3. RFID-Reader MFRC522 Modul

Hier benutze ich das zurzeit das aktuellste Modell des Raspberrys, den 3 B+.

Natürlich sind auch ältere Pi Modelle für dieses Projekt ausreichend.

Die Jumperkabel sowie das Modul können sehr leicht und kostengünstig auf Plattformen wie Amazon oder Ebay gefunden werden.

Verkabelung

Als Erstes nehmen wir uns sieben Jumperkabel her. Am besten verschiedenfarbige Kabel, zur besseren Übersicht.

3,3 V -> Pin 1,    RST -> Pin 22,

GND -> Pin 6,    IRQ -> bleibt frei,

MISO -> Pin 21,    MOSI -> 19,

SCK -> 23,    SDA -> Pin 24

Software

 

Wenn die Verkabelung abgeschlossen ist, können wir mit der Software beginnen.

Zunächst muss das SPI Interface aktiviert werden. Das kann unter “Einstellungen” -> “Raspberry-Pi-Konfiguration” ->

“Schnittstellen” gemacht werden.

Nach einem Neustart kann per Befehl überprüft werden, ob SPI aktiviert ist.

Konsolenbefehl: lsmod | grep spi

Es sollte so eine ähnliche Ausgabe kommen:

Den Code findet ihr hier: SPI Py als Zip Datei, der Ordner kann heruntergeladen und entpackt werden.

Nun wechselt ihr in das  /SPI-Py/MFRC522-python Verzeichnis und führt dort die Read.py Datei aus.

Dies kann man mit dem Befehl  python Read.py  machen.

Zum Schluss den Chip auf den Reader legen.

Wenn alles richtig ist, solltet ihr diese oder ähnliche Ausgabe bekommen:

 

 

Loei Petrus Marogi
Loei Petrus Marogi
Junior Developer

Loei ist Fachinformatik-Azubi im ersten Lehrjahr und lernt momentan unseren Toolstack kennen. Nach der Linux-Schulung freut er sich besonders aufs Programmieren. Wenn er mal nicht bei NETWAYS ist, spielt er Fußball im Verein oder geht ins Fitnessstudio.
FM Empfänger mit dem Raspberry Pi 3

FM Empfänger mit dem Raspberry Pi 3

Es gibt viele Projekte für Einsteiger, um mit einem Raspberry Pi kleineres zu realisieren. Unter anderem ein FM Empfänger, wofür die folgende Anleitung genutzt werden kann.

Materialien: 

  1. Raspberry Pi 3
  2. Female Female Jumper
  3. Tea5767 Modul
  4. Lautsprecher (Beispiel)
  5. AUX Kabel

Vorgehen: 

1) Die mitgelieferte SD Karte enthält bereits ein Noob OS, womit Raspian installiert werden kann. Sollte ein anderes Kit ohne Karte bestellt werden, braucht man natürlich auch eine SD Karte. Noob OS dann einfach herunterladen, entpacken und auf die Karte kopieren

2) I2C aktivieren via: sudo raspi-config
-> Interfacing Options
-> I2C
-> YES

3) Der Raspberry Pi muss natürlich auch mit dem Modul verbunden werden. Hierzu werden die Female-Female Jumper benutzt.
Raspberry Pi    Tea5767
5V              5V
SDA.1           SDA
SCL.1           SCL
GND             GND

Auf welche Pins nun genau gesteckt werden muss, kann mittels gpio readall herausgefunden werden. Falls SDA.1 und SCL.1 bereits in Verwendung sind, kann auch auf 0 oder 2 ausgewichen werden.

4) Ob das Modul auch erkannt wurde, wird folgendermaßen überprüft:
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Die “1” steht hier für SCl.1 und SDA.1 – sollte SDA.0 und SCL.0 verwendet worden sein, muss der Command entsprechend angepasst werden.  Wenn in der angezeigten Tabelle keine Zahl erscheint, wird das Modul nicht erkannt. Dies liegt meist an einer falschen Verkabelung oder einem defekten Modul.

5) Aus einer anderen Anleitung haben wir uns eines Links zum Code bedient, das den Tea5767 steuert. Es kann hier natürlich selbst auch ein Skript geschrieben werden, wenn tiefere Einblicke gewünscht sind. Hierfür wird python3 benötigt sowie verschiedene Module. Beim ersten Aufruf des Skriptes wird aber mitgeteilt, ob etwas nachinstalliert werden muss, oder nicht. Falls das der Fall ist, kann mit pip3 install $modul entsprechend nachjustiert werden.
Unter /home/pi ein neues Verzeichnis (z.B.: PiFM) erstellen und das Skript dort ablegen.

6) Mit python3 radio.py kann nun der eigentliche Radio gestartet werden. Es empfiehlt sich, das Skript kurz durchzulesen, da der Radio über Tasten gesteuert wird. So wird mit “W” die Frequenz um +1 verändert, mit “E” um +0.1

Alles in allem ist das ein schönes Projekt um erste Eindrücke in die Funktionsweise eines Raspberry Pis zu bekommen und wie bestimmte Module funktionieren, verbunden und genutzt werden. Interessant wird das auch, wenn man parallel dazu mit einem 2. Pi einen FM Transmitter aufbaut. Hierzu gibt es in einem späteren Blogpost aber mehr.

Marius Gebert
Marius Gebert
Systems Engineer

Marius ist seit 2013 bei NETWAYS. Er hat 2016 seine Ausbildung zum Fachinformatiker für Systemintegration absolviert und ist nun im Web Services Team tätig. Hier kümmert er sich mit seinen Kollegen um die NWS Plattform und alles was hiermit zusammen hängt. 2017 hat Marius die Prüfung zum Ausbilder abgelegt und kümmert sich in seiner Abteilung um die Ausbildung unserer jungen Kollegen. Seine Freizeit verbringt Marius gerne an der frischen Luft und ist für jeden Spaß zu...

Partition voll, Wo?

Dieses Problem kennt bestimmt jeder SysAdmin, das Monitoring meldet Partition fast vollgelaufen, gut die Partition weiß man schon mal, laut Monitoring Icinga


Das heißt aber noch nicht automatisch WO die Partition vollgelaufen ist. In Zeiten wo Storage-Systeme, SSD’s und Speichermedien immer größer werden, werden auch die Dateien immer größer und Speicherplatz nicht unendlich ist, werde ich heute mal mit ein paar einfachen Shell-Kommandos auf einem Linux-System zeigen, wie schnell man das Verzeichnis ermittelt, das vollgelaufen ist.
Tool meiner Wahl ist dafür:
du -> Disk Usage
Größe gesamt summiert
du -hs /
49G /

Möchte ich mir einen Überblick über das File-System mit allen Ordnern sehen, damit ich weiß in welchen dieser Ordner am vollsten ist:
du -hx / -d1
36M /etc
43M /root
47G /var
3,2M /tmp
1,4G /usr
300M /boot
1,9M /home
0 /media
0 /mnt
22M /opt
0 /srv
48G /

Der Schalter -h (human readable) und -d1 (nur die erste Ordner-Reihe ohne Unterverzeichnisse), Schalter -x, (nur in diesem Filesystem suchen)

Erkenntnis: Aha, im Verzeichnis /var sind sehr viele Daten, also Schlussfolgerung, in diesem Verzeichnis weiter suchen.
# du -hx /var -d1
4,0K /var/tmp
31G /var/lib
211M /var/log
16G /var/adm
119M /var/cache
8,0K /var/db
47G /var

Das ganze kann ich jetzt soweit fortführen, bis ich das gewünschte Verzeichnis gefunden habe und entscheiden, was gelöscht / ausgelagert werden kann oder welche Anwendung ich optimieren muss, um den Speicherplatz wieder freizugeben.

In meinem Fall, war es die MySQL-Datenbank, die mir hier den Platz raubt.
# du -hx /var/lib/ -d1 | grep mysql
31G /var/lib/mysql

Lösung: z.B. VM / Partition vergrößern, Datenbank auslagern auf externen Storage.

Dieses Tool kann noch mehr, am besten ausprobieren(learining by doing), die Man-Page man du verrät noch mehr.

Wir bieten auch Trainings zu vielen Themen rund um Open Source an, Schau mal rein.

Johannes Carraro
Johannes Carraro
Support Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Managed Services Team als Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre in einer Metalband, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

ncurses – TUI für Unix-Derivate

Mit ncurses (Abk. für new curses) können wir uns eine TUI (=text-based user interface) in den verschiedensten Textterminals oder Terminalemulatoren darstellen lassen. Als freie C-Programmbibliothek unter der MIT-Lizenz, fällt ncurses als Open Source Software auch mit in das GNU-Projekt.

Ich habe mich ein wenig mit ncurses beschäftigt und einige hilfreiche Anwendungen gefunden, die zusätzlich sehr schön in TUI angezeigt werden. Dazu muss ich euch jedoch erst durch die Installation von ncurses führen:
(Debian/Ubuntu Linux)
$ apt install ncurses-base

(CentOS/Fedora)
$ dnf install ncurses-devel

Nun habe ich mir einige Tools installiert die ich euch unbedingt zeigen möchte.

Glances

Mit Glances ist es möglich, Systeminformationen auszulesen. Dateisystem, Netzwerk, Hardware-Komponenten und mehr, können hier im Vergleich zu top und htop in Echtzeit ausgelesen und angezeigt werden.

$ apt install glances

 

Midnight Commander

Der Midnight Commander ist ein freier Klon des Norton Commander (DOS-Tool). Er ist einer der bekanntesten Konsolenprogramme für Linux und zeigt eine zweispaltige Ansicht unserer Archive. Auch ein Zugriff auf Netzwerkserver ist möglich.

$ apt install mc

NCDU

Ein Festplatten-Dienstprogramm für Unix-Systeme. Hat die gleichen Funktionen wie das Dienstprogramm du, verwendet aber eine Textbasierte Benutzeroberfläche.

$ apt install ncdu

Bastet

Für alle Gamer gibt es hier noch einen Tetris-Klon. Freie Tastaturbelegung sowie ein easy/hard mode.

$ apt install bastet

 

Aleksander Arsenovic
Aleksander Arsenovic
Junior Consultant

Aleksander macht eine Ausbildung zum Fachinformatiker für Systemintegration in unserem Professional Service. Wenn er nicht bei NETWAYS ist, schraubt er an seinem Desktop-PC rum und übertaktet seine Hardware. Er ist immer für eine gute Konversation zu haben.

Landscape – On-Premise

Bei Netways muss jeder Azubi jede Abteilung durchlaufen. Grund hierfür ist die Arbeit der anderen Mitarbeiter besser zu verstehen und zu respektieren. Derzeit bin ich bei Managed Services, genauer noch im Customer Hosting. Im Zuge dessen sollte ich mich mit alternativen Verwaltungstools auseinandersetzen im speziellen mit Landscape.

Was ist Landscape?

Landscape ist ein Management-Tool von Canonical. Des Weiteren bietet Landscape einige kleinere Kapazitäten hinsichtlich Monitoring, darunter Netzwerk- und Speicherauslastung, aber auch verbleibende Speicherkapazität, Netzwerkbelastung oder derzeitiger SWAP-Verbrauch.

Der Kern der Anwendung ist jedoch die einfache Ausführung von Updates/Upgrades, sowie Scripts auf Systemen, sowie die Möglichkeit diese zu limitieren und individuell anzuwenden. Eine Reihe an weiteren Features werden von Canonical für Landscape beworben, die ihr hier finden könnt.

Was kostet Landscape?

Landscape’s Kosten variieren stark anhand der Umgebung, die man damit verwalten möchte. Jedoch gibt es die Möglichkeit Landscape in einer kleineren Umgebung – bis zu 10 Vms und 50 Container – umsonst zuverwenden, dies nennt sich Landscape On-premises.

Wie installiere ich Landscape On-premises?

Die entsprechende Software Repository hinzufügen:

sudo add-apt-repository ppa:landscape/18.03

sudo apt-get update

Und daraufhin installieren:

sudo aptitude install landscape-server

sudo aptitude install landscape-server-quickstart

Die Quickstart-Variante installiert App-Server, Datenbank etc. alles auf das gleiche System.

Sollte das nicht gewünscht sein, gibt es ebenfalls eine ausführliche Dokumentation zur manuellen Installation hier.

Falls es zu Fehlern aufgrund von Package-Dependencys kommen sollte, dann kann dieses einfach mit aptitude anstelle von apt-get gelöst werden.

Jetzt können bereits Clients hinzugefügt werden. Eine ausführliche Anleitung dafür ist zwar auch im Webinterface unter <IP_of_APP-Server>/account/standalone/how-to-register zu finden. Dort wird auch automatisch ein Befehl generiert, der die entsprechenden Parameter setzt die zum hinzufügen relevant sind.

 

Alexander Stoll
Alexander Stoll
Junior Consultant

Alexander ist ein Organisationstalent und außerdem seit Kurzem Azubi im Professional Services. Wenn er nicht bei NETWAYS ist, sieht sein Tagesablauf so aus: Montag, Dienstag, Mittwoch Sport - Donnerstag Pen and Paper und ein Wochenende ohne Pläne. Den Sportteil lässt er gern auch mal ausfallen.