Setup on OpenShift¶
OpenShift is Red Hat’s Platform-as-a-Service (PaaS), focused on hosting web applications. Resources are mapped as “Gears” and application setup is provided by “Cartridges”. Cartridges are the plug-ins that house the framework or components that can be used to create and run an application.
Crossbar.io can be run on OpenShift since they provide a beta WebSocket support on HTTP (8000) and HTTPS (8443).
Pre-requisites¶
An account on OpenShift.
OpenShift’s client tool (
rhc
) properly configured.
Crossbar.io on OpenShift¶
To run crossbar.io on OpenShift you will have to use a
DIY
cartridge. That is because Python
cartridges
are based on Apache+mod_wsgi
so they won’t handle Websockets. Using
DIY
the request is passed from the Openshift Websocket
proxy
directly into you application local
port.
There are two options for deploying Crossbar.io:
Use a a base application to start with
Create your DIY application from scratch
This howto uses option (1.)
.
Use a a base application to start with¶
There is an OpenShift
application which you
can use as a starting point for your Crossbar.io installation. This base
application was created to provide a minimal setup to run a standard
Crossbar.io installation (based on crossbar init
) using
Python-3.5
.
It also provide a way to easy customize the Crossbar.io instance by
editing its configuration file config.{yaml,json}
.
To use it you can:
Call
rhc app create
passing--from-code https://github.com/jvdm/openshift-crossbar
.Use the web console interface on the Add Application page, select Do-It-Yourself 0.1 and set the Source Code field.
Crossbar.io configuration¶
Crossbar.io configuration on OpenShift can’t be static: that’s because
the ip address and port used must match the ones OpenShift is expecting
you to use. OpenShift provides this information through environment
variables: OPENSHIFT_DIY_IP
and OPENSHIFT_DIY_PORT
.
The application will use config.{json,yaml}
files in the project’s
root as a template to create .crossbar/config.{json,yaml}
, by
evaluating any shell variable expansion inside the file. That’s how you
have a dynamic crossbar configuration on crossbar.io startup.
If you want to change crossbar.io configuration, you just need to edit
the config.yaml
file on the project’s root. You can change its name
to config.json
if you prefer working with JSON. But this file will
be used only as a “template”: the crossbar instance will be run using
.crossbar
as CROSSBAR_DIR
, so adjust your paths.
What will you get¶
After application deploy (which is done by a git push
), you should
be able to access the web worker on
http://<app-name>-<domain-name>.rhcloud.com
.
To connect to the router using websockets you will need to use port
:8000
: http://<app-name>-<domain-name>.rhcloud.com:8000/ws
.