Tuan-Dat Tran
3799dc16d9
fix(raspberry_pi): install docker-compose-plugin before starting stack
2026-06-03 08:31:21 +02:00
Tuan-Dat Tran
585c01ca62
feat(raspberry_pi): wire up role tasks
2026-06-03 08:27:16 +02:00
Tuan-Dat Tran
14b93bf4f5
feat(raspberry_pi): add zigbee2mqtt deploy task
2026-06-03 08:26:04 +02:00
Tuan-Dat Tran
42e790656d
feat(raspberry_pi): add zigbee2mqtt and mosquitto templates
2026-06-03 03:12:20 +02:00
Tuan-Dat Tran
da92fb0ccc
feat(raspberry_pi): add directory setup task
2026-06-03 03:11:17 +02:00
Tuan-Dat Tran
d655cc54e2
fix(raspberry_pi): remove host condition from handler
2026-06-03 03:03:20 +02:00
Tuan-Dat Tran
9115d30c59
feat(raspberry_pi): add defaults, handlers, and secrets placeholder
2026-06-03 03:01:20 +02:00
Tuan-Dat Tran
f6e2ce8c1a
fix(common): replace deprecated apt_repository with deb822_repository
2026-06-03 02:31:33 +02:00
Tuan-Dat Tran
956836dc67
fix(common): replace deprecated ansible_ fact references with ansible_facts[]
2026-06-03 02:17:08 +02:00
Tuan-Dat Tran
935389dc6d
feat(raspberry_pi): add empty role scaffold
2026-06-03 01:23:48 +02:00
Tuan-Dat Tran
c4327a7596
fix(common): support aarch64 in extra_packages
2026-05-31 23:41:39 +02:00
Tuan-Dat Tran
8da0ab98f8
fix(k3s_server): skip installation if k3s binary already exists
...
Primary and secondary install tasks now check k3s_status.stat.exists
so re-running the playbook is idempotent on already-provisioned nodes.
2026-04-27 21:43:42 +02:00
Tuan-Dat Tran
b4e093c9b1
fix(k3s_server): use VIP address in kubeconfig instead of k3s_server_name
...
k3s_server_name resolves to k3s.seyshiro.de which has no DNS entry.
Use k3s_vip (192.168.20.2) so the kubeconfig always works.
2026-04-27 21:41:55 +02:00
Tuan-Dat Tran
95715c7748
feat(k3s_server): persist control-plane NoSchedule taint in k3s config
...
Adds node-taint to /etc/rancher/k3s/config.yaml so the taint
survives node reboots. Taint is already applied live via kubectl.
2026-04-27 21:35:24 +02:00
Tuan-Dat Tran
5bc3024eaf
feat(k3s): replace nginx loadbalancer with kube-vip for control-plane HA
...
Deploys kube-vip as a DaemonSet on all k3s server nodes, advertising a
VIP (192.168.20.2) via ARP. Eliminates the single-point-of-failure
k3s-loadbalancer VM.
- New kube_vip role: RBAC + DaemonSet templates, TLS SAN cert rotation
- playbooks/kube-vip.yaml: migration playbook (serial=1, idempotent)
- Updated k3s install tasks (server primary/secondary, agent) to use k3s_vip
instead of the loadbalancer VM IP
- Added k3s_vip: 192.168.20.2 to group_vars (below DHCP range .11-.250)
Migration steps in playbook header comment.
2026-04-26 12:08:42 +02:00
Tuan-Dat Tran
543e9a2c97
fix(docker_host): remove /media/docker from NFS mount loop
...
/media/docker is no longer a valid NFS-backed path; was causing
mount failures on docker_host nodes.
2026-04-23 08:06:03 +02:00
Tuan-Dat Tran
b157dd0b89
feat(k3s_server): install etcd-client on control plane nodes
2026-04-22 19:40:24 +02:00
Tuan-Dat Tran
c16e7cf740
fix(k3s_server): use inventory_hostname for primary detection and delegate token fetch
...
Primary server detection previously used ansible_default_ipv4.address compared against
k3s_primary_server_ip, which breaks with --limit since facts are only gathered for the
targeted hosts, causing the variable to resolve to the wrong IP.
- Replace IP comparisons with `inventory_hostname == groups['k3s_server'] | first`
in main.yaml (primary install, secondary install, kubeconfig tasks)
- Delegate the node-token slurp to the primary server unconditionally so
pull_token.yaml works correctly when run against any single node with --limit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 23:30:57 +02:00
Tuan-Dat Tran
f0a45e3fda
fix: configure explicit NTP servers in timesyncd instead of relying on DHCP
...
Gateway at 192.168.20.1 was being provided via DHCP as the NTP server but
does not serve NTP, causing NodeClockNotSynchronising across all nodes.
2026-04-20 20:56:30 +02:00
Tuan-Dat Tran
b5f82e2978
fix: install kitty terminfo on all nodes via common role
2026-04-20 20:36:23 +02:00
Tuan-Dat Tran
29561c44c8
fix: enable and start systemd-timesyncd in common time role
...
systemd-timesyncd was installed via common_packages but never enabled or
started, causing NodeClockNotSynchronising alerts across all k3s nodes.
2026-04-20 20:18:19 +02:00
Tuan-Dat Tran
5a8c7f0248
feat(proxmox): add hosts config
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2026-02-28 11:30:58 +01:00
Tuan-Dat Tran
a9346881b0
refactor(edge_vps): reorganize certificate files
2026-02-25 00:26:08 +01:00
Tuan-Dat Tran
193da30e65
docs(edge_vps): update README with role documentation
2026-02-25 00:12:50 +01:00
Tuan-Dat Tran
fc2eefdfb0
feat(edge_vps): add main task orchestrator
2026-02-25 00:03:17 +01:00
Tuan-Dat Tran
274b9c310e
feat(edge_vps): add Elastic Agent setup task and templates
2026-02-25 00:00:00 +01:00
Tuan-Dat Tran
6fdd021604
feat(edge_vps): add Pangolin setup task and templates
2026-02-24 23:56:00 +01:00
Tuan-Dat Tran
1b82acad1f
feat(edge_vps): add Traefik setup task and template
2026-02-24 23:53:00 +01:00
Tuan-Dat Tran
d8822ad904
feat(edge_vps): add WireGuard setup task and template
2026-02-24 23:50:08 +01:00
Tuan-Dat Tran
caecfc7c1d
feat(edge_vps): add directory setup task
2026-02-24 23:47:34 +01:00
Tuan-Dat Tran
4907761649
feat(edge_vps): add role structure and handlers
2026-02-24 23:45:14 +01:00
Tuan-Dat Tran
a3cb1928ae
docs(argocd): add missing Ingress task and note about missing template
2026-02-16 09:25:36 +01:00
Tuan-Dat Tran
99f6876ce9
docs: Add changelog and update role documentation
2026-02-16 09:21:08 +01:00
Tuan-Dat Tran
ef652fac20
refactor: yml -> yaml
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-11-07 20:44:14 +01:00
Tuan-Dat Tran
9cb90a8020
feat(caddy): netcup->cf
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-10-25 09:25:40 +02:00
Tuan-Dat Tran
d9181515bb
feat(k3s): Added (temporary) node
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-10-19 01:33:42 +02:00
Tuan-Dat Tran
2909d6e16c
feat(nfs): Removed unused/removed nfs servers
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-15 23:29:03 +02:00
Tuan-Dat Tran
44626101de
feat(docker): match services that moved to k3s
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-15 23:29:03 +02:00
Tuan-Dat Tran
c1d6f13275
refactor(ansible-lint): fixed ansible-lint warnings
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-15 23:29:03 +02:00
Tuan-Dat Tran
282e98e90a
fix(proxmox): commented 'non-errors' on script
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-15 23:29:03 +02:00
Tuan-Dat Tran
9573cbfcad
feat(k3s): Added 2 nodes
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-07 21:21:33 +02:00
Tuan-Dat Tran
48aec11d8c
feat(common): added iscsi for longhorn on k3s
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-07 18:17:33 +02:00
Tuan-Dat Tran
a1da69ac98
feat(proxmox): check_vm as cronjob
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-09-02 19:52:49 +02:00
Tuan-Dat Tran
6eef96b302
feat(pre-commit): Added linting
2025-07-27 22:46:23 +02:00
Tuan-Dat Tran
2882abfc0b
Added README.md for roles
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-27 16:40:46 +02:00
Tuan-Dat Tran
dbaebaee80
cleanup: services moved to argocd
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-27 13:58:25 +02:00
Tuan-Dat Tran
89c51aa45c
feat(argo): app-of-app argo
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-25 07:58:41 +02:00
Tuan-Dat Tran
0139850ee3
feat(reverse_proxy): fix caddy letsencrypt
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-22 21:26:11 +02:00
Tuan-Dat Tran
976cad51e2
refactor(k3s): enhance cluster setup and enable ArgoCD apps
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-22 07:23:23 +02:00
Tuan-Dat Tran
e1a2248154
feat(kubernetes): add nfs-provisioner
...
Signed-off-by: Tuan-Dat Tran <tuan-dat.tran@tudattr.dev >
2025-07-15 23:24:52 +02:00