SlideShare ist ein Scribd-Unternehmen logo
Herzlich Willkommen bei
der PHP UserGroup!
PHP Usergroup Karlsruhe
06. April 2017
Michael Döhler, IntelliShop AG
PHP Deployment mit Ansible
PHP Usergroup Karlsruhe
06. April 2017
Michael Döhler
(@whataboutmd)
PHP, Java, C/C++
E-Commerce Expert
Head of Product & Development bei der
IntelliShop AG in Karlsruhe
Software Hersteller der
IntelliShop B2B Commerce Plattform
10.00 Uhr
Deployment is running...
PHP Deployment mit Ansible
Das deployen wir jetzt noch schnell!
Warte, lass mich überlegen....
Das deployen wir jetzt noch schnell!
Warte, lass mich überlegen....
Rsync anhaun, Cache leeren, Apache...
Das deployen wir jetzt noch schnell!
Warte, lass mich überlegen....
Rsync anhaun, Cache leeren, Apache...
Das wird ne lange Nacht...
PHP Deployment mit Ansible
PHP Deployment mit Ansible
Wir haben 100
Entwickler gefragt
wie sie deployen?
GITFTP
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Wir entwickeln direkt auf dem Server. 4
Ich nutze FTP. 15
Das mache ich mit meiner Script Sammlung. 37
Capistrano! 9
Mit GIT Hooks, voll fancy oder? 13
Rocketeer, Deployer... 8
Das macht der Jenkins für mich. 14
Deployments in 2017...
PHP Deployment mit Ansible
Deployments in 2017 sind...
Handgestrickte Script Sammlungen
Ad-Hoc und kurzfristig
Viel zu aufwendig
Abhängig vom Menschen
Nicht automatisiert
Nicht geplant
Nicht wiederholbar
Nicht skalierbar
Deployments in 2017 sind...
Handgestrickte Script Sammlungen
Ad-Hoc und kurzfristig
Viel zu aufwendig
Abhängig vom Menschen
Nicht automatisiert
Nicht geplant
Nicht wiederholbar
Nicht skalierbar
Deployments in 2017 sind...
Handgestrickte Script Sammlungen
Ad-Hoc und kurzfristig
Viel zu aufwendig
Abhängig vom Menschen
Nicht automatisiert
Nicht geplant
Nicht wiederholbar
Nicht skalierbar
Deployments in 2017 sind...
Handgestrickte Script Sammlungen
Ad-Hoc und kurzfristig
Viel zu aufwendig
Abhängig vom Menschen
Nicht automatisiert
Nicht geplant
Nicht wiederholbar
Nicht skalierbar
Deployments in 2017 sind...
Handgestrickte Script Sammlungen
Ad-Hoc und kurzfristig
Viel zu aufwendig
Abhängig vom Menschen
Zu kurz gedacht
Nicht automatisiert
Nicht geplant
Nicht wiederholbar
Nicht skalierbar
Nicht ganzheitlich
PHP Deployments the right way
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was ist wichtig beim Deployment von PHP Apps?
1.  „Deploybares“ Artefakt bauen
2.  Vollständige Übertragung & Verteilung des Artefakts
3.  Backup von allen Daten & Durchführung von Datenbank Migrationen
4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test
5.  Deployment via „Atomaren“ Switch auf das neue Release
6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Was man nicht machen sollte...
1.  ...zu wenig Zeit für das Deployment einplanen.
2.  ...die Wichtigkeit des Deployments unterschätzen.
3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht.
4.  Backup dauert jetzt zu lange, machen wir nicht.
5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward)
6.  Composer Abhängigkeiten werden je Umgebung installiert...
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Checkliste für das Deployment von PHP Apps
1.  Betrachtung über die gesamte Systemlandschaft anstellen
2.  Webserver Konfigurationen durchführen
3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen
4.  PHP Versions-Update & richtige PHP-Konfiguration
5.  PHP Extensions installieren, ggf. updaten
6.  (Op)Cache invalidieren, Cache-Folder löschen
7.  Smoke & Performance Tests durchführen
Deployment mit
Warum Ansible & Alternative Lösungen
à  Kein „Master“ Konzept
à  Keine Agents
à  Einfache Konfiguration in YAML
à  Sehr einfach zu lernen
Getting Started with Ansible*
brew install ansible
sudo pip install ansible
* Python auf Locale- & Remote-Maschinen
Ansible Konzepte
Playbooks
Roles
Inventory
Tasks
Modules
Handlers
Ansible Konzepte: Inventory
[loadbalancer]
168.92.82.91
[appserver]
168.92.82.92
168.92.82.93
[dbserver]
168.92.82.94
à Text Datei im INI-like Format mit gruppierten Hosts
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
Ansible Konzepte: Playbook
---
- hosts: loadbalancer
tasks:
- name: Install nginx webserver
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
3 hosts, assume 10 tasks....
Ansible Konzepte: Roles
---
- hosts: loadbalancer
roles:
- nginx
- hosts: appserver
roles:
- apache
- php
- symfony
à Roles sind in Komponenten gepackte Tasks & Notifiers
Ansible Konzepte: Struktur auf dem Dateisystem
Ansible Konzepte: Roles
---
- name: Install PHP
apt: name={{ item }} update_cache=yes state=latest
with_items:
- php5
- php5-curl
- php5-json
- php5-soap
- include: extensions.yml
à Roles beinhalten eine Reihe von Tasks, Handlers, Notifiers...
PHP Deployment mit Ansible
Ansible im Kundenprojekt bei Miltenyi Biotec
PHP Deployment mit Ansible
PHP Deployment mit Ansible
PHP Deployment mit Ansible
Ansible Tower
https://www.ansible.com/tower
Ansible Galaxy
https://galaxy.ansible.com/
https://github.com/servergrove/ansible-symfony2
Ansible Symfony
https://github.com/aligajani/ansible-playbooks-laravel-5
Ansible Laravel
https://github.com/rtuin/ansible-zendserver
Ansible Zend
http://www.ansistrano.com/
Anistrano
https://www.ansible.com/docker
Ansible Docker
Live Präsentation des MultiShop Wizard
www.intellishop.ag/karriere/jobs/
Vielen Dank!
www.de.intellishop.ag
www.intellishop-software.de
www.b2b-ecommerce.info

