Deployment
Web-Anwendung mit PTR manuell ausrollen
Wechsel in den Branch den du ausrollen willst und führe aus:
bin/ptr build
bin/ptr publish
bin/ptr deploy
Feature-Branch ausrollen
TODO siehe https://issues.svc.b5c.eu/browse/NIT-393
Deployment einer Web-Anwendung initial konfigurieren
In dieser Schritt-für-Schritt Anleitung gehen wir davon aus, dass du einen beliebigen Branch einer
Web-Anwendung auf einem Hostsystem deployen willst. In diesem Beispiel wollen wir den Branch
customer/standard
des Nueprice Projekts auf das Hostsystem wcp09.node.b5c.eu
deployen und unter der Domain
customer-standard.nueprice.app.b5c.eu
verfügbar machen.
Hierzu legen wir die Domain zunächst an (bitte unseren Administrator fragen).
Das Deployment erfolgt mit dem Orchestrierungswerkzeug Ansible. Die
Deployment-Konfiguration wird in dem Branch abgelegt, den wir deployen wollen. Die gesamte Deployment Konfiguration
befindet sich dort im Ordner ansible/inventories/<BRANCH>/
.
Note
Für den Branch customer/standard
lautet der Zielordner: ansible/inventories/customer/standard/
(standard
ist in diesem Fall ein Unterordner von customer
).
Zunächst spezifizieren wir auf welchen Hosts der Branch deployed werden soll. Hierzu legen wir die Datei
ansible/inventories/customer/standard/hosts.yml
mit folgendem Inhalt an:
---
all:
hosts:
wcp09.node.b5c.eu:
...
(TODO: was bedeutet all
?)
Anschließend erstellen wir den Ordner ansible/inventories/customer/standard/host_vars/
und legen dort
für jeden Host den wir bespielen wollen eine Konfigurationsdatei mit den notwendigen Informationen ab.
Für unser Beispiel erstellen wir die Datei ansible/inventories/customer/standard/host_vars/wcp09.node.b5c.eu.yml
.
Note
Die Datei wcp09.node.b5c.eu.yml
enthält sensible Daten wie Zugangsdaten und
muss daher als verschlüsselte Datei erstellt werden. Siehe hierzu Ansible-Vault.
Verschlüsselte Datei erstellen mit folgendem Befehl: bin/ptr exec ansible-vault create ansible/inventories/customer/standard/host_vars/wcp09.node.b5c.eu.yml
Zu ersetzen sind insbesondere die Werte für:
<BRANCH>
<APPKEY>
<PUSHERAPPSECRET>
<DOMAIN>
<DBPASSWORD>
<MAILPASSWORD>
---
ansible_user: webmaster
docker_containers:
- name: nueprice-b5c-laravel-<BRANCH>
env:
APP_CUSTOMER: Standard
APP_KEY: <APPKEY>
APP_URL: https://<DOMAIN>
BROADCAST_DRIVER: pusher
CACHE_DRIVER: redis
CACHE_PREFIX: nueprice-b5c-laravel-<BRANCH>
DB_CONNECTION: pgsql
DB_DATABASE: nueprice-b5c-laravel-<BRANCH>
DB_HOST: wcp-postgresql
DB_PASSWORD: <DBPASSWORD>
DB_PORT: 5432
DB_USERNAME: nueprice-b5c-laravel-<BRANCH>
LETSENCRYPT_EMAIL: hostmaster@big5.de
LETSENCRYPT_HOST: <DOMAIN>
LOG_CHANNEL: errorlog
LOG_LEVEL: info
MAIL_DRIVER: smtp
MAIL_ENCRYPTION: ssl
MAIL_FROM_ADDRESS: noreply@nueprice.com
MAIL_FROM_NAME: nueprice
MAIL_HOST: mail.your-server.de
MAIL_PASSWORD: <MAILPASSWORD>
MAIL_PORT: 995
MAIL_USERNAME: noreply@nueprice.com
PUSHER_APP_ID: pricing2go
PUSHER_APP_KEY: pricing2go
PUSHER_APP_SCHEME: http
PUSHER_APP_SECRET: <PUSHERAPPSECRET>
QUEUE_CONNECTION: redis
QUEUE_DRIVER: redis
REDIS_HOST: nueprice-b5c-redis-<BRANCH>
VIRTUAL_HOST: <DOMAIN>
image: docker-registry.svc.b5c.eu/b5c/nueprice:customer-standard
labels:
eu.b5c.wcp.postgresql-credentials: nueprice-b5c-laravel-<BRANCH>:<DBPASSWORD>
networks:
- name: nueprice-b5c-redis-<BRANCH>
- name: wcp-nginx
- name: wcp-postgresql
# gibt an ob das image auf dem Hostsystem neu gezogen werden soll
pull: true
restart_policy: unless-stopped
volumes:
- nueprice-b5c-laravel-<BRANCH>-storage:/var/www/html/storage:rw
- name: nueprice-b5c-redis-<BRANCH>
command: --appendonly yes
image: redis:5
networks:
- name: nueprice-b5c-redis-<BRANCH>
restart_policy: unless-stopped
volume:
- nueprice-b5c-redis-<BRANCH>:/data:rw
docker_networks:
- name: nueprice-b5c-redis-<BRANCH>
driver: bridge
docker_volumes:
- name: nueprice-b5c-laravel-<BRANCH>-storage
- name: nueprice-b5c-redis-<BRANCH>