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.

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
  uv venv --python 3.12
  uv add orchestrator-lso
  • Install the source code
  git clone https://github.com/workfloworchestrator/lso.git && cd lso
  uv venv --python 3.12
  . .venv/bin/activate
  
  uv sync --all-extras --dev

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.

Contributing

We use uv to manage dependencies.

To get started, run:

uv sync --all-extras --dev
pre-commit install

Code documentation

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

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.4.5.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orchestrator_lso-2.4.5-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: orchestrator_lso-2.4.5.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for orchestrator_lso-2.4.5.tar.gz
Algorithm Hash digest
SHA256 2ec86f7f177b2a27929150e6c069af34d7f1c0aba8fafac3a0d95d4c161b2c97
MD5 efc548d8deaf2afb54a713c6ffdeb563
BLAKE2b-256 df3e64cb367717cdb8387ad0329d5d781f9861d091330031bc64ba0005516639

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orchestrator_lso-2.4.5-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for orchestrator_lso-2.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9609bd40c4026e24f001689c2671e28ec2f680556eb373cc037385b26d52ce
MD5 651ffc428b57bde05362f4306d02e2b6
BLAKE2b-256 74dc81011047e547d7e2217fc41572918ab9b6041d73c92eb80b221408b31901

See more details on using hashes here.

Supported by

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