Add new Ansible roles and configuration for the edge proxy and private network architecture: ## New Roles: - **edge-traefik**: Edge reverse proxy that routes to private clients - Dynamic routing configuration for multiple clients - SSL termination at the edge - Routes traffic to private IPs (10.0.0.x) - **nat-gateway**: NAT/gateway configuration for edge server - IP forwarding and masquerading - Allows private network clients to access internet - iptables rules for Docker integration - **diun**: Docker Image Update Notifier - Monitors containers for available updates - Email notifications via Mailgun - Per-client configuration - **kuma**: Uptime monitoring integration - Registers HTTP monitors for client services - Automated monitor creation via API - Checks Authentik, Nextcloud, Collabora endpoints ## New Playbooks: - **setup-edge.yml**: Configure edge server with proxy and NAT ## Configuration: - **host_vars**: Per-client Ansible configuration (valk, white) - SSH bastion configuration for private IPs - Client-specific secrets file references This enables the scalable multi-tenant architecture where: - Edge server has public IP and routes traffic - Client servers use private IPs only (cost savings) - All traffic flows through edge proxy with SSL termination 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
49 lines
1.6 KiB
YAML
49 lines
1.6 KiB
YAML
---
|
|
# Register client services with Uptime Kuma monitoring
|
|
# Uses uptime-kuma-api Python library with Socket.io
|
|
|
|
- name: Set Kuma credentials from shared secrets
|
|
set_fact:
|
|
kuma_username: "{{ shared_secrets.kuma_username | default('') }}"
|
|
kuma_password: "{{ shared_secrets.kuma_password | default('') }}"
|
|
when: shared_secrets is defined
|
|
|
|
- name: Check if Kuma monitoring is enabled
|
|
set_fact:
|
|
kuma_registration_enabled: "{{ (kuma_enabled | bool) and (kuma_url | length > 0) and (kuma_username | length > 0) and (kuma_password | length > 0) }}"
|
|
|
|
- name: Kuma registration block
|
|
when: kuma_registration_enabled
|
|
delegate_to: localhost
|
|
become: false
|
|
block:
|
|
- name: Ensure uptime-kuma-api Python package is installed
|
|
pip:
|
|
name: uptime-kuma-api
|
|
state: present
|
|
|
|
- name: Create Kuma registration script
|
|
template:
|
|
src: register_monitors.py.j2
|
|
dest: /tmp/kuma_register_{{ client_name }}.py
|
|
mode: '0700'
|
|
|
|
- name: Register monitors with Uptime Kuma
|
|
command: "{{ ansible_playbook_python }} /tmp/kuma_register_{{ client_name }}.py"
|
|
register: kuma_result
|
|
changed_when: "'Added' in kuma_result.stdout or 'Updated' in kuma_result.stdout"
|
|
failed_when: kuma_result.rc != 0
|
|
|
|
- name: Display Kuma registration result
|
|
debug:
|
|
msg: "{{ kuma_result.stdout_lines }}"
|
|
|
|
- name: Cleanup registration script
|
|
file:
|
|
path: /tmp/kuma_register_{{ client_name }}.py
|
|
state: absent
|
|
|
|
- name: Skip Kuma registration message
|
|
debug:
|
|
msg: "Kuma monitoring registration skipped (not enabled or missing credentials)"
|
|
when: not kuma_registration_enabled
|