Initial commit

This commit is contained in:
Miguel Jacq 2025-12-14 20:53:22 +11:00
commit 5398ad123c
Signed by: mig5
GPG key ID: 59B3F0C24135C6A9
14 changed files with 2147 additions and 0 deletions

32
enroll/cli.py Normal file
View file

@ -0,0 +1,32 @@
from __future__ import annotations
import argparse
from .harvest import harvest
from .manifest import manifest
def main() -> None:
ap = argparse.ArgumentParser(prog="enroll")
sub = ap.add_subparsers(dest="cmd", required=True)
h = sub.add_parser("harvest", help="Harvest service/package/config state into a bundle")
h.add_argument("--out", required=True, help="Bundle output directory")
r = sub.add_parser("manifest", help="Render Ansible roles from a harvested bundle")
r.add_argument("--bundle", required=True, help="Path to the bundle directory created by the harvest command")
r.add_argument("--out", required=True, help="Output directory for generated roles/playbook Ansible manifest")
e = sub.add_parser("export", help="Harvest then manifest in one shot")
e.add_argument("--bundle", required=True, help="Path to the directory to place the bundle in")
e.add_argument("--out", required=True, help="Output directory for generated roles/playbook Ansible manifest")
args = ap.parse_args()
if args.cmd == "harvest":
path = harvest(args.out)
print(path)
elif args.cmd == "manifest":
manifest(args.bundle, args.out)
elif args.cmd == "export":
harvest(args.bundle)
manifest(args.bundle, args.out)