# orbit-cloud-labs/orbit-infrastructure architecture

> Architecture diagram of the GitHub repository orbit-cloud-labs/orbit-infrastructure, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/orbit-cloud-labs/orbit-infrastructure
- Repository: https://github.com/orbit-cloud-labs/orbit-infrastructure

## Overview

This repository is an Ansible-based homelab and infrastructure deployment configuration. Its apparent workflow is to apply playbooks that configure hosts and deploy cluster, access, and monitoring services. The tree also shows VM provisioning, network and reverse-proxy setup, secrets, and security tooling. The README is empty, and only the Argo CD release-check script was sampled, so most component relationships cannot be verified; the sole shown runtime call is that script invoking k3s kubectl.

Main entry points: [`ansible/roles/argocd/files/check-release.py`](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/argocd/files/check-release.py) (Helm release check)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["Provisioning and cluster"]
  node_vm["VM provisioning"]
  node_k3s["K3s cluster<br/>[main.yml]"]
  node_argocd["Argo CD"]
  node_release_check["Helm release check<br/>[check-release.py]"]
end

subgraph group_access["Access and networking"]
  node_network["Host networking"]
  node_gateway["Gateway configuration<br/>[main.yml]"]
  node_proxy["Reverse proxy"]
  node_accounts["Personal accounts"]
end

subgraph group_observability["Observability and security"]
  node_efk["EFK logging"]
  node_fluent_bit["Fluent Bit<br/>[main.yml]"]
  node_lgtm["LGTM monitoring"]
  node_wazuh_central["Wazuh central<br/>[main.yml]"]
  node_wazuh_agent["Wazuh agent<br/>[main.yml]"]
end

subgraph group_secrets["Secrets and identity"]
  node_ssh_ca["SSH certificate authority<br/>[main.yml]"]
  node_vault["Vault secrets"]
end

node_kubernetes{{"Kubernetes API"}}

node_release_check -->|"queries via kubectl"| node_kubernetes

click node_vm "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/libvirt/tasks"
click node_network "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/network/tasks"
click node_gateway "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/gateway/tasks/main.yml"
click node_k3s "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/k3s/tasks/main.yml"
click node_argocd "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/argocd/tasks"
click node_release_check "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/argocd/files/check-release.py"
click node_proxy "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/reverse_proxy/tasks"
click node_ssh_ca "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/ssh_ca/tasks/main.yml"
click node_accounts "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/personal_accounts/tasks"
click node_vault "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/vault/tasks"
click node_efk "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/efk/tasks"
click node_fluent_bit "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/fluent_bit/tasks/main.yml"
click node_lgtm "https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/lgtm/tasks"
click node_wazuh_central "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/wazuh_central/tasks/main.yml"
click node_wazuh_agent "https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/wazuh_agent/tasks/main.yml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_vm,node_k3s,node_argocd,node_release_check toneBlue
class node_network,node_gateway,node_proxy,node_accounts toneAmber
class node_efk,node_fluent_bit,node_lgtm,node_wazuh_central,node_wazuh_agent,node_kubernetes toneMint
class node_ssh_ca,node_vault toneRose
```

## Components

### Provisioning and cluster

- [VM provisioning](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/libvirt/tasks): `ansible/roles/libvirt/tasks`
- [K3s cluster](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/k3s/tasks/main.yml): `ansible/roles/k3s/tasks/main.yml`
- [Argo CD](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/argocd/tasks): `ansible/roles/argocd/tasks`
- [Helm release check](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/argocd/files/check-release.py): `ansible/roles/argocd/files/check-release.py`

### Access and networking

- [Host networking](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/network/tasks): `ansible/roles/network/tasks`
- [Gateway configuration](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/gateway/tasks/main.yml): `ansible/roles/gateway/tasks/main.yml`
- [Reverse proxy](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/reverse_proxy/tasks): `ansible/roles/reverse_proxy/tasks`
- [Personal accounts](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/personal_accounts/tasks): `ansible/roles/personal_accounts/tasks`

### Observability and security

- [EFK logging](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/efk/tasks): `ansible/roles/efk/tasks`
- [Fluent Bit](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/fluent_bit/tasks/main.yml): `ansible/roles/fluent_bit/tasks/main.yml`
- [LGTM monitoring](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/lgtm/tasks): `ansible/roles/lgtm/tasks`
- [Wazuh central](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/wazuh_central/tasks/main.yml): `ansible/roles/wazuh_central/tasks/main.yml`
- [Wazuh agent](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/wazuh_agent/tasks/main.yml): `ansible/roles/wazuh_agent/tasks/main.yml`

### Secrets and identity

- [SSH certificate authority](https://github.com/orbit-cloud-labs/orbit-infrastructure/blob/develop/ansible/roles/ssh_ca/tasks/main.yml): `ansible/roles/ssh_ca/tasks/main.yml`
- [Vault secrets](https://github.com/orbit-cloud-labs/orbit-infrastructure/tree/develop/ansible/roles/vault/tasks): `ansible/roles/vault/tasks`

### Other components

- **Kubernetes API**

## Connections

- Helm release check → Kubernetes API: queries via kubectl (evidence: `ansible/roles/argocd/files/check-release.py`)