Weitere ähnliche Inhalte

PDF
Eine Stunde was mit Api First!
PDF
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
PPTX
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
PDF
Best Practices für TDD in JavaScript
PPTX
Continuous Delivery
PDF
Apex Meetup Stuttgart 2019 - Testing mit utPLSQL v3
PPTX
DOAG Regionaltreffen KA 01/19 - Testing mit utPLSQL
PDF
Migration zum Zend Framework 3
Eine Stunde was mit Api First!
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Best Practices für TDD in JavaScript
Continuous Delivery
Apex Meetup Stuttgart 2019 - Testing mit utPLSQL v3
DOAG Regionaltreffen KA 01/19 - Testing mit utPLSQL
Migration zum Zend Framework 3

Was ist angesagt? (20)

PDF
Git class german / english
PPTX
Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3
PPSX
Aber das hat gestern noch funktioniert - Testing mit utPLSQL
PDF
Kaps - Es muss nicht immer Kubernetes sein
PDF
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
PPTX
Testen mit Arquillian
PDF
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
PDF
Kaps - Continuous Deployment Roadmap
PDF
DevOps - Mehr Geschwindigkeit auf der Schiene
PDF
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
PDF
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
PDF
Perl Renaissance Reloaded
KEY
Git vs SVN DevCon 2011
PDF
Deployment
PDF
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
PDF
Continuous Integration / Deployment mit Jenkins CI
PDF
Gitlab
PDF
In den sicheren Hafen jax2020
PDF
Composer und TYPO3
PDF
Minenfeld IPv6
Git class german / english
Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3
Aber das hat gestern noch funktioniert - Testing mit utPLSQL
Kaps - Es muss nicht immer Kubernetes sein
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Testen mit Arquillian
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
Kaps - Continuous Deployment Roadmap
DevOps - Mehr Geschwindigkeit auf der Schiene
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
Perl Renaissance Reloaded
Git vs SVN DevCon 2011
Deployment
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Continuous Integration / Deployment mit Jenkins CI
Gitlab
In den sicheren Hafen jax2020
Composer und TYPO3
Minenfeld IPv6
Anzeige

Ähnlich wie PHP Deployment mit Ansible (6)

PDF
PHP Module als Rundum-Sorglos-Pakete entwickeln
PDF
Eine praktische Anleitung zur Auswahl eines CMS
PDF
Serverprovisioning in einer dynamischen Infrastruktur
PPT
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
PDF
Performancemessung, jetzt in echt
PDF
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
PHP Module als Rundum-Sorglos-Pakete entwickeln
Eine praktische Anleitung zur Auswahl eines CMS
Serverprovisioning in einer dynamischen Infrastruktur
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Performancemessung, jetzt in echt
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Anzeige

