Portail d’administration
Go to file
Frédéric Péters 4a371988d1 gitignore: ignore local_settings.py 2015-02-12 10:19:05 +01:00
hobo let unauthenticated users flow to the login page (#6477) 2015-02-12 09:52:43 +01:00
.gitignore gitignore: ignore local_settings.py 2015-02-12 10:19:05 +01:00
COPYING initial commit with copying 2014-03-24 18:41:39 +01:00
MANIFEST.in setup and manifest added 2014-04-27 18:30:41 +02:00
README fix example deployment json 2015-02-02 15:13:49 +01:00
config_example.py settings: use a single settings.py file 2015-02-09 15:55:38 +01:00
manage.py settings: use a single settings.py file 2015-02-09 15:55:38 +01:00
requirements.txt requirements: allows django 1.7 2015-02-09 18:43:46 +01:00
setup.py setup.py: rename project to hobo 2014-07-07 17:19:18 +02:00

README

Hobo
====

Administration portal to configure and deploy applications.

Installation
------------

Dependencies can be installed with pip,

 $ pip install -r requirements.txt

It's then required to get the database configured (./manage.py syncdb); by
default it will create a db.sqlite3 file.

Hobo can then be run like typical django applications (./manage.py runserver),
it will communicate to deployment agents using Celery and expects a running 
RabbitMQ server running on localhost.

The agent in charge of deploying application can then be run on the application
servers, for example: (--broker=... can be omitted if running on same host).

  celery --broker=amqp://guest@localhost// -A hobo.agent worker -l info

Just like the django application itself, the celery process will use settings
from the file declared in the DJANGO_CONFIG_FILE environment variable.


Configuration
-------------

It's possible to limit agents to particular applications, or particular
hostnames, using the AGENT_HOST_PATTERNS configuration variable.

The format is a dictionary with applications as keys and a list of hostnames as
value. The hostnames can be prefixed by an exclamation mark to exclude them.

  AGENT_HOST_PATTERNS = {
     'wcs': ['*.example.net', '!  *.dev.example.net'],
  }

Will limit wcs deployments to *.example.net hostnames, while excluding
*.dev.example.net.

Some applications may support deployments templates, they can be specified in
the configuration with the SERVICE_TEMPLATES variable.

  SERVICE_TEMPLATES = {
        'wcs': [('export-auquo-light.wcs', u'Au quotidien light'),
                ('export-auquo.wcs', u'Au quotidien'),
                ('export-demo.wcs', u'Démo au quotidien')
                ],
  }


Usage
-----

Go to environment settings, pick a service, fill its name and URL, and watch it
being deployed.  Successfully deployed services will add a link to their
administration pages on the homepage.


Environment
-----------

An Hobo agent is a class defined in `hobo.agent.services` and derived from
`BaseService`. For each service in the environment dictionary sent by the hobo
portal, it's instantiated with the key `base_url`, `title` and `secret_key` of
the service. If the `base_url` matches the `AGENT_HOST_PATTERNS` locally
defined, the `execute()` method of the instant is called, passing it the full
environment dictionary.

The environment dictionary contains services for this particular agent and all
other services defined on the portal. The `execute()` method should only create
a tenant for the service whose `base_url` was passed to constructor. All other
informations are only for defining links with other services. The schema of the
dictionary is::

    {
        'timestamp': <current_time_as_an_unix_timestamp>,
        'users': [
            {
                'username': 'john.doe',
                'first_name': 'John',
                'last_name': 'Doe',
                'email': 'john.doe@example.com',
                'password': '<django-compatible-hashed-password>',
            }
        ],
        'services': [
           {
                'service-id': 'authentic' / 'wcs' / 'passerelle',
                'title': 'name of service,
                'secret_key': '..', # base secret for Django applications or other needs
                'base_url': 'base url of the service',
                'saml-sp-metadata-url': '...',
                'template_name': 'demo', # name of the template bundle to use
                'variables': {
                    'variable-1': 'value-of-variable-1'
                }
           }
        ],
        'variables': {
            'variable-1': 'value-of-variable-1'
        }
    }

Agents
------

 - w.c.s.

w.c.s. instances will be deployed using "/usr/sbin/wcsctl check-hobos" by
default, this command can be adapted in the AGENT_WCS_COMMAND setting. It
should be run with the same rights as the wcs process (redefine the command
to use sudo if necessary).

Template keys defined in SERVICE_TEMPLATES have to map wcs skeleton sites
(created from settings / export) stored in /var/lib/wcs/skeletons (the exact
directory may vary according to the wcs configuration).