SlideShare ist ein Scribd-Unternehmen logo
1 von 66
Richard Attermeyer 
OPITZ CONSULTING Deutschland GmbH 
Vagrant, Puppet, Docker für 
Entwickler und Architekten
Ihr Sprecher 
Richard Attermeyer 
richard.attermeyer@opitz-consulting.com 
twitter/attermr 
github/rattermeyer 
blog.devopsarchitect.de / www.thecattlecrew.com
Agenda
High-Level Überblick
High-Level Überblick 
Entwicklung + Continuous 
Delivery
High-Level Überblick 
Entwicklung + Continuous 
Delivery 
VMs, Config Mgmt, Container
Los geht‘s
DevOps 
Kultur- und Prozesswandel 
Wir haben noch nicht alle Antworten 
Umfasst unterschiedliche Gruppen 
Name ist neu 
Mehr Firmen beschäftigen sich damit
Continuous Delivery 
Sammlung von Techniken, Prozessen und 
Werkzeugen, die den Softwarelieferprozess 
verbessern
Bildquelle / URL 
Aber womit anfangen?
Dauer bis Arbeitsumgebung steht
Dauer bis Arbeitsumgebung steht 
Dauer bis Änderung in 
Arbeitsumgebung verteilt
Dauer bis Arbeitsumgebung steht 
Dauer bis Änderung in 
Arbeitsumgebung verteilt 
Versionierung von 
Arbeitsumgebungen
Dauer bis Arbeitsumgebung steht 
Dauer bis Änderung in 
Arbeitsumgebung verteilt 
Versionierung von 
Arbeitsumgebungen 
„Works on my machine“
Virtuelle Maschinen
Lösungsmöglichkeit 
Golden Image
Aber:
Golden Image: Probleme 
 Groß 
 Verteilung dauert 
 Einfaches Customizing schwierig 
 Viele verschiedene Konfigurationen 
 Jede kleine Änderung erzeugt direkt große Datenmenge 
und komplette Re-Installation 
 Keine Zusammenarbeit 
 Versionierung schwierig
Und jetzt?
Lösungsmöglichkeit 
Development environments 
made easy.
Entwickler-Workflow 
> git clone https://gh.com/rattermeyer/jenkins-in-a-box.git* 
> cd jenkins-in-a-box 
> vagrant up 
* git clone https://github.com/rattermeyer/jenkins-in-a-box.git
Vagrant: Vagrantfile 
VAGRANTFILE_API_VERSION = "2" 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
config.vm.box = "phusion/ubuntu-14.04-amd64" 
config.vm.provider "virtualbox" do |vb| 
vb.customize ["modifyvm", :id, "--memory", "1024"] 
vb.customize ["modifyvm", :id, "--cpus", "1"] 
end 
config.vm.provision "puppet" do |puppet| 
puppet.manifests_path = "puppet/manifests" 
puppet.manifest_file = "site.pp" 
puppet.module_path = "puppet/modules" 
puppet.options = "--verbose --debug" 
end 
config.vm.network "private_network", ip: "192.168.33.10" 
end
Base Box 
 Vorgefertigtes Vagrant VM image, ready-to-run 
 Eigene Erstellung möglich 
 Base Box ist Basis für weiteres Provisioning
Provisioning 
Projekt: 
Ubuntu Base 
Provisioning 
Spezifische 
VM 
Projekt: 
Ubuntu 
Base 
Provisioning 
Tomcat 
JDK 
IDE 
Entwicklungs-umgebung
Provisionierung 
Hohe 
Flexibilität 
Lange Dauer 
Provisioning 
Geringe 
Flexibilität 
Kurze 
Provisionierungs-dauer
Zusammenfassung 
 Viele vorgefertigte Images 
siehe Vagrant Cloud und Vagrantbox.es . 
 Vagrantfiles. 
Aufsetzen der Box bei Initialisierung 
 Maschinen-Schnappschüsse als Vagrant Box file 
(Verteilung und Austausch) 
 Feinabstimmung der VM Parameter 
RAM, CPU, APIC... 
 Integration mit CM Werkzeugen 
