Skip to content

Latest commit

 

History

History
118 lines (92 loc) · 4.86 KB

02_deployment.md

File metadata and controls

118 lines (92 loc) · 4.86 KB

Deployment und Betrieb

PuzzleTime kann wie die meisten Ruby on Rails Applikationen auf verschiedene Arten deployt werden. Folgende Umsysteme müssen vorgängig eingerichtet werden:

  • Ruby >= 2.2.2
  • Apache HTTPD
  • Phusion Passenger
  • PostgreSQL
  • Memcached
  • SSL Zertifikat (optional)
  • Sentry oder Airbrake/Errbit (optional)
  • Highrise CRM (optional)
  • Smallinvoice (optional)

Konfiguration

Um PuzzleTime mit den Umsystemen zu verbinden und zu konfigurieren, können folgende Umgebungsvariablen gesetzt werden. Werte ohne Default müssen in der Regel definiert werden.

Umgebungsvariable Beschreibung Default
RAILS_API_USER Benutzername für API HTTP basic auth
RAILS_API_PASSWORD Passwort für API HTTP basic auth
RAILS_DB_NAME Name der Datenbank puzzletime_[environment]
RAILS_DB_USERNAME Benutzername, um auf die Datenbank zu verbinden. -
RAILS_DB_PASSWORD Passwort, um auf die Datenbank zu verbinden. -
RAILS_DB_HOST Hostname der Datenbank 127.0.0.1
RAILS_DB_PORT Port der Datenbank -
RAILS_DB_ADAPTER Datenbank adapter postgresql
RAILS_SECRET_TOKEN Secret token für die Sessions (128 byte hex). Muss für jede laufende Instanz eindeutig sein. Generierbar mit rake secret -
RAILS_MEMCACHED_HOST Hostname des Memcache Dienstes localhost
RAILS_MEMCACHED_PORT Port des Memcache Dienstes 11211
RAILS_SERVE_STATIC_FILES Ob statische Dateien in der Produktivumgebung geserved werden sollen false
RAILS_AIRBRAKE_HOST Hostname der Airbrake/Errbit Instanz, an welche Fehler gesendet werden sollen. Falls diese Variable nicht gesetzt ist, werden keine Fehlermeldungen verschickt. -
RAILS_AIRBRAKE_PORT Port der Airbrake/Errbit Instanz 443
RAILS_AIRBRAKE_API_KEY Airbrake API Key der Applikation -
RAILS_HIGHRISE_URL Highrise App-URL: https://<Name der Firma/Organisation>.highrisehq.com -
RAILS_HIGHRISE_TOKEN Highrise API Key der Applikation (im Highrise: Account & Settings > My Info > API Token) -
RAILS_SMALL_INVOICE_TOKEN Smallinvoice API Key der Applikation -
RAILS_SMALL_INVOICE_REQUEST_RATE 1
RAILS_LDAP_HOST -
RAILS_LDAP_PORT 636
RAILS_LDAP_USER_DN -
RAILS_LDAP_ENCRYPTION simple_tls
RAILS_LDAP_EXTERNAL_DN -
RAILS_LDAP_GROUP_DN -
PROMETHEUS_EXPORTER_HOST Hostname wo der prometheus_exporter läuft. Schickt nichts wenn diese Variable nicht gesetzt ist. -
PROMETHEUS_EXPORTER_PORT Port wo der prometheus_exporter läuft. 9394
SENTRY_DSN DSN der Sentry Instanz. Falls diese Variable nicht gesetzt ist, werden keine Fehlermeldungen verschickt. -
SENTRY_CURRENT_ENV Environment für Sentry. Verwendet das RAILS_ENV, falls nichts angegeben wird. -
AUTH_DB_ACTIVE DB Login aktivieren / deaktivieren. false
AUTH_KEYCLOAK_ACTIVE Keycloak login aktivieren / deaktivieren. false
AUTH_KEYCLOAK_HOST Keycloak Host -
AUTH_KEYCLOAK_REALM Keycloak Realm -
AUTH_KEYCLOAK_CLIENT Keycloak Client -
AUTH_KEYCLOAK_SECRET Keycloak Secret -
AUTH_SAML_ACTIVE SAML login aktivieren / deaktivieren. false
AUTH_SAML_ISSUER -
AUTH_SAML_IDP_SSO_TARGET_URL -
AUTH_SAML_IDP_SSO_TARGET_URL_RUNTIME_PARAMS -
AUTH_SAML_IDP_CERT_FINGERPRINT -
AUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL -
AUTH_SAML_IDP_CERT -
AUTH_SAML_IDP_CERT_MULTI -
AUTH_SAML_NAME_IDENTIFIER_FORMAT -

Addendum

Ob Errbit oder Sentry verwendet wird, entscheidet sich danach, welche Umgebungsvariablen gesetzt werden. Errbit = RAILS_AIRBRAKE_HOST & RAILS_AIRBRAKE_API_KEY Sentry = SENTRY_DSN

OpenShift Deployment Example

Note: The following steps can be used to get an idea of how to deploy PuzzleTime on OpenShift.

Create a new project

oc new-project puzzle-time

Create a database service

oc new-app \
-e POSTGRESQL_USER=username \
-e POSTGRESQL_PASSWORD=password \
-e POSTGRESQL_DATABASE=db_name \
registry.access.redhat.com/rhscl/postgresql-95-rhel7  --name=pg-ptime

Note: For production you should add a persistent volume to the service

Create a memcached service

oc new-app --docker-image=memcached

Create the frontend service

oc new-app puzzle/ose3-rails~https://github.com/puzzle/puzzletime.git -e RAILS_DB_NAME=db_name -e RAILS_DB_USERNAME=username -e RAILS_DB_PASSWORD=password -e RAILS_DB_HOST=pg-ptime.puzzle-time.svc -e RAILS_MEMCACHED_HOST=memcached.puzzle-time.svc --name=puzzletime

Expose the frontend service

oc expose svc/puzzletime --hostname=puzzletime.nubiq.ch

Get the pods

oc get pods

Open a remote shell session to the frontend container

oc rsh puzzletime-<id>

Populate the database

bundle exec rake db:migrate
bundle exec rake db:seed

Create the testusers

bundle exec rake db:create_testuser