Seite wählen

NETWAYS Blog

CfgMgmtCamp 2024: Unser Rückblick

Vergangene Woche fuhr ein Teil unseres Teams bei NWS bis nach Ghent in Belgien, um am ConfigManagementCamp 2024 teilzunehmen.
Hierbei handelt es sich um eine kostenlose Konferenz, direkt im Anschluss an die FOSDEM, was Jahr für Jahr für ein großes Publikum aus Fans von Open Source, guten Gesprächen und neuen Ideen sorgt. Auch dieses Jahr war das nicht anders, und so wollen wir in diesem Artikel noch einmal auf das CfgMgmtCamp 2024 zurückblicken.

Die ollen Zuverlässigen

Configmanagement als Aufgabenbereich ist bereits seit Längerem eine Notwendigkeit im alltäglichen Betrieb von IT-Infrastruktur und Software. So ist es nur natürlich, dass es inzwischen eine Riege etablierter, „oller“ Lösungen gibt, z.B. Puppet, Terraform oder Ansible.
Es war schön zu sehen, dass die Projekte und ihre jeweiligen Ökosysteme weiterhin voller Leben sind: Egal ob event-driven Ansible oder neue ‚Hacks‘ im Umgang mit Puppet, es gab auf jeden Fall noch Neues zu lernen!

Spongebob Schwammkopf Meme "Ol' Reliable"

Ansible, Terraform und Konsorten sind weiterhin zuverlässige Wegbegleiter im Configmanagement

Terraform und sein brandneuer Fork OpenTofu, der im Januar seinen ersten stabilen Release feiern durfte, waren ebenfalls Thema einiger Talks.
Die Tatsache, dass OpenTofu innerhalb von fünf Monaten von Fork zu Stable Release gelangen konnte, zeigt gut, wie wichtig der Community das Projekt ist.
Es wird spannend zu sehen sein, wie sich die beiden Projekte weiter (auseinander) entwickeln.

Noch erwähnenswert ist, dass sowohl Puppet Labs als auch Ansible als Sponsoren am CfgMgmtCamp 2024 auftraten, sodass man sich direkt ‚an der Quelle‘ mit Maintainern und der Community austauschen konnte.

Neues Jahr, Neue Tools

Natürlich waren wir nicht nur vor Ort, um unser Wissen rund um existierende Tools zu vertiefen, wir wollten auch Neues kennenlernen!
Hierzu gab es so einige Möglichkeiten:

Pkl ist eine Konfigurationssprache, die intern bei Apple genutzt wird. Apple hat sich 3 Tage vor dem CfgMgmtCamp dazu entschlossen, diese zu opensourcen. Einen ersten Eindruck konnten wir beim weltweit ersten Talk zu Pkl erhalten:
Die Konfigurationssprache erlaubt es einem, typisierte und durchweg validierte Konfigurationen zu erstellen, die dann in Formate wie YAML oder JSON exportiert werden können. Genaueres findet man auf der Projektwebsite oder im GitHub-Repository des Projekts

Ein weiteres interessantes Projekt, das am CfgMgmtCamp 2024 vorgestellt wurde, ist winglang. Die zugrundeliegende Idee, eine Programmiersprache für Infrastruktur und Code zu haben, fand viel Anklang.
Winglang fokussiert sich dabei auf die Abstraktion der verschiedenen Bausteine „in er Cloud“, um das Definieren von Workloads und Infrastruktur zu erleichtern.
Uns gefiel vor allem der lokale Simulator, der die definierten Ressourcen und das Verhalten der Workloads in Echtzeit wiederspiegelt.

Die dritte Neuheit, die wir nicht unerwähnt lassen wollen, ist System Initiative, ein ‚collaborative power tool designed to remove the papercuts from DevOps work‘. Du kannst es Dir vorstellen wie DrawIO für Infrastructure, mit Multiplayer-Support: Es ist eine GUI mit einer Vielzahl an Cloud-Komponenten, mit denen Du deine Infrastruktur in den Wolken bauen kannst.
System Initiative gleicht im Hintergrund konstant die Korrektheit und den Zustand Deines Projekts mit der Cloud Deines Vertrauens ab.

Unsere Erkenntnisse vom CfgMgmtCamp 2024

Rückblickend konnten wir zwei grundsätzliche Erkenntnisse mit nach Nürnberg nehmen:

Niemand mag YAML, sogar im ‚YAMLCamp‘ – Ansätze wie CUElang, Pkl und winglang deuten mehr als offensichtlich darauf hin.
Ob Sprachen mit strikteren Regeln hinsichtlich Korrektheit der richtige Weg sind, um am Ende dann doch YAML zu generieren, wird sich noch zeigen müssen.

Ansible, Puppet und Terraform sind nachwievor relevant. Wir konnten auch dieses Jahr wieder Neuerungen, Weiterentwicklungen und lebhafte Diskussionen rund um die Tools und ihre jeweiligen Ökosysteme beobachten. Außerdem hat die Open Source Community im vergangenen Jahr eindrucksvoll gezeigt, dass sie die Dinge auch selbst in die Hand nehmen kann, falls nötig (Hallo, OpenTofu!).

Für uns besonders interessant waren einige der Talks rund um Terraform und Ansible, da wir diese rund um OpenStack ebenfalls nutzen: Sei es im Zusammenspiel von OpenStack mit Terraform oder dem Erzeugen dynamischer Inventare unserer Infrastruktur in der Cloud für Ansible.

Und solltest Du Dich noch nicht bereit fühle, direkt ins tiefe Wasser des Configmanagements zu springen, sind ja auch noch unsere MyEngineers bereit, Dir jederzeit zu helfen.

Daniel Bodky
Daniel Bodky
Platform Advocate

Daniel kam nach Abschluss seines Studiums im Oktober 2021 zu NETWAYS und beriet zwei Jahre lang Kunden zu den Themen Icinga2 und Kubernetes, bevor es ihn weiter zu Managed Services zog. Seitdem redet und schreibt er viel über cloud-native Technologien und ihre spannenden Anwendungsfälle und gibt sein Bestes, um Neues und Interessantes rund um Kubernetes zu vermitteln. Nebenher schreibt er in seiner Freizeit kleinere Tools für verschiedenste Einsatzgebiete, nimmt öfters mal ein Buch in die Hand oder widmet sich seinem viel zu großen Berg Lego. In der wärmeren Jahreszeit findet man ihn außerdem oft auf dem Fahrrad oder beim Wandern.

Orchestration-Automation in einem Rutsch

Gerade für Testzwecke ist es von Vorteil, wenn man z.B. in der Cloud virtuelle Maschinen (VM’s) ohne großen Aufwand installieren und verwalten kann. Nur kommt noch die Installation von Programmen und Tools dazu, um die Testumgebung fertig zu bekommen, damit Test-Szenarien abgebildet werden können. Tools wie Terraform, Ansible oder Puppet und Bolt kommen da meistens zum Einsatz. Aber wie wäre es, wenn zum Beispiel sein Terraform-Deployment Verzeichnis  mit den .tf files schon vorhanden ist und nur alles in einem Rutsch ausrollen möchte. Da ich mich mit puppet-bolt schon mal auseinander gesetzt hatte, suchte ich nach einer Lösung und wurde fündig, denn Bolt kann terraform apply  ausführen, puppet-agent darauf installieren und der anschließend ein Puppet Manifest ausrollen. In meinem Kurz-Beispiel wird eine Ubuntu  VM erzeugt, Apache2 installiert und eine Webseite erstellt.

Wie das funktioniert erkläre ich in diesem Post:
Voraussetzung:
Terraform, puppet-agent und puppet-bolt müssen installiert sein.

Ich habe mir ein Verzeichnis angelegt z.B. terraform_puppet und in diesem sind folgende Dateien abgelegt:

├── bolt-project.yaml
├── data
│   └── common.yaml
├── files
│   └── site.html
├── hiera.yaml
├── inventory.yaml
├── manifests
├── plans
│   └── init.pp

Wichtig von den Dateien ist die bolt-project.yaml, die inventory.yaml und die init.pp, deren Inhalt sieht folgendermaßen aus:

bolt-project.yaml
---
name: terraform_puppet
modulepath: ~/puppet/modules

inventory.yaml
---
groups:
- name: terraform
targets: []
config:
transport: ssh
ssh:
private-key: ~/.ssh/passwordlesskey/id_rsa
user: ubuntu
host-key-check: false

Die ganze Magie passiert aber in dem Skript init.pp

plan terraform_puppet(String $tf_path) {
$localhost = get_targets('localhost')

# Create infrastructure with terraform apply
run_command("cd ${tf_path} && terraform apply --auto-approve && sleep 20", $localhost)
$ip_string = run_command("cd ${$tf_path} && terraform output instance_ips",
$localhost).map |$r| { $r['stdout'] }
$ips = Array($ip_string).map |$ip| { $ip.strip }

# Turn IPs into Bolt targets, and add to inventory
$targets = $ips.map |$ip| {
Target.new("${$ip}").add_to_group('terraform')
}

# Deploy website
apply_prep($targets, _run_as => 'root', _required_modules => ['apache'])

apply($targets, _run_as => 'root') {
include apache
file { '/var/www/html/index.html':
ensure => 'file',
source => 'puppet:///modules/terraform_puppet/site.html',
}
}
return $ips
# Or diagnose issues across your terraform infrastructure
run_command('uptime', $targets)
}

Ich habe das ganz bei uns im Openstack umgesetzt, es kann aber auch in anderen Cloud Umgebungen übernommen werden und muss diesbezüglich angepasst werden.

So um das ganze jetzt in Gang zu setzen führt man folgendes Kommando in diesem terraform_puppet Verzeichnis aus:

bolt plan run terraform_puppet -i inventory.yaml tf_path=~/terraform/vmdir

Für alle die, die Puppet und Ruby Wissen haben, sollte das selbsterklärend sein, ansonsten grobe kurze Erklärung:

Bolt führt ein Skript aus das ein Terraform apply triggert und die IP als Variable speichert und als inventory Host-Target zu den groups hinzufügt,
damit diese als $target Variable vom Bolt inventory und dann per puppet apply genutzt werden kann. Das puppet Module Apache wird dazwischen auch mit eingelesen und genutzt.
Das schöne ist, die Funktion von bolt apply_prep, diese sorgt dafür, das für das per terraform installierte VM-OS der puppet-agent installiert und ausgeführt werden kann, wenn man das ganze laufen lässt sieht man es als command durchlaufen.
Anschließend wird per bolt apply ein puppet code  per puppet apply ausgeführt, der in unserem Fall den Apache2 installiert und einen index.html an die entsprechende Stelle kopiert (die man vorher unter files selber anlegen muss) und dann den Apache2 Service startet.