Puppet, Chef, Ansible, Salt
Puppet / Config Management
Wie kann Puppet helfen? 
 Transparenz 
 Systemdefinition an zentraler Stelle 
 Systemdefinition ist klar strukturiert und verständlich 
 Reporting über Änderungen 
 Automatisierung 
 Systemaufbau „auf Knopfdruck“ 
 Nicht nur initial, sondern über den ganzen Lifecycle 
 Reproduzierbarkeit 
 Systemaufbau ist durch Definitionsdatei zuverlässig reproduzierbar 
 Konfigurationsänderungen sind sichtbar und bei Bedarf revidierbar 
 Änderungen sind versionierbar
Arbeitsablauf mit Puppet 
Grundidee: 
„Beschreibe das Zielsystem, Puppet kümmert sich um den Weg dahin“ 
Resource 
Definition 
Reporting apply --noop 
apply
Deklarativ 
Infrastructure-as-Code
Deklaration einer Ressource 
Wichtigste Ressourcetypen 
 File 
 Package 
 Service 
 Außerdem: exec, user, group, 
notice 
file { "/var/tmp/foo": 
ensure => present, 
owner => "ec2-user", 
group => "ec2-user", 
}
Klassen 
 Zur Gruppierung 
zusammenhängender 
Ressourcen 
 Klassen können auch 
parametriert werden 
 Aber: Jede Klasse wird pro 
Knoten nur einmal instanziiert! 
class ntp { 
package { "ntp": 
ensure => present, 
} 
service { "ntp": 
ensure => running, 
require => Package["ntp"], 
} 
}
Module 
 Einheitliche Struktur und Kapsel 
für ein Feature 
 Module in Puppets Modulepath 
können direkt eingebunden 
werden 
 Über puppet modules können 
Module von PuppetForge 
geladen werden 
<name> 
manifests/ 
init.pp 
… 
files/ 
tests/ 
templates 
lib/
Infrastructure-as-Code 
package { 'curl': 
} 
class { '::java' : 
} 
include profiles::jenkinsmaster 
include ssh::client 
class profiles::jenkinsmaster ( 
$lts = true 
) { 
class { 'jenkins': 
lts => $lts, 
install_java => false, 
} 
include jenkins::master 
create_resources('jenkins::plugin', 
hiera_hash('jenkinsmaster::plugins')) 
}
Deklarativ 
Versionskontrolle 
Teilen von Modulen
Zurück zu Vagrant
Use Cases?
Entwicklungsumgebung
Entwicklungsumgebung 
< 5 Maschinen
Entwicklungsumgebung 
< 5 Maschinen 
„Resourcenhungrig“
Mehr unabhängige VMs? 
Build Once Run Anywhere?
Bildquelle / URL 
Build Ship Run
BSD Jails / Solaris Zones 
Linux Containers 
Docker Container / Images
App A App B 
Gast BS Gast BS 
Hypervisor 
Host BS 
App A App B 
Docker Engine 
Hypervisor 
Host BS 
Virtuelle 
Maschinen 
Container
docker run –it ubuntu bash
Dockerfile 
FROM rattermeyer/ubuntu-jdk:1.0 
maintainer richard.attermeyer@gmail.com 
ENV PROJECT_VERSION 0.0.1-SNAPSHOT 
ENV PROJECT_NAME todo-list-backend 
RUN mkdir /opt/${PROJECT_NAME} 
ADD ${PROJECT_NAME}-${PROJECT_VERSION}.jar /opt/${PROJECT_NAME}/ 
EXPOSE 8080 
ENTRYPOINT java -jar /opt/${PROJECT_NAME}/${PROJECT_NAME}- 
${PROJECT_VERSION}.jar
Zusammenfassung 
 Leichtgewichtig 
Docker Images sind viel leichtgewichtiger als volle VMs. Start 
dauert Sekunden anstatt wenige Minuten. Zu verteilende 
Images i.d.R. kleiner (nur Delta, neuer FS Layer) 
 Versionskontrolle der Images 
Daher einfacheres Handling von Builds. Und damit auch 
geeigneter für eine Continuous Delivery Pipeline 
 Lots of images (again)
Use Cases, Kosten und Nutzen
CD Build Agent / Slave 
Jenkins / GO CD 
Source Code 
Puppet / Java / 
Schemaverwaltung 
Entwicklung 
Vagrant 
Continuous Delivery 
Pipeline 
Jenkins / GO CD 
Test 
Docker / Vagrant 
Produktion 
Docker / VM 
Puppet
Docker 
Use Case Aufwand / Nutzen 
 Leichtgewichtige VMs 
 Statisch, homogene 
