PDF-Export-Ansicht unter Google Chrome mit Shortcut 'E' und anschließend Strg+P
Andrew Clay Shafer
1913
Henry Ford entwickelt "Flow Production"
1930er
Das Toyota Production System wird geboren
1990
"The Machine That Changed the World" von James P. Womack
2003
2007
Methode "Agile System Administration"
2008
Andrew Clay Shafer spricht über agile infrastructure
2009
John Allspaw und Paul Hammond"10+ Deploys per Day: Dev and Ops Cooperation at Flickr"
2009
Patrick Debois und Jean-Paul Sergent organisieren DevOpsDays
Der Rest ist Geschichte.


A. Shafer - Wall Of Confusion


Ein Silo mehr.

Dev + Ops = DevOps
Schaffe eine kollaborative Umgebung.
Automatisiere (fast) alles.
Beobachte kontinuierlich die Ergebnisse.
Fördere ständige Verbesserung.
Habe keine Angst du scheitern. Lerne daraus.
Dein Kunde steht im Mittelpunkt.
Dev vs. Ops Mentalität durchbrechen.
Gemeinsames Verständnis schaffen.
Die richtige Automationstrategie finden.
Nicht in Tools verlieren.
Verantwortung an Teams übergeben.
Andrew Clay Shafer — What is DevOpsand why should you care?
Infrastructure as code (IaC) uses DevOps methodology and versioning with a descriptive model to define and deploy infrastructure, such as networks, virtual machines, load balancers, and connection topologies.
Just as the same source code always generates the same binary, an IaC model generates the same environment every time it deploys.learn.microsoft.com
Configuration as code (CAC) is managing configuration resources in your source repository. You treat your application config resources as versioned artifacts.
By managing your application environment in tandem with your application code, you gain the same benefits you get with your code.www.cloudbees.com
Hoher Standardisierungsgrad
Historie über Versionskontrolle
Einfache Rollbacks
Skalierbarkeit
Wiederholbarkeit
Wiederverwendbarkeit
Hoher Initialaufwand
Benötigte Skills
Keine Ad-Hoc Änderungen
Komplexität bei großen Umgebungen
Versionierungssystem verwenden
Alles in Code umsetzen
Idempotenz
Modulare Codestruktur
Testen, testen, testen


Netzwerk
ASA, Cat9k, Nexus9k
Compute
Hyperflex, Flexpod
Virtual
EVE-NG, ESXi, Docker
Apps
Netbox, Graylog, Zabbix(?), Vault, AD, DNS, DHCP, CA
Source of Truth
Netbox
Versionierung
Gitlab
CI/CD
Gitlab
Secret Management
Hashicorp Vault
Container
Docker, Hashicorp Packer
Configuration
Ansible, Python, Powershell
Verwende eine Source of Truth
Dokumentation (in Git)
Abhängigkeiten definießen
KISS - Keep it simple stupid
DRY - Don't repeat yourself
Developer+Style Guides
Versionsverwaltung nutzen



---
all:
children:
lab:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
shbnlab-do01:
docker:
hosts:
shbnlab-do01:
gitlab_runner:
hosts:
shbnlab-do01:
shbnlab-do02:
netbox_docker:
hosts:
shbnlab-do01:
switches:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
Übersicht bzw. Gruppe aller Endpunkte.
---
all:
children:
lab:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
shbnlab-do01:
docker:
hosts:
shbnlab-do01:
gitlab_runner:
hosts:
shbnlab-do01:
shbnlab-do02:
netbox_docker:
hosts:
shbnlab-do01:
switches:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
Netbox Hosts auf Docker.
---
all:
children:
lab:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
shbnlab-do01:
docker:
hosts:
shbnlab-do01:
gitlab_runner:
hosts:
shbnlab-do01:
shbnlab-do02:
netbox_docker:
hosts:
shbnlab-do01:
switches:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
Alle Switches.
---
all:
children:
lab:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
shbnlab-do01:
docker:
hosts:
shbnlab-do01:
gitlab_runner:
hosts:
shbnlab-do01:
shbnlab-do02:
netbox_docker:
hosts:
shbnlab-do01:
switches:
hosts:
shbnlab_core:
dc-n5k-01:
dc-n5k-02:
...
stages:
- build
- test
- staging
- deploy
include:
- template: Security/SAST.gitlab-ci.yml
...
CI Pipeline verwenden
Linting
Containerimages als Artifacts ablegen
...
stages:
- build
- test
- staging
- deploy
include:
- template: Security/SAST.gitlab-ci.yml
...
Testen, testen, testen
EVE-NG als Testplattform für virtualisierte Cisco Komponenten
Testergebnisse speichern
...
stages:
- build
- test
- staging
- deploy
include:
- template: Security/SAST.gitlab-ci.yml
...
Staging, dann Production
Rollout in Produktion nur von befugten Personen
Nutzung der CD Lösung für Berechtigungskonzept
Alarmierung bei Schwellwertüberschreitungen
Letzte Commits über Alarmmeldungen kommunizieren
Rollbacks über IaC Pipeline durchführen



---
all:
hosts:
dnspublic.domain.com
children:
linux:
hosts:
web1.domain.local:
web2.domain.local:
db1.domain.local:
db2.domain.local:
webservers:
hosts:
web1.domain.local:
web2.domain.local:
databases:
hosts:
db1.domain.local:
db2.domain.local:
dc-emea:
hosts:
web1.domain.local:
db1.domain.local:
dc-asia:
hosts:
web2.domain.local:
db2.domain.local:
Ein ungruppierter externer DNS-Server.
---
all:
hosts:
dnspublic.domain.com
children:
linux:
hosts:
web1.domain.local:
web2.domain.local:
db1.domain.local:
db2.domain.local:
webservers:
hosts:
web1.domain.local:
web2.domain.local:
databases:
hosts:
db1.domain.local:
db2.domain.local:
dc-emea:
hosts:
web1.domain.local:
db1.domain.local:
dc-asia:
hosts:
web2.domain.local:
db2.domain.local:
Alle Linux Server in der Umgebung.
---
all:
hosts:
dnspublic.domain.com
children:
linux:
hosts:
web1.domain.local:
web2.domain.local:
db1.domain.local:
db2.domain.local:
webservers:
hosts:
web1.domain.local:
web2.domain.local:
databases:
hosts:
db1.domain.local:
db2.domain.local:
dc-emea:
hosts:
web1.domain.local:
db1.domain.local:
dc-asia:
hosts:
web2.domain.local:
db2.domain.local:
Nur die Webserver.
---
all:
hosts:
dnspublic.domain.com
children:
linux:
hosts:
web1.domain.local:
web2.domain.local:
db1.domain.local:
db2.domain.local:
webservers:
hosts:
web1.domain.local:
web2.domain.local:
databases:
hosts:
db1.domain.local:
db2.domain.local:
dc-emea:
hosts:
web1.domain.local:
db1.domain.local:
dc-asia:
hosts:
web2.domain.local:
db2.domain.local:
Nur die Server im EMEA Rechenzentrum.
---
all:
hosts:
dnspublic.domain.com
children:
linux:
hosts:
web1.domain.local:
web2.domain.local:
db1.domain.local:
db2.domain.local:
webservers:
hosts:
web1.domain.local:
web2.domain.local:
databases:
hosts:
db1.domain.local:
db2.domain.local:
dc-emea:
hosts:
web1.domain.local:
db1.domain.local:
dc-asia:
hosts:
web2.domain.local:
db2.domain.local:











