SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Infrastructure as Code
1/20
Linux-Server mit Open-Source-Tools
automatisieren
Konzepte und Vergleich
Dipl.-Inf. Christian Kauhaus
christian.kauhaus@eah-jena.de
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
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
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
Beispiel: Shell-Installer
4/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
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
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
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
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
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
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
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
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
Vergleich ausgewählter Systeme
12/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
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
Wie fange ich an?
14/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
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
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
Wo will ich hin?
17/20
30. März 2023 Linux-Server mit Open-Source-Tools automatisieren
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
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
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

Más contenido relacionado

Similar a Linux-Server mit Open-Source-Tools automatisieren

Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
inovex GmbH
 
Nagios Conference 2006 | Nagios Portalintegration by Julian Hein
Nagios Conference 2006 |  Nagios Portalintegration by Julian HeinNagios Conference 2006 |  Nagios Portalintegration by Julian Hein
Nagios Conference 2006 | Nagios Portalintegration by Julian Hein
NETWAYS
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
Christian Guenther
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Andreas Schreiber
 
Puppet und OpenStack - Ein gutes Team
Puppet und OpenStack - Ein gutes TeamPuppet und OpenStack - Ein gutes Team
Puppet und OpenStack - Ein gutes Team
NETWAYS
 

Similar a Linux-Server mit Open-Source-Tools automatisieren (20)

Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
Konfigurations Management mit Puppet (Webinar vom 17.10.2013)
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Architektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsArchitektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOps
 
Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013Monitoring Openstack - LinuxTag 2013
Monitoring Openstack - LinuxTag 2013
 
Icinga mit Puppet - Hamburg 2013
Icinga mit Puppet  - Hamburg 2013Icinga mit Puppet  - Hamburg 2013
Icinga mit Puppet - Hamburg 2013
 
Nagios Conference 2006 | Nagios Portalintegration by Julian Hein
Nagios Conference 2006 |  Nagios Portalintegration by Julian HeinNagios Conference 2006 |  Nagios Portalintegration by Julian Hein
Nagios Conference 2006 | Nagios Portalintegration by Julian Hein
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)Dart (Teil II der Tour de Dart)
Dart (Teil II der Tour de Dart)
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
Python in der Luft- und Raumfahrt
Python in der Luft- und RaumfahrtPython in der Luft- und Raumfahrt
Python in der Luft- und Raumfahrt
 
Puppet und OpenStack - Ein gutes Team
Puppet und OpenStack - Ein gutes TeamPuppet und OpenStack - Ein gutes Team
Puppet und OpenStack - Ein gutes Team
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
 
Cepicky pywps
Cepicky pywpsCepicky pywps
Cepicky pywps
 
Continuous Delivery with ansible
Continuous Delivery with ansibleContinuous Delivery with ansible
Continuous Delivery with ansible
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
Cloud Native Computing & DevOps
Cloud Native Computing & DevOpsCloud Native Computing & DevOps
Cloud Native Computing & DevOps
 

Linux-Server mit Open-Source-Tools automatisieren

  • 2. Linux-Server mit Open-Source-Tools automatisieren Konzepte und Vergleich Dipl.-Inf. Christian Kauhaus christian.kauhaus@eah-jena.de
  • 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
  • 6. Beispiel: Shell-Installer 4/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
  • 15. Vergleich ausgewählter Systeme 12/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