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)
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 | - |
Ob Errbit oder Sentry verwendet wird, entscheidet sich danach, welche Umgebungsvariablen gesetzt werden. Errbit = RAILS_AIRBRAKE_HOST & RAILS_AIRBRAKE_API_KEY Sentry = SENTRY_DSN
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