Umgebungen 
 Isolation von mehreren 
Slaves im CD Prozess 
 Gut für Microservices 
Verteile nicht das war / ear 
sondern den ganzen 
Container 
 Spring Boot, DropWizard, self 
contained deployment 
 Flache Lernkurve 
 Recht schnell guter Nutzen 
für Continuous Delivery 
 Betrieb noch mit Aufwand 
verbunden
Vagrant 
Use Case Aufwand / Nutzen 
 Entwicklerumgebung 
(Entwicklung in the Box inkl. 
IDE) 
 Testgrid (auch für CD) für 
verschiedene 
Betriebssysteme 
 Ubuntu, RedHat, Windows 
 CM Tool für einheitliches 
Provisioning über 
unterschiedliche OS 
 Homogene Umgebung 
 Einfach, Shell / Ansible Provisioning 
 Flache Lernkurve 
 Schnell guter Nutzen 
 Test Grid / Unterschiedliche 
Umgebungen 
 Schwer. Erfordert CM Know-how 
 Hoher Aufwand Planung 
 Wenige (Inhouse-)Projekte haben 
diese Anforderungen
Puppet 
Use Case Aufwand / Nutzen 
 Management status-behafteter 
Umgebungen 
 Abstraktion von Resourcen / 
Distributionen 
 Nutzung in bestehenden 
Prozessen 
 Hohe Lernkurve 
 Strategische Entscheidung 
 Schwierig: Unterschiedliche 
Umgebungen (Debian vs. RedHat) 
 Gute Module finden / selber entwickeln 
aufwändig 
 Einfacher: Homogene Umgebung 
 Aber warum dann nicht ansible? 
 Nützlich: In Kombination etwa mit 
Docker 
 Konfiguration des Hosts mit Puppet 
 Guests: Docker Container
Bildquelle / URL 
Ausblick
Entwicklungsumgebungen 
 Vagrant 
 Fig: Für Docker Umgebungen 
 Vortex: nodejs basiert 
Ecosystem 
 Vagrant Plugins 
 Vagrant Cloud 
 Vagrant Jenkins Plugin 
Config Management 
 Puppet 
 Chef 
 Ansible, Saltstack 
Ecosystem 
 Puppet Forge 
 Chef Recipes 
 Ansible Galaxy 
 … 
Containerization 
 Docker 
 Linux Container 
 OpenVZ 
Ecosystem 
 CoreOS 
 Maestro-ng, fig, 
 Consul, SkyDns, SkyDock, Serf 
 Kubernetes
Viele neue Projekte
Viele neue Projekte 
Wenig Erfahrungen im 
Enterprise Umfeld
Viele neue Projekte 
Wenig Erfahrungen im 
Enterprise Umfeld 
Heute Hip, morgen out
DevOps und CD wichtig
DevOps und CD wichtig 
Einzelne Aspekte gut 
verstanden
DevOps und CD wichtig 
Einzelne Aspekte gut 
verstanden 
Nichts tun: Keine Option
Es gibt viel zu tun: 
Packen wir‘s an
Bildquelle / URL 
Fragen?
Demo?
Demo 
 Vagrant startet docker host 
 Docker: Sonar, Nexus, Git-Server, Jenkins-Master, Jenkins- 
Slave 
 Jenkins-Master: Provisioniert mit Puppet
Kontakt 
Richard Attermeyer 
Senior Solution Architect 
OPITZ CONSULTING GmbH 
Kirchstr. 6 | 51647 Gummersbach 
Phone: +49 173 727 9004 
Mail: richard.attermeyer@opitz-consulting.com 
Twitter: @attermr 
Blog: blog.devopsarchitect.de 
youtube.com/opitzconsulting 
@OC_WIRE 
slideshare.net/opitzconsulting 
xing.com/net/opitzconsulting
Fotoreferenzen 
„Computer Problems“ by CollegeDegrees360 is licensed under CC BY 2.0 
Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported 
License. 
“Crossroads” by Carsten Tokmit is licensed under CC BY-SA 2.0 
“Gucker” by H.P. Brinkmann is licensed under CC BY 2.0

