Zum Inhalt

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>