Continuous Delivery in der Praxis



Ähnliche Dokumente
Continuous Delivery in der Praxis

Continuous Delivery mit Docker

Docker revisited - Leichtgewichtige Orchestrierung. Dr. Halil-Cem adesso AG - Dortmund

The linux container engine. Peter Daum

Build-Pipeline mit Jenkins

Docker für Java Entwickler

Platform as a Service (PaaS) & Containerization

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Dr. Roland Huß, ConSol* Docker für Java-Entwickler

DevOps bei den ID Build-Automatisierung statt Silo-Betrieb

Continuous Delivery mit OpenShift, 2nd Edition

Docker für Entwickler

Daniel Tschan Technischer Leiter. Continuous Delivery mit OpenShift

Anwendungsvirtualisierung in Containern mit Docker

Use AMW to deploy to OpenShift

Planung für Organisation und Technik

DEPLOYMENTS MIT DOCKER. Created by Wojciech Pietrzak

Dr. Roland Huß ConSol* Docker für Java Entwickler

Continuous Delivery in der Realität eines Großunternehmens

Erfolgreicher Ums9eg auf Git

CentOS 7 Secure And Portable Containers Made Easy Jürgen Brunk Köln,

Installation des GeoShop Redirector für Apache (Stand ) ================================================================

GIS Docker und Azure-Cloud. Neues aus der Entwicklung

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

OpenShift als Motor des kontinuierlichen Test- und Deployment Zyklus Referent: Jürgen Hoffmann, Red Hat

docker.io Secure And Portable Containers Made Easy Jürgen Brunk München,

Continuous Delivery mit OpenShift

Containisierung von Java Apps mit Docker

DOCKER IN PRACTICE. Matthias Zober EXXETA GmbH Leipzig

Brownbag Session Grundlagen Virtualisierung Von VM s und Containern

Python SVN-Revision 12

Container Hype. TODO : Vollflächiges Container Bild. Håkan Dahlström Source:

Continuous Database Integration mit Flyway

Ablösung von Control-M durch JobScheduler

Continuous Everything

Windows Server 2012 R2 Essentials & Hyper-V

JEAF Cloud Plattform Der Workspace aus der Cloud

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

Powermanager Server- Client- Installation

Uwe Baumann artiso Solutions

Einführung Git Interna Workflows Referenzen. Git. Fast Version Control System. Michael Kuhn

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

Installationsanleitung Laurus Projekte System (Aufgaben / Projekte mit Gantt Chart)

Docker Einführung - und warum Container so wichtig sind Thomas Bröll Principal Consultant DOAG Regio Stuttgart

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat

Continuous Delivery Kontinuierlich an die Pipeline andocken

Continuous Integration mit Jenkins

Virtual Unified Environments Infrastructure Service Installation und Lifecycle im Oracle Produktumfeld

Formular»Fragenkatalog BIM-Server«

DevOps in der Praxis. Alexander Pacnik

Spontan testen! Das eigene Test Lab, für jeden in der Cloud! Peter Kirchner. Microsoft Deutschland GmbH

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Automatisierte Einbindung von Windows Systemen in Bacula mit Hilfe von OPSI

Virtuelle Umgebungen mit Powershell verwalten Azure und der Rest der Virtualisierung. Holger Voges

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

Citrix Dazzle. Die Zukunft der XenApp Bereitstellung? Thomas Kötzing - Freiberufler, Analyst Microsoft MVP, Citrix CTP / ThomasKoetzing.

1 Installation QTrans V2.0 unter Windows NT4

End-to-End Agility Sind Sie schon agil genug? Mag. Christoph Leithner

Value Delivery and Customer Feedback

Container als Immutable Infrastructure. John M. Hutchison

End-to-End Automatisierung Mehr als Continuous Integration & Continuous Delivery

RESTful Web. Representational State Transfer

Pervasive.SQL ODBC Treiber. ab ABACUS er-Version Installationsanleitung

Deployment Deployment Seite 1 / 25

edu- sharing Update Anleitung

