SlideShare a Scribd company logo
1 of 79
Download to read offline
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...
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...
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...
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...
Ansible im Kundenprojekt bei Miltenyi Biotec
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

More Related Content

What's hot

Git class german / english
Git class german / englishGit class german / english
Git class german / englishKevin Read
 
Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3
Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3
Apex Meetup Dresden 09/19 - Testing mit utPLSQL v3Samuel Nitsche
 
Aber das hat gestern noch funktioniert - Testing mit utPLSQL
Aber das hat gestern noch funktioniert - Testing mit utPLSQLAber das hat gestern noch funktioniert - Testing mit utPLSQL
Aber das hat gestern noch funktioniert - Testing mit utPLSQLSamuel Nitsche
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneVorname Nachname
 
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance ReloadedGregor Goldbach
 
Git vs SVN DevCon 2011
Git vs SVN DevCon 2011Git vs SVN DevCon 2011
Git vs SVN DevCon 2011Mario Müller
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Michael Whittaker
 
Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI Florian Bosselmann
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020Stephan Kaps
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 

What's hot (20)

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

Similar to PHP Deployment mit Ansible

DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployMark Lechtermann
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rexinovex GmbH
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsRamon Anger
 
PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?Sebastian Heuer
 
Python Installationen für Data Science
Python Installationen für Data SciencePython Installationen für Data Science
Python Installationen für Data ScienceDatamics
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkinsinovex GmbH
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsStephan Kaps
 
OSMC 2009 | PNP4Nagios by Jörg Linge
OSMC 2009 | PNP4Nagios by Jörg LingeOSMC 2009 | PNP4Nagios by Jörg Linge
OSMC 2009 | PNP4Nagios by Jörg LingeNETWAYS
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatengeKarin Patenge
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusOPEN KNOWLEDGE GmbH
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenAvarteq
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Martin Alfke
 
Herstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoHerstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoATIX AG
 

Similar to PHP Deployment mit Ansible (20)

DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps Teams
 
PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?PHP Summit 2013 - Make or Buy?
PHP Summit 2013 - Make or Buy?
 
Python Installationen für Data Science
Python Installationen für Data SciencePython Installationen für Data Science
Python Installationen für Data Science
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
OSMC 2009 | PNP4Nagios by Jörg Linge
OSMC 2009 | PNP4Nagios by Jörg LingeOSMC 2009 | PNP4Nagios by Jörg Linge
OSMC 2009 | PNP4Nagios by Jörg Linge
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Offline Arbeiten
Offline ArbeitenOffline Arbeiten
Offline Arbeiten
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - Voraussetzungen
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014Upgrading Puppet CommitterConf Essen 2014
Upgrading Puppet CommitterConf Essen 2014
 
Herstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhinoHerstellerunabhängige RZ Automatisierung mit orcharhino
Herstellerunabhängige RZ Automatisierung mit orcharhino
 

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
  • 5.
  • 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...
  • 9.
  • 10.
  • 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
  • 21.
  • 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...
  • 65.
  • 66. Ansible im Kundenprojekt bei Miltenyi Biotec
  • 67.
  • 68.
  • 69.
  • 77. Live Präsentation des MultiShop Wizard