Welcome to Drups.io Engine’s documentation!

Contents:

What is Drups.io Engine

Drups.io Engine is a bridge between Drups.io Application and DevOps stuff. It takes care about Cloning, Building and Deploying the user projects.

The connection between Engine and Application is implemented by using the Message Broker pattern. We use RabbitMQ as our broker and Redis as the Celery Result Backend. Celery is our Task Queue provider.

Connection between Drups.io Engine and application

Coverage

Installation

Requirements

  • Python >= 3.6

  • pip

  • venv (recommended)

  • RabbitMQ Server

  • Redis Server

Production

$ pip install drups

Development

  • Clone the repository: git clone git@github.com:drupsio/engine.git

  • Go to the project directory: cd engine

  • Install pip dependencies: pip install -r requirements/dev.txt

Usage

Production

First you need to define the environment variables:

# RabbitMQ URL.
$ export BROKER_URL="amqp://some_user:some_password:127.0.0.1"

# Redis URL.
$ export RESULT_BACKEND="redis://127.0.0.1"

Using init.d

  • Copy the init.d/drupsd file into /etc/init.d/drupsd

  • Modify and copy the init.d/drupsd.config.example file to /etc/default/drups (or /usr/local/etc/drups on BSD)

  • Run the daemon sudo /etc/init.d/drupsd start. It is important to run it with the root user

The default user and group for running the drupsd daemon is drups:drups. You should create it first (or change the default user in /etc/default/drups -> DRUPSD_USER and DRUPSD_GROUP).

Available command for drups daemon
  • start - Start the daemon

  • stop - Stop the daemon

  • restart - Restart the daemon

  • status - Get the daemon status

  • kill - Kill the daemon

  • dryrun - Start the daemon in verbose mode

Using celery

$ celery -A drups worker --loglevel=INFO -E

Using drups itself

$ drups worker --loglevel=INFO -E

Development

  • Create the .env.local file and set the environment variables:

    # Example .env.local
    
    # RabbitMQ URL.
    BROKER_URL = 'amqp://some_user:some_password:127.0.0.1'
    
    # Redis URL.
    RESULT_BACKEND = 'redis://127.0.0.1'
    
  • Run the Celery worker

    $ celery -A drups.app worker --loglevel=INFO -E