{"repo":"stephrobert/dsoxlab","free":true,"listed":false,"github":"https://github.com/stephrobert/dsoxlab","clone":"git clone https://github.com/stephrobert/dsoxlab.git","description":"DevSecOps XL Labs — a domain-agnostic CLI framework to drive hands-on learning labs across multiple repositories","language":"Python","stars":61,"topics":["ansible","cli","devops","devsecops","education","labs","python","rhcsa","terraform","training"],"license":"Apache-2.0","category":"deployment-docker-iac","readme_excerpt":"dsoxlab — DevSecOps XL Labs CLI Read this in another language: Français dsoxlab is a domain-agnostic CLI framework that drives hands-on learning labs spread across multiple repositories . Each repository declares its own catalog through a root meta.yml file and one lab.yaml per lab. The framework serves Linux, Ansible, Kubernetes or Terraform labs equally well — anything that honors the declarative contract. It provisions the environment, runs infrastructure-level validation ( pytest + pytest-testinfra ), scores progress, and stores history locally. Nothing about a specific domain lives in the engine. Companion to the tutorials on blog.stephane-robert.info. --- Why dsoxlab - One engine, many catalogs. A single CLI drives every training repository. Add a new domain by writing a meta.yml , not by patching the tool. - Validation proves, it does not trust. Labs are graded on the actual state of the system ( pytest-testinfra ) and, when it matters, on persistence after reboot — the trap that fails RHCSA/LFCS candidates. - Multiple runtimes. Run a lab in a plain shell , an Incus container, or a full KVM/libvirt virtual machine, chosen per lab. - Progress that sticks. Scores, hint costs and history are persisted in a local SQLite database following the XDG spec. - Bilingual UX. Every user-facing string ships in English and French ( DSOXLAB LANG=en fr ). --- Installation Requires Python 3.11+ . That is the whole installation. Nothing to clone, nothing to build. --- Your first lab, in","default_branch":null,"files":null,"tree":[],"storefront":"/r/stephrobert","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/stephrobert/dsoxlab/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}