Skip to main content

LSO, an API for remotely running Ansible playbooks.

Project description

Lightweight Service Orchestrator Supported python versions Downloads codecov

LSO: an API that allows for remotely executing Ansible playbooks.

Code documentation

Code documentation can be found at https://workfloworchestrator.org/lso

Quick start

This is a quick setup guide for running on your local machine.

As a Docker container

To run LSO as a Docker container, build an image using the Dockerfile.example as an example. Be sure to update requirements.txt and ansible-galaxy-requirements.yaml accordingly, depending on your specific Ansible collection and -role needs.

Use the Docker image to then spin up an environment. An example Docker compose file is presented below:

services:
  lso:
    image: my-lso:latest
    env_file: 
      .env  # Load default environment variables from the .env file
    volumes:
      - "/home/user/ansible_inventory:/opt/ansible_inventory:ro"
      - "~/.ssh/id_ed25519.pub:/root/.ssh/id_ed25519.pub:ro"
      - "~/.ssh/id_ed25519:/root/.ssh/id_ed25519:ro"

This will expose the API on port 8000. The container requires some more files to be mounted:

  • An .env file: Sets default environment variables, like ANSIBLE_PLAYBOOKS_ROOT_DIR for the location of Ansible playbooks inside the container.
  • Environment variables: Specific configurations, such as ANSIBLE_ROLES_PATH, can be directly set in the environment section. This is ideal for values you may want to override without modifying the .env file.
  • An Ansible inventory for all host and group variables that are used in the playbooks
  • A public/private key pair for SSH authentication on external machines that are targeted by Ansible playbooks.
  • Any Ansible-specific configuration (such as collections_path, roles_path, etc.) should be set using environment variables. ANSIBLE_ROLES_PATH is given as an example in the Docker compose snippet above.

Install the module

As an alternative, below are a set of instructions for installing and running LSO directly on a machine.

One of these should be what you're looking for:

  • Install the latest release
  python3 -m venv my-venv-directory
  . my-venv-directory/bin/activate

  pip install orchestrator-lso
  • Install the source code
  git clone https://github.com/workfloworchestrator/lso.git && cd lso
  python3 -m venv my-venv-directory
  . my-venv-directory/bin/activate
  
  pip install flit
  flit install --deps production
  
  # Or, for the full development environment
  flit install --deps develop

Running the app

  • Set required environment variables; see env.example for reference.
  • If necessary, set the environment variable ANSIBLE_HOME to a custom path.
  • Run the app like this (app.py starts the server on port 44444):
  source .env && python -m lso.app

Task Execution Options

  1. Celery (Distributed Execution)
  • For distributed task execution, set EXECUTOR=celery.
  • Add Celery config in your environment variables:
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0
WORKER_QUEUE_NAME=lso-worker-queue # default value is None so you don't need this by default.
  • Start a Celery worker:
celery -A lso.worker worker --loglevel=info -Q lso-worker-queue
  1. ThreadPoolExecutor (Local Execution)

For local concurrent tasks, set EXECUTOR=threadpool and configure MAX_THREAD_POOL_WORKERS.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orchestrator_lso-2.2.0.tar.gz (302.8 kB view details)

Uploaded Source

Built Distribution

orchestrator_lso-2.2.0-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file orchestrator_lso-2.2.0.tar.gz.

File metadata

  • Download URL: orchestrator_lso-2.2.0.tar.gz
  • Upload date:
  • Size: 302.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.4

File hashes

Hashes for orchestrator_lso-2.2.0.tar.gz
Algorithm Hash digest
SHA256 2198e498c9651a86c57e77cbea98e0e8841984466e048513a9a6c554f19dfdf2
MD5 5116ed43e6f69bc116ad06dbf9aec4d3
BLAKE2b-256 f599e8c880f3bdb5aca1331c00e6a81f759279c69d8f0c165c00043851befec2

See more details on using hashes here.

File details

Details for the file orchestrator_lso-2.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for orchestrator_lso-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd171f8b4754af712b3cf57c4a148f4b2e68dc39f8ab48268b19e3009dbbc03
MD5 f053f7d07e857ebe62c892b450d15ed9
BLAKE2b-256 0eb96ca89f3de2fcb8b6332f736fe478eca292d7a8222ac146fe7590791acab3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page