Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

TELEICU/Path A: Ansible Pull

From OHC Network Wiki
Revision as of 08:25, 6 July 2026 by Admin (talk | contribs) (Replace ASCII art with Mermaid diagrams (via update-page on MediaWiki MCP Server))
guideteleicuCARE 3.0+

Full architecture and workflow for the Ansible Pull migration path.

Architecture

All node configuration is declared in a central git repository. Each hospital PC runs ansible-pull on a cron or systemd timer, checking out the repo and applying the playbook for its host group.

{{#mermaid:flowchart LR
    REPO["Git Repository<br/>(central playbooks)"]
    CP["CP Node(s)<br/>(ansible-pull)"]
    SPOKE["Spoke Agent Node<br/>ansible-pull<br/>→ K3s agent<br/>→ middleware"]
    HUB["Hub Agent Node<br/>ansible-pull<br/>→ K3s agent<br/>→ middleware"]

    REPO -->|"pull (HTTPS / Tailscale)"| CP
    REPO -->|"per-agent pull"| SPOKE
    REPO -->|"per-agent pull"| HUB
}}

What Ansible manages

  • OS package state (apt pins to prevent version drift)
  • System configuration (ssh, sysctl, ntp, firewall)
  • K3s agent install and registration
  • Cloudflare tunnel service definition and credentials (from vault)
  • Docker/containerd configuration if needed by workloads
  • Monitoring agent and log shipper setup
  • Tailscale install and configuration

What K3s manages

  • Middleware container deployments
  • Service discovery and ingress within the cluster
  • Workload scaling and updates
  • All workloads are declarative Kubernetes manifests, versioned alongside playbooks

Storage

Longhorn on existing filesystems. No disk repartitioning — Longhorn uses a configured directory or dedicated mount point on the existing ext4/xfs partition.

Rollback

  1. git revert the offending commit in the ansible repo
  2. ansible-pull runs on next timer — nodes converge to the reverted state
  3. For urgent rollbacks, trigger an immediate pull: ansible-pull -U <repo>

Constraints

  • No filesystem immutability — drift can exist between pull intervals (default: every 15–30 minutes)
  • Existing OS fragmentation must be handled through conditional Ansible roles
  • In-place OS upgrade playbook needed to converge Ubuntu versions before or during migration

Repository structure

{{#mermaid:flowchart LR
    subgraph Repo["ansible-teleicu/"]
        ROOT["site.yml<br/>ansible.cfg"]
        INV["inventories/<br/>production/<br/>staging/"]
        ROLES["roles/<br/>common/<br/>tailscale/<br/>k3s-agent/<br/>cloudflared/<br/>monitoring-agent/<br/>middleware/<br/>security-patches/"]
        VARS["group_vars/<br/>all.yml<br/>spokes.yml<br/>hubs.yml"]
        VAULT["vault/"]
    end
}}