Bekannte Tools in einem agilen Ansatz. Frank Schwichtenberg SourceTalkTage 2013 Göttingen,

Platform as a Service (PaaS) Prof. Dr. Ch. Reich

Cloud-Provider im Vergleich. Markus

Consultant & Geschäftsführer, enpit consulting OHG ugb@enpit.de

Tanuki Service Wrapper 101. JVM Verwaltung mit der Community Edition. Alexander Pacnik Karlsruhe,

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

MySQL Installation. AnPr

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

VirtualBox und OSL Storage Cluster

Bewertung der Methoden zur Sicherung von virtuellen Maschinen (VMware, Hyper-V) Ein Erfahrungsbericht

Git in großen Projekten

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Alle Jahre wieder... Eckard Brandt. Regionales Rechenzentrum für Niedersachsen Eckard Brandt Gruppe Systemtechnik

Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012

IML Deployment Axel Hahn zuletzt geändert:

Wissenswertes über LiveUpdate

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Bootstrapping Ansible. Bengt Giger Informatikdienste ETH Zürich Client Delivery

OSL Storage Cluster und RSIO unter Linux Storage-Attachment und Hochverfügbarkeit in 5 Minuten

Zugriff auf die elektronischen Datenbanken

Anleitung zur Webservice Entwicklung unter Eclipse

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Isolierte Umgebungen für Python Anwendungen Teil 2. Christine Koppelt, Jürgen Schackmann, Stefan Seelmann

Zwei Wege zur automatisierten SW Verteilung Am Beispiel der Lösungen von Jungheinrich. Matthias Nischwitz,

Transkript:

Dr. Halil-Cem Gürsoy @hgutwit! adesso AG Continuous Delivery in der Praxis

Über mich Principal Architect @ adesso AG seit 15 Jahre Software-Entwicklung > davor in wissenschaftlichem Umfeld Verteilte Enterprise-Systeme Persistenz / Build & Deployment 2

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Agile Manifesto Principles

Continuous Integration Integration von Modulen Vielleicht auch Integrationstests Fokus ist Entwicklung, nicht Delivery Keine Infrastruktur, Life-Tests Viele manuelle Schritte 5

https://www.flickr.com/photos/striatic/2191404675/

Continuous Delivery Kontinuierliche Builds Artefakte werden vollständig durchgetestet Incl. automatisierte UAT, CAPT usw. Incl. Server-Setup und Infrastruktur Incl. Deployments Jeder Build wird potentiell produktiv gesetzt 7

Continuous Delivery Keine manuellen Eingriffe Keine manuellen Freigaben Automatische Prod-Deployments 8

https://www.flickr.com/photos/jpmartineau/501718334/

Docker LXC / Linux Container (noch) > cgroups, chroot, namespaces usw. Prozesse mit isolierter Umgebung (Netzwerk, FS usw.) Kernel Sharing Git-Like -Filesystem (AUFS) > Änderungen werden geschichtet > Schichten sind referenzierbar 12

VM - schnell 13 https://www.flickr.com/photos/ashleyswilkes/3863767875

Dockerfiles FROM ubuntu:precise MAINTAINER Halil-Cem Guersoy hcguersoy@gmail.com RUN apt-get install -y wget curl RUN apt-get install -y openjdk-7-jdk COPY./config.yaml /etc/myapp/config.yaml EXPOSE 8009 $ docker build t myrepo:5000/myubuntu:0.1. $ docker inspect myrepo:5000/myubuntu:0.1 $ docker push myrepo:5000/myubuntu:0.1 $ docker run i t myrepo:5000/myubuntu:0.1 /bin/bash $ docker ps -a 14

App Images Java Tomcat WebApp Dockerfile Puppet, Chef 15

App Container https://www.flickr.com/photos/matijagrguric/4437187539 16

Images für CD Basis Images Vererbung / Layering File System http://docs.docker.com/terms/layer/ App Image enthält zusätzlich nur Änderungen > Konfiguration & Applikation Jede Version wird nur 1x gebaut! 17

