Read it online: https://kernelpath.dev/
Learn Ansible automation by doing. A free, interactive course and home-lab build that takes you from your first playbook to automating real Linux administration on RHEL 9. It teaches the Ansible skills that DevOps and system administration teams use every day. It is written by learners, for learners, as a way to study together: short explanations combine browser activities, real Linux labs, quizzes, and summaries. A learning dashboard keeps reading, practice, confidence, and local grading evidence separate.
An independent, community-made study companion. Not affiliated with, sponsored by, or endorsed by Red Hat, Inc. It is not official training material and does not replace Red Hat's courses or documentation.
| Program | Status |
|---|---|
Ansible automation on RHEL 9 (rhel9-ansible) |
Complete: 12 chapters, from building the practice lab to Git and development containers, with two integrated assessments |
Linux system administration on RHEL 9 (rhel9-sysadmin) |
Planned: a 22-chapter outline |
Requires Node.js 20.19+ or 22.12+.
npm install
npm run dev # http://localhost:3000; content edits show live
npm run build # the static site in dist/ (engine, content bundle, lab tools, schemas)
npm run preview # serve the built site locally
npm test # unit, contract and fuzz tests
npm run validate:content
npm run test:labs
npm run formatTo write content, start a program or add to one with the scaffolder, then check it:
npx kernel new chapter rhel9-sysadmin containers-intro
npx kernel new section rhel9-sysadmin 21 first-container
npx kernel validateThe authoring guide explains the page format, and the component catalog lists every tag. VS Code users get schema checking and kp- snippets from the committed .vscode settings (install the recommended extensions).
| docs/AUTHORING.md | Writing pages, diagrams, quizzes and exercises |
| docs/CATALOG.md | Every tag content may use (generated) |
| docs/PLATFORM.md | The platform design, content contract and security model |
| docs/ARCHITECTURE.md | How the engine works |
| docs/HOSTING.md | Deploying, hosting content elsewhere, signed content |
| docs/LAB-GRADING.md | The lab command, grading and exercise checks |
| packages/ | A README per package: schema, compiler, engine, lab tools |
Kernel Path is being turned into a data-only learning platform (see docs/PLATFORM.md). It is three parts plus the content:
- The contract (
packages/schema): JSON schemas for content and for the compiled bundle, the catalog of tags content may use, and generated browser validators. - The compiler (
packages/compiler, thekernelcommand): validatescontent/against the contract and compiles it into a static, content-hashed bundle. Code is highlighted at build time. - The engine (
packages/engine): a React 19 + Vite 8 player. At startup it fetches the bundle from the location inkernel.config.json, validates every file, and renders pages through its own components. It contains no course text and never renders raw HTML. - A site home and program selector.
#/lists every program with the reader's progress, fromcontent/site/home.md; the header's program menu switches between programs. A program without authored landing or dashboard copy gets built-in ones, and a planned program shows its outline. - No backend. Every page has its own address (
/rhel9-ansible/ch03/inventory/: program, chapter, section), written as a real HTML file at build time. Progress is kept separately for each program. Progress, lab checklists, quiz answers and the last page read are stored in the reader'slocalStorage, sync across tabs, and can be exported or imported from the progress menu.
content/ the course (see docs/AUTHORING.md)
packages/
schema/ the content contract
compiler/ `kernel validate|build`
lab-tools/ `lab`, the read-only grader and the exercise setup program (run on the learner's machine)
engine/
src/lib/content.js fetches and validates the bundle
src/lib/course.js the loaded program: chapters, pages, objectives
src/components/content/ render-tree renderer and tag → component registry
src/components/ layout, interactive components, search
src/diagrams/ diagram kit and chapter widgets (moving to generic components)
plugins/content-bundle.js dev server: compiles content/ and serves it at /content/
public/kernel.config.json where the engine loads content from
scripts/ content checks and build helpers
tests/ browser, phone, lab and content tests
npm run build builds the engine into dist/ and the content bundle into dist/content/; the lab tree (the lab command, exercise starter files and the grading catalog) is also placed at dist/lab/, where learners install it from. To load content from somewhere else (for example a CDN), change contentBase in dist/kernel.config.json. The security policy, optional content signing and cache rules are in docs/HOSTING.md.
See validation evidence for the tested stack and remaining host checks, progress compatibility for backups, and local grading for exercise checkpoints.
The workflow in .github/workflows/deploy.yml builds and publishes the site on every push to main.
- Push the repository to GitHub.
- In Settings → Pages, set Source to GitHub Actions.
- Push to
main(or run the workflow manually). The site appears athttps://<user>.github.io/<repo>/.
The site is built for the root of its domain (CNAME). To serve it from a project sub-path instead, build with SITE_BASE=/repo-name/ and SITE_URL=https://user.github.io; deep links work because every page is written as its own HTML file, and 404.html covers the rest. packages/engine/public/.nojekyll stops GitHub from running Jekyll over the output.
Contributions are welcome: corrections, lab feedback, new chapters, diagrams. Fork the repository, make your change on a branch and open a pull request; the maintainer reviews and merges it, and merging redeploys the site. Read CONTRIBUTING.md first, and see docs/AUTHORING.md for how sections and diagrams are written. In short: write in your own words and keep commands tested.
Everyone taking part follows the Code of Conduct. Security problems: see SECURITY.md.
- Source code (
packages/,scripts/, build and configuration files): MIT. - Written content (
content/,docs/) and the site's text and diagrams: CC BY 4.0. Reuse is welcome with credit.
Red Hat, Red Hat Enterprise Linux and Ansible are trademarks of Red Hat, Inc. This project is independent and is not affiliated with, sponsored by, or endorsed by Red Hat, Inc.