Weitere ähnliche Inhalte

Was ist angesagt?

Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Dockergedoplan
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumNicholas Dille
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenNicholas Dille
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...B1 Systems GmbH
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows ContainerThomas Wilhelm Wiefel
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Tobias Schneck
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayTobias Schneck
 
Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Govinda Fichtner
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Gitpaultcochrane
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker ContainerAndreas Koop
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015Georg Öttl
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 

Was ist angesagt? (20)

Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Vagrant
VagrantVagrant
Vagrant
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony Day
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
 
Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 

Andere mochten auch

Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenVirtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenMarkus Zapke-Gründemann
 
Vagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyVagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyGeronimo Orozco
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS ProgrammierungMarkus Leutwyler
 
Griffon In Front Grails In Back
Griffon In Front Grails In BackGriffon In Front Grails In Back
Griffon In Front Grails In BackJim Shingler
 
RightScale Webinar: Best Practices: Software Development Strategies Using Win...
RightScale Webinar: Best Practices: Software Development Strategies Using Win...RightScale Webinar: Best Practices: Software Development Strategies Using Win...
RightScale Webinar: Best Practices: Software Development Strategies Using Win...RightScale
 
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Michał Ćmil
 
Wuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleWuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleAndrey Hihlovsky
 
Build And Automation
Build And AutomationBuild And Automation
Build And AutomationRajesh Kumar
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGR8Conf
 
Ansible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIAnsible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIJoel W. King
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration ManagementRajesh Kumar
 
Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2dotCloud
 
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05dotCloud
 
Dockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at RackspaceDockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at RackspacedotCloud
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Puppet
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungMario Müller
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with dockerRuoshi Ling
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtMark Waite
 

Andere mochten auch (20)

Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenVirtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
 
Vagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easyVagrant and puppet: Deployment made easy
Vagrant and puppet: Deployment made easy
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS Programmierung
 
Griffon In Front Grails In Back
Griffon In Front Grails In BackGriffon In Front Grails In Back
Griffon In Front Grails In Back
 
RightScale Webinar: Best Practices: Software Development Strategies Using Win...
RightScale Webinar: Best Practices: Software Development Strategies Using Win...RightScale Webinar: Best Practices: Software Development Strategies Using Win...
RightScale Webinar: Best Practices: Software Development Strategies Using Win...
 
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!
 
Wuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleWuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with Gradle
 
Cruise control
Cruise controlCruise control
Cruise control
 
Build And Automation
Build And AutomationBuild And Automation
Build And Automation
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
 
Ansible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACIAnsible Tower | Docker | Cisco ACI
Ansible Tower | Docker | Cisco ACI
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration Management
 
Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2
 
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05
Dockerfile Basics | Docker workshop #2 at twitter, 2013-11-05
 
Dockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at RackspaceDockerfile basics | docker workshop #1 at Rackspace
Dockerfile basics | docker workshop #1 at Rackspace
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Tech Talk - Vagrant
Tech Talk - VagrantTech Talk - Vagrant
Tech Talk - Vagrant
 

Ähnlich wie Vagrant, Puppet, Docker für Entwickler und Architekten

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Managementinovex GmbH
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im Betrieb
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im BetriebContinuous Lifecycle 2013: Testgetriebenes Arbeiten im Betrieb
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im BetriebAndreas Schmidt
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastrukturinovex GmbH
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerB1 Systems GmbH
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...inovex GmbH
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Wiest Simon
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 

Ähnlich wie Vagrant, Puppet, Docker für Entwickler und Architekten (20)

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im Betrieb
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im BetriebContinuous Lifecycle 2013: Testgetriebenes Arbeiten im Betrieb
Continuous Lifecycle 2013: Testgetriebenes Arbeiten im Betrieb
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 

Mehr von OPITZ CONSULTING Deutschland

Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"OPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 

Mehr von OPITZ CONSULTING Deutschland (20)

OC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle LizenzierungOC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle Lizenzierung
 
OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"
 
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
 
OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"
 
OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"
 
10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 