Images für CD 3588c05c7d24 Virtual Size: 510.5 MB Tags: cdwrkshp/java7-tc7:latest 7cd0471cb71e Virtual Size: 510.5 MB 54dc3c2d593c Virtual Size: 517 MB 094cc7c59c79 Virtual Size: 523.1 MB 688a08b73f44 Virtual Size: 523.1 MB 52e46ca36cf0 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-42 7cc63bc98af7 Virtual Size: 517 MB 8bf219561a14 Virtual Size: 523.1 MB ebe7ec7d34bb Virtual Size: 523.1 MB 23205cc10892 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-41 d420a23f980b Virtual Size: 517 MB 4afb0caceae6 Virtual Size: 523.1 MB aed914cc5e2c Virtual Size: 523.1 MB d17e5a80a367 Virtual Size: 523.1 MB Tags: angularjs-springmvc:1.1.0-40! 18

Container verbinden Mehrere Container benötigt > Datenbank, AppServer, WebServer, LB Container mit Links verbinden Oder Registry -Systeme > etcd, Serf usw. 19

Container Links docker run d P --name db42 docker run d P --name app42 --link db42:db --link [name]:[alias] Alias und Ports > in Umgebungsvariablen > in /etc/hosts Problem: Container verteilt auf mehrere Hosts 20

Container ansprechen Port Mapping auf Host Default Mapping oder vorgeben Expose im Dockerfile Isolierte Ports 10080:80 19990:9990 21

Infrastructure as Code Server für Container muss bereit gestellt werden CI-Systeme, Docker usw. muss installiert werden Puppet, Chef, Ansible usw.! service { $servicename : name => $servicename, ensure => running, enable => true, require => [File["/etc/init/$servicename.conf"]], subscribe => File[$config_file], } 23

CD + Docker Workflow - supertrivial mvn Repo Server Docker Registry Pull Image v 1.0.0 Docker Host Deploy Java App v 1.0.0 Get Artifact v 1.0.0 Push Image v 1.0.0 Build Java Project Build Docker Image Create & Start Docker Container Stop / Kill Container 24

Snapshots are Evil! https://www.flickr.com/photos/jdhancock/4071590385/

Promote! Deploy Dev Deploy Test Deploy UAT Deploy PP Deploy Prod 26

Jenkins nur ein C. Integration-Server CD Funktionalität über Plugins Plugins harmonieren nicht immer :-( 28

Docker mit Jenkins TODOs: > Images bauen, pullen, pushen > Container anlegen und starten > Container stoppen / löschen etc. Docker build step plugin > leider nicht ganz ausgereift 29

REST to the Rescue Docker bietet REST API Alle notwendigen Aktionen aufrufbar Integration in Jenkins via Shell / Scripting Client APIs für fast alle wichtigen Sprachen: http://docs.docker.com/reference/api/ remote_api_client_libraries/ 30

docker-py Kommt von Docker Python Standard auf Linux Einfache Client API Über Shell Exekution in Jenkins Container IDs in Properties-Files 31

docker-py def create_start_container(repository, image, tag, name, links): pull_container(repository, image, tag) cont_info = c.create_container(repository+"/"+image+":" + tag, name=name) print 'The ID is :', cont_info["id"] if args.verbose > 1: print "Container Informationen:", cont_info started = c.start(cont_info, publish_all_ports=true, links=links) print "Container gestartet ", cont_info["id"] return cont_info; 32

Noch mehr Plugins Parametrizied Trigger Plugin Build Pipeline Plugin Rebuild Plugin Artifact Resolver Plugin Artifact Promotion Plugin Jenkins Workflow Plugin 33

Jenkins Skalierung Docker zum Skalieren von Jenkins Jenkins Docker Plugin Slave Container on demand Spezialisierte Build-Container > DinD für Image Builds 35

http://www.flickr.com/photos/an_untrained_eye/6630719431

halil-cem.guersoy@adesso.de https://twitter.com/hgutwit http://www.flickr.com/photos/tcmorgan/7372944070