{"id":20900369,"url":"https://github.com/lkummer/ansible-collection-homelab","last_synced_at":"2026-07-09T16:31:46.362Z","repository":{"id":49353281,"uuid":"502990550","full_name":"LKummer/ansible-collection-homelab","owner":"LKummer","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-16T22:35:55.000Z","size":299,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T09:46:38.296Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LKummer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-13T14:28:28.000Z","updated_at":"2022-06-13T23:02:11.000Z","dependencies_parsed_at":"2023-02-16T22:46:00.982Z","dependency_job_id":"2cdba75e-ac17-4a40-932a-44161c44b29a","html_url":"https://github.com/LKummer/ansible-collection-homelab","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/LKummer/ansible-collection-homelab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LKummer%2Fansible-collection-homelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LKummer%2Fansible-collection-homelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LKummer%2Fansible-collection-homelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LKummer%2Fansible-collection-homelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LKummer","download_url":"https://codeload.github.com/LKummer/ansible-collection-homelab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LKummer%2Fansible-collection-homelab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35306715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T11:19:12.455Z","updated_at":"2026-07-09T16:31:46.346Z","avatar_url":"https://github.com/LKummer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Homelab Ansible Collection\n\nCollection with roles and plugins for automating a virtualized homelab.\n\nRoles:\n\n- `lkummer.homelab.argo` configures ArgoCD.\n- `lkummer.homelab.cert_manager` configures Cert Manager and a ClusterIssuer using Let's Encrypt and Cloudflare DNS.\n- `lkummer.homelab.k3s` configures K3s.\n- `lkummer.homelab.observability` configures Prometheus Operator, Grafana Agent, Grafana, Loki, Promtail, OpenTelemetry Operator, OpenTelemetry Collector and Tempo.\n- `lkummer.homelab.helm` configures hosts for use with `kubernetes.core.helm` and `kubernetes.core.k8s` modules.\n\nInventory plugins:\n\n- `lkummer.homelab.terraform_local` populates inventory from local Terraform state files.\n- `lkummer.homelab.terraform_http` populates inventory from http Terraform state backend.\n\n## Example\n\nIncluded roles are designed to work together to configure a single host Kubernetes cluster with metric collection, log aggregation and continuous delivery.\n\n```yaml\n---\n- name: Configure Kubernetes host\n  hosts: production\n  roles:\n    - role: lkummer.homelab.k3s\n    - role: lkummer.homelab.observability\n      vars:\n        observability_grafana_host: grafana.example.com\n        observability_grafana_user: admin\n        observability_grafana_password: admin\n    - role: lkummer.homelab.argo\n      vars:\n        argo_host: argo.example.com\n        argo_cert_manager_enabled: false\n```\n\n## Installation\n\nAdd the collection to the `requirements.yml` file at the root directory of your playbook.\n\n```yaml\n# Inside requirements.yml\n---\ncollections:\n  - name: lkummer.homelab\n    type: git\n    source: https://github.com/LKummer/ansible-collection-homelab.git\n    version: 6.0.1\n```\n\nInstall requirements from the file:\n\n```\nansible-galaxy collection install --requirements requirements.yml\n```\n\n## Documentation\n\n[Full documentation is available on the wiki](https://homelab.pages.houseofkummer.com/devops/wiki/).\nThe following instructions are for accessing less detailed documentation from the roles and plugins.\n\nFor role variable documentation, see:\n\n```\nansible-doc --type role \u003crole name\u003e\n```\n\nFor example:\n\n```\nansible-doc --type role lkummer.homelab.k3s\n```\n\nFor inventory plugin documentation, see:\n\n```\nansible-doc --type inventory lkummer.homelab.terraform_local\n```\n\n## Development\n\nCreate a virtual environment:\n\n```\npython3 -m venv .venv\n```\n\nActivate the virtual environment:\n\n```\nsource .venv/bin/activate\n```\n\nInstall dependencies:\n\n```\npip install -r requirements.txt\nansible-galaxy install -r requirements.yml\n```\n\n### Testing\n\n`PM_API_TOKEN_ID` and `PM_API_TOKEN_SECRET` must be set.\nMake sure the token id is of the form `user@pve!token` and contains your username, realm and token name.\nMake sure the token has enough privileges for cloning VMs.\n[For more information see this guide.](https://homelab.pages.houseofkummer.com/devops/wiki/how-to/proxmox-api-tokens/)\n\nSet `ANSIBLE_HOST_KEY_CHECKING=0` to prevent Ansible from bugging you about SSH host key verification.\n\nEach user facing role (`k3s`, `observability`, `argo`, `cert_manager`) has a Molecule test.\nTo run a test, first go to the directory of the role you want to test:\n\n```\ncd roles/observability\n```\n\nThen run Molecule with the following command:\n\n```\nmolecule test\n```\n\nIt is useful to run Molecule stages during role development, using the test as a machine and playbook for development.\n\nTo provision a machine for testing, run:\n\n```\nmolecule create\n```\n\nTo run the playbook of the role, run:\n\n```\nmolecule converge\n```\n\nTo run the test verification playbook, run:\n\n```\nmolecule verify\n```\n\nTo destroy infrastructure provisioned for the test, run:\n\n```\nmolecule destroy\n```\n\n### Linting\n\nMake sure to lint with both yamllint and ansible-lint before pushing.\n\nTo lint with `ansible-lint`, run:\n\n```\nansible-lint --rules-dir rules\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkummer%2Fansible-collection-homelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flkummer%2Fansible-collection-homelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flkummer%2Fansible-collection-homelab/lists"}