commit d7a87b37fed078f370a7e8e5f26e6b4490ff8d89
parent aa63e565d20ad34ab98904d6b1367a55caaca405
Author: Asher Morgan <asher@ashermorgan.net>
Date: Sun, 16 Aug 2026 19:09:04 -0700
Load playbook/config paths from a config.yml file
Currently, paths should be absolute.
Diffstat:
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,3 +1,4 @@
.venv
__pycache__
*.pyc
+config.yml
diff --git a/aoh/install.py b/aoh/install.py
@@ -51,7 +51,8 @@ def fetch(args):
def main():
res = requests.post(f'{API}/runners/', json={
- 'args': ' '.join(sys.argv[1:]),
+ 'playbook': sys.argv[1] if len(sys.argv) >= 2 else 'main',
+ 'args': ' '.join(sys.argv[2:]),
})
if res.status_code != 201:
print(res.json()['err'])
diff --git a/aoh/server.py b/aoh/server.py
@@ -1,12 +1,10 @@
import os
+import yaml
from flask import Flask, abort, make_response, render_template, request, session
from .runner import AoHRunner
-PLAYBOOK = os.path.abspath('./demo/playbook.yml') # TODO
-CONFIG = os.path.abspath('./demo/ansible.cfg') # TODO
-
app = Flask(__name__, template_folder=os.path.dirname(__file__))
app.secret_key = os.urandom(16)
@@ -64,7 +62,15 @@ def job_new():
if not _validate_args(request.json['args']):
return { 'err': 'Bad or banned arguments passed.' }, 400
- runner = AoHRunner(CONFIG, PLAYBOOK, request.json['args'])
+ with open('config.yml', 'r') as f:
+ CONFIG = yaml.safe_load(f)
+
+ playbook = CONFIG.get(request.json['playbook'])
+ if not playbook:
+ return { 'err': f"Playbook not found: {request.json['playbook']}" }, 400
+
+ runner = AoHRunner(playbook['config'], playbook['playbook'],
+ request.json['args'])
_DATA[runner.id] = runner
session['runner'] = runner.id
diff --git a/requirements.txt b/requirements.txt
@@ -1,4 +1,5 @@
ansible
ansible_runner
flask
+pyyaml
requests