Vagrant, Puppet, Docker für Entwickler und Architekten

  • 1. Richard Attermeyer OPITZ CONSULTING Deutschland GmbH Vagrant, Puppet, Docker für Entwickler und Architekten
  • 2. Ihr Sprecher Richard Attermeyer richard.attermeyer@opitz-consulting.com twitter/attermr github/rattermeyer blog.devopsarchitect.de / www.thecattlecrew.com
  • 5. High-Level Überblick Entwicklung + Continuous Delivery
  • 6. High-Level Überblick Entwicklung + Continuous Delivery VMs, Config Mgmt, Container
  • 8. DevOps Kultur- und Prozesswandel Wir haben noch nicht alle Antworten Umfasst unterschiedliche Gruppen Name ist neu Mehr Firmen beschäftigen sich damit
  • 9. Continuous Delivery Sammlung von Techniken, Prozessen und Werkzeugen, die den Softwarelieferprozess verbessern
  • 10. Bildquelle / URL Aber womit anfangen?
  • 12. Dauer bis Arbeitsumgebung steht Dauer bis Änderung in Arbeitsumgebung verteilt
  • 13. Dauer bis Arbeitsumgebung steht Dauer bis Änderung in Arbeitsumgebung verteilt Versionierung von Arbeitsumgebungen
  • 14. Dauer bis Arbeitsumgebung steht Dauer bis Änderung in Arbeitsumgebung verteilt Versionierung von Arbeitsumgebungen „Works on my machine“
  • 17. Aber:
  • 18. Golden Image: Probleme  Groß  Verteilung dauert  Einfaches Customizing schwierig  Viele verschiedene Konfigurationen  Jede kleine Änderung erzeugt direkt große Datenmenge und komplette Re-Installation  Keine Zusammenarbeit  Versionierung schwierig
  • 21. Entwickler-Workflow > git clone https://gh.com/rattermeyer/jenkins-in-a-box.git* > cd jenkins-in-a-box > vagrant up * git clone https://github.com/rattermeyer/jenkins-in-a-box.git
  • 22. Vagrant: Vagrantfile VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "phusion/ubuntu-14.04-amd64" config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--memory", "1024"] vb.customize ["modifyvm", :id, "--cpus", "1"] end config.vm.provision "puppet" do |puppet| puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "site.pp" puppet.module_path = "puppet/modules" puppet.options = "--verbose --debug" end config.vm.network "private_network", ip: "192.168.33.10" end
  • 23. Base Box  Vorgefertigtes Vagrant VM image, ready-to-run  Eigene Erstellung möglich  Base Box ist Basis für weiteres Provisioning
  • 24. Provisioning Projekt: Ubuntu Base Provisioning Spezifische VM Projekt: Ubuntu Base Provisioning Tomcat JDK IDE Entwicklungs-umgebung
  • 25. Provisionierung Hohe Flexibilität Lange Dauer Provisioning Geringe Flexibilität Kurze Provisionierungs-dauer
  • 26. Zusammenfassung  Viele vorgefertigte Images siehe Vagrant Cloud und Vagrantbox.es .  Vagrantfiles. Aufsetzen der Box bei Initialisierung  Maschinen-Schnappschüsse als Vagrant Box file (Verteilung und Austausch)  Feinabstimmung der VM Parameter RAM, CPU, APIC...  Integration mit CM Werkzeugen Puppet, Chef, Ansible, Salt
  • 27. Puppet / Config Management
  • 28. Wie kann Puppet helfen?  Transparenz  Systemdefinition an zentraler Stelle  Systemdefinition ist klar strukturiert und verständlich  Reporting über Änderungen  Automatisierung  Systemaufbau „auf Knopfdruck“  Nicht nur initial, sondern über den ganzen Lifecycle  Reproduzierbarkeit  Systemaufbau ist durch Definitionsdatei zuverlässig reproduzierbar  Konfigurationsänderungen sind sichtbar und bei Bedarf revidierbar  Änderungen sind versionierbar
  • 29. Arbeitsablauf mit Puppet Grundidee: „Beschreibe das Zielsystem, Puppet kümmert sich um den Weg dahin“ Resource Definition Reporting apply --noop apply
  • 31. Deklaration einer Ressource Wichtigste Ressourcetypen  File  Package  Service  Außerdem: exec, user, group, notice file { "/var/tmp/foo": ensure => present, owner => "ec2-user", group => "ec2-user", }
  • 32. Klassen  Zur Gruppierung zusammenhängender Ressourcen  Klassen können auch parametriert werden  Aber: Jede Klasse wird pro Knoten nur einmal instanziiert! class ntp { package { "ntp": ensure => present, } service { "ntp": ensure => running, require => Package["ntp"], } }
  • 33. Module  Einheitliche Struktur und Kapsel für ein Feature  Module in Puppets Modulepath können direkt eingebunden werden  Über puppet modules können Module von PuppetForge geladen werden <name> manifests/ init.pp … files/ tests/ templates lib/
  • 34. Infrastructure-as-Code package { 'curl': } class { '::java' : } include profiles::jenkinsmaster include ssh::client class profiles::jenkinsmaster ( $lts = true ) { class { 'jenkins': lts => $lts, install_java => false, } include jenkins::master create_resources('jenkins::plugin', hiera_hash('jenkinsmaster::plugins')) }
  • 40. Entwicklungsumgebung < 5 Maschinen „Resourcenhungrig“
  • 41. Mehr unabhängige VMs? Build Once Run Anywhere?
  • 42. Bildquelle / URL Build Ship Run
  • 43. BSD Jails / Solaris Zones Linux Containers Docker Container / Images
  • 44. App A App B Gast BS Gast BS Hypervisor Host BS App A App B Docker Engine Hypervisor Host BS Virtuelle Maschinen Container
  • 45. docker run –it ubuntu bash
  • 46. Dockerfile FROM rattermeyer/ubuntu-jdk:1.0 maintainer richard.attermeyer@gmail.com ENV PROJECT_VERSION 0.0.1-SNAPSHOT ENV PROJECT_NAME todo-list-backend RUN mkdir /opt/${PROJECT_NAME} ADD ${PROJECT_NAME}-${PROJECT_VERSION}.jar /opt/${PROJECT_NAME}/ EXPOSE 8080 ENTRYPOINT java -jar /opt/${PROJECT_NAME}/${PROJECT_NAME}- ${PROJECT_VERSION}.jar
  • 47. Zusammenfassung  Leichtgewichtig Docker Images sind viel leichtgewichtiger als volle VMs. Start dauert Sekunden anstatt wenige Minuten. Zu verteilende Images i.d.R. kleiner (nur Delta, neuer FS Layer)  Versionskontrolle der Images Daher einfacheres Handling von Builds. Und damit auch geeigneter für eine Continuous Delivery Pipeline  Lots of images (again)
  • 48. Use Cases, Kosten und Nutzen
  • 49. CD Build Agent / Slave Jenkins / GO CD Source Code Puppet / Java / Schemaverwaltung Entwicklung Vagrant Continuous Delivery Pipeline Jenkins / GO CD Test Docker / Vagrant Produktion Docker / VM Puppet
  • 50. Docker Use Case Aufwand / Nutzen  Leichtgewichtige VMs  Statisch, homogene Umgebungen  Isolation von mehreren Slaves im CD Prozess  Gut für Microservices Verteile nicht das war / ear sondern den ganzen Container  Spring Boot, DropWizard, self contained deployment  Flache Lernkurve  Recht schnell guter Nutzen für Continuous Delivery  Betrieb noch mit Aufwand verbunden
  • 51. Vagrant Use Case Aufwand / Nutzen  Entwicklerumgebung (Entwicklung in the Box inkl. IDE)  Testgrid (auch für CD) für verschiedene Betriebssysteme  Ubuntu, RedHat, Windows  CM Tool für einheitliches Provisioning über unterschiedliche OS  Homogene Umgebung  Einfach, Shell / Ansible Provisioning  Flache Lernkurve  Schnell guter Nutzen  Test Grid / Unterschiedliche Umgebungen  Schwer. Erfordert CM Know-how  Hoher Aufwand Planung  Wenige (Inhouse-)Projekte haben diese Anforderungen
  • 52. Puppet Use Case Aufwand / Nutzen  Management status-behafteter Umgebungen  Abstraktion von Resourcen / Distributionen  Nutzung in bestehenden Prozessen  Hohe Lernkurve  Strategische Entscheidung  Schwierig: Unterschiedliche Umgebungen (Debian vs. RedHat)  Gute Module finden / selber entwickeln aufwändig  Einfacher: Homogene Umgebung  Aber warum dann nicht ansible?  Nützlich: In Kombination etwa mit Docker  Konfiguration des Hosts mit Puppet  Guests: Docker Container
  • 53. Bildquelle / URL Ausblick
  • 54. Entwicklungsumgebungen  Vagrant  Fig: Für Docker Umgebungen  Vortex: nodejs basiert Ecosystem  Vagrant Plugins  Vagrant Cloud  Vagrant Jenkins Plugin Config Management  Puppet  Chef  Ansible, Saltstack Ecosystem  Puppet Forge  Chef Recipes  Ansible Galaxy  … Containerization  Docker  Linux Container  OpenVZ Ecosystem  CoreOS  Maestro-ng, fig,  Consul, SkyDns, SkyDock, Serf  Kubernetes
  • 56. Viele neue Projekte Wenig Erfahrungen im Enterprise Umfeld
  • 57. Viele neue Projekte Wenig Erfahrungen im Enterprise Umfeld Heute Hip, morgen out
  • 58. DevOps und CD wichtig
  • 59. DevOps und CD wichtig Einzelne Aspekte gut verstanden
  • 60. DevOps und CD wichtig Einzelne Aspekte gut verstanden Nichts tun: Keine Option
  • 61. Es gibt viel zu tun: Packen wir‘s an
  • 62. Bildquelle / URL Fragen?
  • 63. Demo?
  • 64. Demo  Vagrant startet docker host  Docker: Sonar, Nexus, Git-Server, Jenkins-Master, Jenkins- Slave  Jenkins-Master: Provisioniert mit Puppet
  • 65. Kontakt Richard Attermeyer Senior Solution Architect OPITZ CONSULTING GmbH Kirchstr. 6 | 51647 Gummersbach Phone: +49 173 727 9004 Mail: richard.attermeyer@opitz-consulting.com Twitter: @attermr Blog: blog.devopsarchitect.de youtube.com/opitzconsulting @OC_WIRE slideshare.net/opitzconsulting xing.com/net/opitzconsulting
  • 66. Fotoreferenzen „Computer Problems“ by CollegeDegrees360 is licensed under CC BY 2.0 Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License. “Crossroads” by Carsten Tokmit is licensed under CC BY-SA 2.0 “Gucker” by H.P. Brinkmann is licensed under CC BY 2.0

