Chef, Puppet, Ansible,... — die Auswahl an Open-Source-Tools zum Management von Server-Infrastrukturen ist groß. Infrastructure as Code (IaC) ist in aller Munde und mit steigender Anzahl von installierten Hosts und Virtuallen Maschinen wächst Bedarf an Automatisierung. Nur: Welche sind die besten Tools für meine Systemlandschaft? Womit fange ich an?
In diesem Vortrag sollen grundlegende Konzepte zur Infrastrukturautomatisierung vorgestellt und zueinander in Beziehung gesetzte werden. Eine Auswahl von gängigen Open-Source-Tools wird im zweiten Schritt in die vorgestellten Konzepte eingeordnet, so dass die jeweilige Designphilosophie und die praktischen Anwendungsbereiche klarer werden. Dabei teile ich die Menge an Tools in verschiedene Werkzeugklassen ein. Für jede Werkzeugklasse werde ich einen typischen Vertreter anhand eines Beispiels vorstellen.
Vortrag beim DevOps Thüringen Meetup am 30.03.2023 bei CGI Erfurt.
https://www.meetup.com/de-DE/devopsthde/events/292296382/
3. Christian Kauhaus
Projektmitarbeiter AG E-Commerce/E-Business
Prof. Dr. Andrej Werner
Ernst-Abbe-Hochschule Jena
christian.kauhaus@eah-jena.de
@ckauhaus
1/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
4. Erfahrung
Studium in Rostock und Jena
Mitarbeiter Cluster-Computing/High-Performance-Computing FSU Jena
Mitarbeiter bei verschiedenen RZ-Dienstleistern in Halle
Aufbau & Weiterentwicklung eines Webhosting-Clusters
Aktuelle Projekte @ EAH Jena
Forschungscloud
StartUpLab
2/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
5. Einführung
Im Anfang war das Shellscript
#!/bin/bash
apt install prereq-tool
wget https://example.com/download/releases/1.5/superapp-1.5.tar.gz
tar xf superapp-1.5.tar.gz
cp -r superapp-1.5 /usr/local/superapp
echo "PATH=$PATH:/usr/local/superapp/bin" >> /etc/profile
3/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
7. Beispiel: Shell-Installer
#!/bin/sh
# This script installs the Nix package manager on your system by
# downloading a binary distribution and running its installer script
# (which in turn creates and populates /nix).
{ # Prevent execution if this script was only partially downloaded
oops() {
echo "$0:" "$@" >&2
exit 1
}
umask 0022
tmpDir="$(mktemp -d -t nix-binary-tarball-unpack.XXXXXXXXXX ||
oops "Can't create temporary directory for downloading the Nix binary tarball")"
cleanup() {
rm -rf "$tmpDir"
}
trap cleanup EXIT INT QUIT TERM
require_util() {
command -v "$1" > /dev/null 2>&1 ||
oops "you do not have '$1' installed, which I need to $2"
}
case "$(uname -s).$(uname -m)" in
Linux.x86_64)
hash=ea7b94637b251cdaadf932cef41c681aa3d2a15928877d8319ae6f35a440977d
path=bmryqr433a18hirfgp9yzpqyakfrhn6s/nix-2.9.1-x86_64-linux.tar.xz
system=x86_64-linux
;;
Linux.i?86)
hash=41e38706a26736aa42acd3dbd57db7e354e722e4bd5f6d9c8069d1c98b6081be
path=ssgfczjzb0wzbbcpy8zysh8br005xm14/nix-2.9.1-i686-linux.tar.xz
system=i686-linux 4/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
8. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
5/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
9. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
divergent
konvergent
kongruent
6/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
10. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
Beispiel: Puppet (deklarativ)
package { 'openssh-server':
ensure => installed,
}
file { '/etc/ssh/sshd_config':
source => 'puppet:///modules/sshd/sshd_config',
mode => '0640',
notify => Service['sshd'],
require => Package['openssh-server'],
}
user { 'sshd':
uid => 116,
system => true,
home => '/var/run/sshd',
}
service { 'sshd':
ensure => running,
enable => true,
require => User['sshd'],
}
7/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
11. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
Beispiel: Puppet (deklarativ)
Service
User Configfile
Package
8/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
12. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
Beispiel: Zentraler Server
9/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
13. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
Beispiel: dezentral
10/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
14. Konzepte
Management-Methodik*: divergent , konvergent , kongruent
Paradigma: prozedural vs. deklarativ
Zentraler Server vs. dezentral
Agent vs. agentless
* Traugott et al: Why Order Matters: Turing Equivalence in Automated Systems Administration, Proc. LISA'02
11/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
16. Vergleich ausgewählter Systeme
System seit Methode Paradigma Server Agent ähnlich
2005 konvergent deklarativ ja ja SaltStack, Chef (prozedural)
2012 konvergent prozedural nein nein Puppet Bolt
2013 kongruent prozedural ja nein Packer, Vagrant
2014 kongruent deklarativ nein nein
Kubernetes Deployments,
OpenStack Heat
2009 divergent prozedural ja nein cloud-init, kickstart, FAI, MAAS
2003 kongruent deklarativ nein nein Guix, CoreOS, Yocto
13/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
17. Wie fange ich an?
14/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
18. Wie fange ich an?
Bisher wurde hier alles von Hand gemacht
Konvergentes Tool mit flacher Lernkurve, z.B. Ansible, Chef
Systembeschreibung inkrementell ausweiten
Services in VMs oder Container extrahieren
15/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
19. Wie fange ich an?
Container-Wildwuchs eindämmen
Kombination aus:
Imaging (z.B. Docker)
Orchestrierung (z.B. Terraform)
Cloud-Runtime (z.B. Kubernetes, OpenStack)
Muss: Build-Pipeline (z.B. Jenkins, Gitlab)
Kann: Multi-Cloud-Management (z.B. Rancher)
16/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
20. Wo will ich hin?
17/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
21. Wo will ich hin?
Es kommt auf die Anwendung an
Architektur
Deployment-
methode Kontrolle
Reaktions-
fähigkeit
Infra-
Komplexität
monolithisch konvergent
monolithisch kongruent
Microservices kongruent
18/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
22. Hier lohnt es sich genauer hinzusehen
Workflow bei mehreren Entwickeln
Umgebungs-Separation (dev/test/prod)
Integration CI/CD
Test-Unterstützung
Open-Source-Commitment
19/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
23. Fragen?
Interesse an Workshops oder Projekten?
christian.kauhaus@eah-jena.de
Vielen Dank!
20/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren