jdelpilarandJordan Del Pilar 3d5bda78ac
Johto Infrastructure Pipeline / Run Ansible Lint (push) Successful in 1m54s
Johto Infrastructure Pipeline / Deploy to Production (push) Has been cancelled
Fix/runner quadlet (#6)
This PR fixes an issue with the act_runner container set up.

## Major Changes
- Update act_runner_quadlet.j2 template to fix an issue where the runner would restart adguard during the pipeline. This caused the act_runner container to restart as well due to the line "requires=adguard.service"
- Updated gitea_quadlet.j2 to disable new user registration.

---------

Co-authored-by: Jordan Del Pilar <[email protected]>
Reviewed-on: #6
2026-07-08 14:10:27 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 17:13:59 -07:00
2026-07-08 14:10:27 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 13:02:38 -07:00
2026-06-12 13:02:38 -07:00

johto-infra

The core Ansible project for provisioning and managing the Del Pilar homelab infrastructure

Summary

This contains the primary Ansible configuration-as-code to provision and manage my home infrastructure. Currently this system manages server baselines, and container deployment for internal DNS (via AdguardHome) and git/ci (via Gitea) using Podman Quadlets

Scope and Limitations

Warning This project is heavily opinionated and designed to work with one specific home lab architecture.

The roles, tasks and templates within this repo are best used as a reference for managing services running as podman quadlets.

If you want to run this repo against your own home lab you will need to rewrite 'inventory.yaml' and all group and host vars to match your specific environment.

Repository Structure

Below is the directory map for this repo.

├── ansible.cfg
├── group_vars
│   └── all.yaml
├── host_vars
│   ├── goldenrod.yaml
│   └── new-bark.yaml
├── inventory.yaml
├── README.md
├── roles
│   ├── common
│   │   └── tasks
│   │       └── main.yaml
│   ├── dns_server
│   │   ├── handlers
│   │   │   └── main.yaml
│   │   ├── tasks
│   │   │   └── main.yaml
│   │   └── templates
│   │       └── adguard_quadlet.j2
│   └── gitea_server
│       ├── handlers
│       │   └── main.yaml
│       ├── tasks
│       │   └── main.yaml
│       └── templates
│           ├── act_runner_quadlet.j2
│           └── gitea_quadlet.j2
└── site.yaml

Prerequisites

To run this project locally the following tools are required. All install commands assume you are running Ubuntu/Debian.

  • Ansible installed on the control machine
    sudo apt install ansible
    
  • Ansible Lint (optional but highly recommended if making changes)
    sudo apt install ansible-lint
    
  • SSH access to target nodes

How to Run

The ultimate goal of this project is a fully automated gitops workflow. However, until that is fully running below are the instructions to run this project locally.

  • Clone the repo
    git clone [email protected]:jdelpilar/johto-infra.git
    cd johto-infra
    
  • To run all plays in site.yaml and fully initialize the environment run the following command. This will target all nodes.
    ansible-playbook site.yaml
    
  • To limit the execution to a single host use the limit flag (-l, --limit)
    # This will only target new-bark
    ansible-playbook site.yaml -l new-bark 
    
  • To limit the execution to only a specific service or tag, use the tag flag (-t, --tags)
    # This will only run dns tasks, but will target all nodes
    ansible-playbook site.yaml -t dns 
    
  • These flags can be combined if needed
    # This will only run dns tasks and only target new-bark
    ansible-playbook site.yaml -t dns -l new-bark
    

Services Deployed

Below is a list of all services currently deployed by this project. This list will be updated as new services are added

Unless otherwise stated all services are run via rootless podman quadlets.

  • Internal DNS (dns_server) - AdguardHome for network wide adblocking and local DNS resoultion
  • Git Server and CI/CD runner (gitea_server) - Gitea alongside act runner for local git with repo mirroring and local private ci/cd runners
S
Description
Infrastructure-as-Code (IaC) repository managing a resilient, GitOps-driven home lab architecture via Ansible and rootless Podman. Natively versioned by Johto Gym Leaders.
Readme
103 KiB
2026-07-27 21:00:48 -07:00
Languages
Jinja 100%