Hinweis der Redaktion

  1. Womit beschäftige ich mich: Aktuell: Early Life Support (3. Woche) für Projekt „Kleine Schwester“, daneben weiterhin Support „großer Bruder“ (seit über 3 Jahren) DevOps, Continuous Delivery, Softwareentwicklung im agilen Umfeld Business Development
  2. Präsentation für ca 60min
  3. Was ist die Agenda für den heutigen Vortrag? Kollegen fragen: Was verbirgt sich hinter Puppet, Docker? Wie passt das zusammen?
  4. Konzentration auf: Entwicklung + Continuous Delivery
  5. Auch wenn der Vortrag: Vagrant, Puppet und Docker heißt. Eigentlich geht es um die Ideen von Virtuellen Maschinen, Configuration Mgmt und Container am Beispiel der konkreten Technologien …
  6. Präsentation für ca 60min
  7. Motivation: Wer kann definieren was DevOps ist? Wir bekommen bestimmt so viele Antworten, wie Teilnehmer im Raum Wenn wir uns um Entwicklung und Continuous Delivery kümmern, dann kommen wir an den Begriffen DevOps + Continuous Delivery nicht vorbei. Daher hier ein paar Worte dazu: Der Begriff DevOps ist nicht einfach zu fassen. DevOps ist eine fachliche und kulturelle Bewegung. Sie wird fachlich von den beiden im Unternehmensumfeld getrennt betrachteten Organisationseinheiten /Communities Entwickler (Development) und den Systemadministratoren (Operations) getragen. Das Silodenken wird von Mitgliedern dieser Einheiten häufig als hinderlich betrachtet. Die Anhänger der DevOps-Bewegung wollen diese Kultur ändern und Entwicklung und Betrieb näher zusammen bringen. Beide Seiten können voneinander lernen. Beide sind zusammen verantwortlich dafür, dass eine Codeänderung schnell vom Commit einer Änderung bis in die Produktion gelangt.
  8. Unter Continuous Delivery versteht man eine konkrete Sammlung von Techniken, Prozessen und Werkzeugen, die den Softwareentwicklungsprozess verbessern. Und im Folgenden sollen einige Werkzeuge einmal näher betrachtet werden und wie diese Continuous Delivery unterstützen können.
  9. Motivation: Teams: eher selten, dass neue Kollegen eingephast werden müssen Aber: Consultant und MSA Herausforderungen
  10. Works on my machine: Abweichungen zw. Entwicklung und CI / Test / Produktionsumgebung führt dazu, dass Code entwickelt wird, der Spezifika der Umgebung berücksichtigt (etwa JDK Versionen, Library Versionen, …) Probleme treten dann erst beim CI zu Tage. Suche beginnt.
  11. A golden image is a template for a virtual machine (VM), virtual desktop, server or hard disk drive.  A golden image may also be referred to as a clone image or master image. Golden Image: Hat etwas mythisches: Meistens bringt das Probleme mit sich …
  12. Die Frage hat sich auch Mitchell Hashimoto gestellt. Während seines Studiums hat er als Freiberufler für verschiedene Kunden und Projekte gearbeitet und musste sich seine Entwicklungsumgebung immer neu zusammenstellen. Das verbrauchte Platz der 2010 noch etwas knapp auf Laptops zur Verfügung stand. Seine Antwort …
  13. Hier besteht Abwägungsaufwand: Im Netz finden Sie häufig nur Basisboxen (Bare Images) Das Provisionieren dauert relativ lange Es ist nicht ganz so einfach eine „saubere“ Basisbox zu erstellen
  14. Beispiel 4
  15. Beispiel 6
  16. Klassen werden mit include <classname> eingebunden
  17. Deklarativ: Beschreibe den Soll-Zustand der Umgebung Versionskontrolle: Puppet Scripts sind einfache Textfiles und als solche einfach versionierbar. Puppet von Hause etwas schwach was Abhängigkeitsmanagement angehet, aber mit librarian Puppet schon gut
  18. Eine Entwicklungsumgebung aus virtuellen Maschinen ist relativ Ressourcenhungrig, da sie immer den kompletten Betriebssystemstack benötigt.
  19. Eine Entwicklungsumgebung aus virtuellen Maschinen ist relativ Ressourcenhungrig, da sie immer den kompletten Betriebssystemstack benötigt.
  20. Eine Entwicklungsumgebung aus virtuellen Maschinen ist relativ Ressourcenhungrig, da sie immer den kompletten Betriebssystemstack benötigt.
  21. Build: Develop an app using Docker containers with any language and any toolchain. Ship: Ship the “Dockerized” app and dependencies anywhere - to QA, teammates, or the cloud - without breaking anything. Run: Scale to 1000s of nodes, move between data centers and clouds, update with zero downtime and more.
  22. Docker images are essentially a collection of files which include everything needed to run that process. This is everything from the OS packages and up. A docker image has a default process it runs when it is instantiated. This could be bash, to drop you into the terminal, or a web server so you can access it from the browser. To construct a docker image you use “docker build” which uses a docker configuration file. This file is usually about 5-6 lines of unix commands, such as apt-get. You can think of it as a bash script, but it is much simpler, and it is targeted towards the construction of image layers. Therefore, you might have a line for the base Operating System, then for installing Apache web-server, then a line for installing your programming language runtimes and then your code, or the process, that you want to run. The simplest docker image is “busybox,” which is 5Mb linux distribution, so it is very small. Layers Docker images are built up in layers. So, for instance, if you need to run WordPress, you would build the Ubuntu layer, add a layer for Apache2 web server, add a PHP layer and then a layer for the WordPress files. Lower layers can be re-used. We might take the PHP layer and layer on Drupal instead of WordPress, or update our WordPress layer with a newer version or Wordpress. Because we can re-use layers, we can make new docker images very cheaply. We can create a new docker image by changing just a single line of one file and we do not have to rebuild the whole stack. The beauty of docker images being “just files” means that the difference between two docker images is just a diff of the files they contain.
  23. Virtual Machines Each virtualized application includes not only the application - which may be only 10s of MB - and the necessary binaries and libraries, but also an entire guest operating system - which may weigh 10s of GB. Docker The Docker Engine container comprises just the application and its dependencies. It runs as an isolated process in userspace on the host operating system, sharing the kernel with other containers. Thus, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.