Das Ergebnis sollte dann die Webseite der index.html sein , wenn man die IP-Adresse der VM im Browser (http://$ipaddress_vm eingibt.

Das ist natürlich nur ein ganz vereinfachtes Beispiel, aber die Möglichkeiten die man damit hat, finde ich genial.

Natürlich bieten wir zum Thema Puppet auch Trainings an, wo man die Grundlagen der Automatisierung mit Puppet vermittelt bekommt.

Viel Spaß und Erfolg beim Ausprobieren.

Johannes Carraro
Johannes Carraro
Senior Systems 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 Team Operations als Senior Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

Cloud-Ressourcen effizient managen: Terraform Trainer Lennart in der aktuellen iX

Der heute erreichte Grad der Virtualisierung erlaubt es, nahezu ganze Rechenzentren und ihre Netzinfrastruktur virtuell abzubilden. Dazu bedarf es eines Infrastructure-as-Code-Werkzeugs wie Terraform, das sich dem Multicloud-Management verschrieben hat. Terraform stellt Rechenzentrumsressourcen unterschiedlicher Cloud-Provider bereit – bei Bedarf auch für andere Werkzeuge.

Wie das Ganze funktioniert, erklärt unser Terraform Trainer Lennart in der aktuellen iX Ausgabe. Wenn Dich das Thema interessiert und Du vor hast, mit Terraform zu arbeiten, dann solltest Du Dich unbedingt zu einer unserer Terraform Schulungen anmelden. Dein Trainer: Lennart Betz!

Wir haben die Terraform Schulung in drei Versionen im Programm, mit Fokus auf OpenStack, AWS oder Azure. Darum geht’s bei allen dreien: Mit der aktuellen Version von Terraform und seiner Konfigurationssprache HCL (Hashicorp Configuration Language) in Version 0.12 hat sich das Vorgehen zur Automatisierung von Cloud Infrastruktur weiterentwickelt. Unsere Terraform Schulung zeigt, wie Infrastruktur mit der Terraform eigenen DSL (HCL, Hashicorp Configuration Language) idempotent realisiert wird. Neben der Theorie mit vielen Beispielen beinhalten die Fortbildungen praktische Übungen anhand von OpenStack, AWS oder Azure. Ebenfalls erfolgt eine kurze Einführung in cloud-init, um weitere Software zu installieren und zu konfigurieren.

Die kommenden Terraform Schulungstermine

Melde Dich jetzt an und sichere Dir Deinen Platz!

Die genauen Inhalte, Voraussetzungen und alles weitere Wissenwerte erfährst Du auf unserer NETWAYS Trainings-Seite zur Terraform Schulung.

 

Terraform – was ist das eigentlich?

Am Tag vor der OSMC finden verschiedene Workshops statt, so auch am Tag vor der OSMC 2019. Ich habe mich dazu entschieden, den Terraform Workshop zu besuchen, weil dieser am interessantesten für mich schien. Zu dem Zeitpunkt dachte ich noch nicht, dass ich in Zukunft mehr damit Arbeiten würde – doch falsch gedacht, tatsächlich habe ich mich direkt anschließend eine ganze Zeit lang damit auseinandergesetzt und vor kurzem nochmals. Ich hatte das Ziel, die Schulungsunterlagen für unsere Trainings zu prüfen und mir die User Experience anzuschauen. Dabei habe ich schnell bemerkt, dass mehr als ein Provider problematisch ist, nicht weil Terraform das nicht kann, sondern weil ein entsprechender Lehrinhalt innerhalb dieser 3 Tage mit mehr als einem Provider nur schwer zu vermitteln wäre.  

 

Jetzt zu der Frage was ist Terraform überhaupt? 

Terraform ist ein Produkt der Firma HashiCorp, welche ihren Sitz in San Francisco hat. Terraform ist nur eines der praktischen Programme des Unternehmens, weitere Programme sind Packer und Vagrant. Terraform gehört zur Gruppe IAC (Infrastructure as Code), durch diese werden Infrastrukturen durch Code verwaltet, menschliche Fehler verringert und die Produktivität gesteigert. 

 Mit Terraform lassen sich automatisiert Maschinen deployen und verwalten. Das alles geht recht einfach und schnell auf der CLI. Ein weiterer Vorteil ist, dass Terraform mit vielen unterschiedlichen Providern und Cloud Services zur Cloud Infrastructure Automation genutzt werden kann und das sogar zeitgleich. Man kann beispielsweise unsere OpenStack Maschinen verwenden, VM’s bei Amazon Web Services und Microsoft Azure haben und kann alle Maschinen über eine Terraform Instanz steuern und kontrollieren. Wie alle Produkte, die wir verwenden und lieben, ist Terraform natürlich keine Ausnahme und auch Opensource. Alle Produkte von HashiCorp sind Opensource (ausgenommen Enterprise Versionen). 

 

Man muss sich zwar erst mit Terraform vertraut machen, aber sobald man das hat, ist Terraform sehr einfach zu bedienen. Allerdings muss man sich immer fit halten, was die Programmsprache angeht, da HashiCorp in neuen Versionen gerne mal einiges ändert. Je nachdem wie man es sieht ist Terraform Vagrant für Server. Aber nicht nur große Cloud Provider lassen sich verwalten, sondern auch DNS-Dienste (hier eine detaillierte Liste mit unterstützten Providern https://www.terraform.io/docs/providers/index.html).  

 

Die Konfiguration von Terraform erfolgt über eine oder mehrere Dateien welche auf .tf enden. Wie die Datei(en) heißen, ist dabei völlig egal. Wie bereits angedeutet ist es egal, ob alles in einer Datei steht oder man mehrere Dateien hat. Es empfiehlt sich aus Gründen der Übersichtlichkeit eine Provider-, Main- und Resources.tf Datei anzulegen. In der Provider.tf (wie der Name schon verrät) wird der Provider bzw. die Provider und deren Zugangsdaten und Projekte angelegt. In der Main.tf stehen Dinge wie Image (Betriebssystem), Ressourcen, Größe der Festplatte, aber auch der SSH Key des Nutzers. In der Ressources.tf stehen Dinge wie Security Groups, Konfiguration der Subnetzeaber auch IP-Konfigurationen, usw…  

 

Sobald alles vollständig konfiguriert ist, führt man $ terraform init und $ terraform apply aus und, wenn alles richtig ist, hat man seine laufende(n) VM(s). Und das, ohne jede einzeln deployen zu müssen. Das verringert den Zeitaufwand sehr stark und minimiert die Fehlerquote. 

 

Terraform ist also gerade wenn man viel mit virtuellen Maschinen und unterschiedlichen Providern arbeitet ein sehr hilfreiches und praktisches Tool, welches sehr nützlich sein kann. Ich kann Terraform (wie auch die anderen Produkte von HashiCorp) nur empfehlen. Es ist wirklich leicht zu bedienen und erleichtert die Arbeit ungemein. 

Nathaniel Donahue
Nathaniel Donahue
Technical Service Manager

Nathaniel hat 2022 seine Ausbildung zum Fachinformatiker für Systemintegration bei NETWAYS erfolgreich abgeschlossen. Seitdem unterstützt er sein Team im Bereich Operations vor allem beim Betriebsconsulting. In seiner Freizeit ist Nathaniel gerne unterwegs mit Freunden oder reist in der Gegend herum. Ansonsten schnappt er sich gerne mal sein Fahrrad oder geht Schwimmen.

Sprichst Du die HashiCorp Configuration Language? Dann haben wir was für Dich!

Schau doch mal in unseren Schulungskalender für Terraform, sicher ist auch etwas für Dich dabei! Seit neuestem bieten wir die Terraform Schulungen in drei verschiedenen Versionen an:

  1. OpenStack
  2. AWS (Amazon)
  3. Azure (Microsoft)

Bei OpenStack, AWS und Azure handelt es sich um verschiedene Clouds. Aber wenn Du damit arbeitest, dann müssen wir Dir das ja nicht erklären. Was Dich aber vielleicht interessiert – und was wir Dir auf jeden Fall erklären können: Wie Du mit Terraform Infrastruktur für Anwendungen in Deiner Cloud automatisiert erstellst und verwaltest.

Unsere drei verschiedenen Schulungen behandeln genau dieselben Terraform-Themen, nur sind diese und vor allem die praktischen Übungen jeweils auf OpenStack, AWS oder Azure zugeschnitten. Damit Du Dich in Deiner Umgebung auskennst!

Terraform Inhalte

  • Was ist Terraform?
  • Was wir im Hintergrund tun? (Infrastruktur)
  • Wie arbeitet man in Teams?
  • Basiskonfiguration
  • Provider
  • Module
  • Loops
  • Provisionierung mit Cloud-Init
  • Ressourcen importieren
  • Zero-Downtime-Update
  • Instanzen (Virtuelle Maschine)

Das macht unsere Trainings besonders

Und deswegen möchtest Du Deine Schulung bei uns besuchen:

Praxisnah

Neben dem Bereich Schulungen sind unsere Trainer auch noch regelmäßig in Software und Kundenprojekten tätig. Sie wissen, worauf es ankommt und teilen ihr Wissen gerne.

Kommunikativ

Der Austausch der Kursteilnehmer*innen ist uns sehr wichtig! Und das geht natürlich auch online. Wir stellen euch Kanäle und Wege zur Verfügung, über die Ihr Euch untereinander und mit Eurem Trainer austauschen könnt.

Individuell

Um einen effizienten Ablauf unserer Schulungen sicherzustellen werden Gruppengrößen begrenzt. Für Deine Fragen bleibt natürlich immer Zeit. Du kannst Dich auf eine individuelle Betreuung freuen!

Unsere Trainings im Überblick

Hier findest Du alle kommenden Termine:

  • OpenStack

    • 08. – 09.12.2020 | online
    • 23. – 24.02.2021 | online
    • 01. – 02.07.2021 | online
  • AWS Training

    • 25. – 26.02.2021 | online
    • 19. – 20.10.2021 |Nürnberg
  • Azure Training

    • 29. – 30.06.2021 | online
    • 28. – 29.10.2021 | Nürnberg

Tickets und weitere Informationen findest Du hier.