LSO, an API for remotely running Ansible playbooks.
Project description
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_PATHis 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.examplefor reference. - If necessary, set the environment variable
ANSIBLE_HOMEto a custom path. - Run the app like this (
app.pystarts the server on port 44444):
source .env && python -m lso.app
Task Execution Options
- 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
- 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ec86f7f177b2a27929150e6c069af34d7f1c0aba8fafac3a0d95d4c161b2c97
|
|
| MD5 |
efc548d8deaf2afb54a713c6ffdeb563
|
|
| BLAKE2b-256 |
df3e64cb367717cdb8387ad0329d5d781f9861d091330031bc64ba0005516639
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c9609bd40c4026e24f001689c2671e28ec2f680556eb373cc037385b26d52ce
|
|
| MD5 |
651ffc428b57bde05362f4306d02e2b6
|
|
| BLAKE2b-256 |
74dc81011047e547d7e2217fc41572918ab9b6041d73c92eb80b221408b31901
|