PHP Deployment mit Ansible

  • 1. Herzlich Willkommen bei der PHP UserGroup! PHP Usergroup Karlsruhe 06. April 2017
  • 2. Michael Döhler, IntelliShop AG PHP Deployment mit Ansible PHP Usergroup Karlsruhe 06. April 2017
  • 3. Michael Döhler (@whataboutmd) PHP, Java, C/C++ E-Commerce Expert Head of Product & Development bei der IntelliShop AG in Karlsruhe Software Hersteller der IntelliShop B2B Commerce Plattform 10.00 Uhr
  • 6. Das deployen wir jetzt noch schnell! Warte, lass mich überlegen....
  • 7. Das deployen wir jetzt noch schnell! Warte, lass mich überlegen.... Rsync anhaun, Cache leeren, Apache...
  • 8. Das deployen wir jetzt noch schnell! Warte, lass mich überlegen.... Rsync anhaun, Cache leeren, Apache... Das wird ne lange Nacht...
  • 11. Wir haben 100 Entwickler gefragt wie sie deployen? GITFTP
  • 12. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 13. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 14. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 15. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 16. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 17. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 18. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 19. Wir entwickeln direkt auf dem Server. 4 Ich nutze FTP. 15 Das mache ich mit meiner Script Sammlung. 37 Capistrano! 9 Mit GIT Hooks, voll fancy oder? 13 Rocketeer, Deployer... 8 Das macht der Jenkins für mich. 14
  • 22. Deployments in 2017 sind... Handgestrickte Script Sammlungen Ad-Hoc und kurzfristig Viel zu aufwendig Abhängig vom Menschen Nicht automatisiert Nicht geplant Nicht wiederholbar Nicht skalierbar
  • 23. Deployments in 2017 sind... Handgestrickte Script Sammlungen Ad-Hoc und kurzfristig Viel zu aufwendig Abhängig vom Menschen Nicht automatisiert Nicht geplant Nicht wiederholbar Nicht skalierbar
  • 24. Deployments in 2017 sind... Handgestrickte Script Sammlungen Ad-Hoc und kurzfristig Viel zu aufwendig Abhängig vom Menschen Nicht automatisiert Nicht geplant Nicht wiederholbar Nicht skalierbar
  • 25. Deployments in 2017 sind... Handgestrickte Script Sammlungen Ad-Hoc und kurzfristig Viel zu aufwendig Abhängig vom Menschen Nicht automatisiert Nicht geplant Nicht wiederholbar Nicht skalierbar
  • 26. Deployments in 2017 sind... Handgestrickte Script Sammlungen Ad-Hoc und kurzfristig Viel zu aufwendig Abhängig vom Menschen Zu kurz gedacht Nicht automatisiert Nicht geplant Nicht wiederholbar Nicht skalierbar Nicht ganzheitlich
  • 27. PHP Deployments the right way
  • 28. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 29. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 30. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 31. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 32. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 33. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 34. Was ist wichtig beim Deployment von PHP Apps? 1.  „Deploybares“ Artefakt bauen 2.  Vollständige Übertragung & Verteilung des Artefakts 3.  Backup von allen Daten & Durchführung von Datenbank Migrationen 4.  Bereitstellung einer Pre-Live Version & (Automatischer) Smoke-Test 5.  Deployment via „Atomaren“ Switch auf das neue Release 6.  Möglichkeit zum Rollback muss jederzeit gegeben sein
  • 35. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 36. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 37. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 38. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 39. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 40. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 41. Was man nicht machen sollte... 1.  ...zu wenig Zeit für das Deployment einplanen. 2.  ...die Wichtigkeit des Deployments unterschätzen. 3.  Testen brauchen wir nicht, haben wir ja alles auf QA gemacht. 4.  Backup dauert jetzt zu lange, machen wir nicht. 5.  Keine „Rollback“ Strategie zu haben (Rollback oder Roll-forward) 6.  Composer Abhängigkeiten werden je Umgebung installiert...
  • 42. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 43. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 44. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 45. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 46. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 47. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 48. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 49. Checkliste für das Deployment von PHP Apps 1.  Betrachtung über die gesamte Systemlandschaft anstellen 2.  Webserver Konfigurationen durchführen 3.  Datenbank Server, Search Server, Redis-Cluster, ... mit einbeziehen 4.  PHP Versions-Update & richtige PHP-Konfiguration 5.  PHP Extensions installieren, ggf. updaten 6.  (Op)Cache invalidieren, Cache-Folder löschen 7.  Smoke & Performance Tests durchführen
  • 51. Warum Ansible & Alternative Lösungen à  Kein „Master“ Konzept à  Keine Agents à  Einfache Konfiguration in YAML à  Sehr einfach zu lernen
  • 52. Getting Started with Ansible* brew install ansible sudo pip install ansible * Python auf Locale- & Remote-Maschinen
  • 55. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 56. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 57. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 58. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 59. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 60. Ansible Konzepte: Playbook --- - hosts: loadbalancer tasks: - name: Install nginx webserver apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started à YAML Datei um auf Hosts unterschiedliche Tasks anzuwenden
  • 61. 3 hosts, assume 10 tasks....
  • 62. Ansible Konzepte: Roles --- - hosts: loadbalancer roles: - nginx - hosts: appserver roles: - apache - php - symfony à Roles sind in Komponenten gepackte Tasks & Notifiers
  • 63. Ansible Konzepte: Struktur auf dem Dateisystem
  • 64. Ansible Konzepte: Roles --- - name: Install PHP apt: name={{ item }} update_cache=yes state=latest with_items: - php5 - php5-curl - php5-json - php5-soap - include: extensions.yml à Roles beinhalten eine Reihe von Tasks, Handlers, Notifiers...
  • 66. Ansible im Kundenprojekt bei Miltenyi Biotec
  • 77. Live Präsentation des MultiShop Wizard