prole/infrastructure/inventory/host_vars/merlin.prole.org.yml
chrisfu 5dcd3b9581 ansible: treat /var/lib/rancher as local K3s state
Update inventory/roles to keep K3s state on local storage and prevent iSCSI from managing /var/lib/rancher.

Also add a single-host k3s install playbook, a systemd override template, and docs describing the installer ↔ Ansible boundary and slow-storage knobs.

Co-authored-by: Junie <junie@jetbrains.com>
2026-03-15 23:20:55 -07:00

57 lines
1.9 KiB
YAML

---
ansible_host: 10.0.0.6
netplan_static_enabled: true
netplan_static_iface: eth0
netplan_static_address: 10.0.0.6/24
netplan_static_gateway4: 10.0.0.1
netplan_static_nameservers:
- 10.0.0.1
# MariaDB primary (USB-backed)
# Temporary borrowed USB disk for MariaDB (merlin only)
# - Disk: /dev/sda1 (exFAT)
# - Mount: /external (by UUID, discovered at runtime)
# - MariaDB datadir is expected at /srv/mariadb/mariadb, but is bind-mounted to /external/mariadb
mariadb_external_enabled: true
mariadb_external_device: /dev/sda1
mariadb_external_mountpoint: /external
mariadb_external_fstype: exfat
# exFAT does not support POSIX ownership/permissions.
# Use a root-owned mount with group access for `mysql`, instead of forcing everything to `mysql:mysql`.
mariadb_external_mount_opts: "defaults,nofail,x-systemd.device-timeout=10,uid=0,gid=mysql,umask=0002"
mariadb_external_src_datadir: /srv/mariadb/mariadb
mariadb_external_dst_datadir: /external/mariadb
mariadb_external_backup_datadir: /srv/mariadb/mariadb.pre-external
mariadb_external_migration_marker: /external/mariadb/.prole-mariadb-external-migrated
# k3s worker (stateless workloads)
k3s_enabled: true
k3s_role: agent
k3s_cluster_init: false
k3s_server_url: "https://myrddin.prole.org:6443"
# k3s datastore now lives on merlin.
# NOTE: Use IP to avoid DNS drift during migration/cutover.
k3s_datastore_mariadb_host: 10.0.0.6
k3s_datastore_mariadb_port: 3306
k3s_datastore_mariadb_db: k3s
k3s_datastore_mariadb_user: prole_k3s
k3s_datastore_endpoint: "mysql://{{ k3s_datastore_mariadb_user }}:{{ k3s_datastore_mariadb_password | urlencode }}@tcp({{ k3s_datastore_mariadb_host }}:{{ k3s_datastore_mariadb_port }})/{{ k3s_datastore_mariadb_db }}"
k3s_tls_sans:
- merlin.prole.org
k3s_service_node_labels: []
# iSCSI
# `/var/lib/rancher` is local host storage (do not manage it via iSCSI).
iscsi_portal: 10.0.0.203
iscsi_targets: []
iscsi_absent_mounts: []