prole/infrastructure/playbooks/test_k3s_kubeconfig_rewrite.yml
chrisfu 60820b2b7c Checkpoint: ArgoCD IO load distribution and K3s configuration updates
ArgoCD IO load distribution: Updated k8s/argocd/install.yaml to use hostPath volumes for application-controller (/prole/d001), redis (/prole/d002), and repo-server (/prole/d003). Updated Ansible configure task to create hostPath directories on myrddin.prole.org.

K3s configuration and testing: Added test playbooks for kubeconfig rewriting and argument validation. Updated K3s install, configure, and image import tasks. Configured required mounts and host-specific variables for myrddin.prole.org.

Miscellaneous: Updated conf/prole.cfg with K3S_TOKEN. Bumped prole-db version and updated recovery manifest templates. Minor UI adjustments in cluster screen.
Co-authored-by: Junie <junie@jetbrains.com>
2026-03-04 12:23:15 -08:00

78 lines
2.6 KiB
YAML

---
- name: Test - k3s kubeconfig server rewrite (local)
hosts: localhost
connection: local
gather_facts: false
vars:
_sample_kubeconfig: |
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ZmFrZQ==
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
users:
- name: default
user:
client-certificate-data: ZmFrZQ==
client-key-data: ZmFrZQ==
_desired_server: https://myrddin.prole.org:6443
tasks:
- name: Old kubeconfig rewrite regex should break YAML (expected)
block:
- name: Apply old buggy regex
ansible.builtin.set_fact:
_kubeconfig_bad: >-
{{ _sample_kubeconfig
| regex_replace('server: https://[^\\s]+', 'server: ' ~ _desired_server) }}
- name: Attempt YAML parse (expected to fail)
ansible.builtin.set_fact:
_kubeconfig_bad_parsed: "{{ _kubeconfig_bad | from_yaml }}"
- name: Fail if YAML parse unexpectedly succeeded
ansible.builtin.fail:
msg: "Old regex unexpectedly produced valid YAML; test sample may need adjustment."
rescue:
- name: Mark expected failure as observed
ansible.builtin.set_fact:
_old_regex_failed_as_expected: true
always:
- name: Assert old regex failure was observed
ansible.builtin.assert:
that:
- _old_regex_failed_as_expected | default(false) | bool
- name: New kubeconfig rewrite regex should preserve YAML structure
ansible.builtin.set_fact:
_kubeconfig_good: >-
{{ _sample_kubeconfig
| regex_replace('server:\s*https?://\S+', 'server: ' ~ _desired_server) }}
- name: Parse rewritten kubeconfig
ansible.builtin.set_fact:
_kubeconfig_good_parsed: "{{ _kubeconfig_good | from_yaml }}"
changed_when: false
- name: Assert kubeconfig keys and server were rewritten
ansible.builtin.assert:
that:
- _kubeconfig_good_parsed is mapping
- (_kubeconfig_good_parsed.contexts | default([])) | length == 1
- (_kubeconfig_good_parsed.clusters | default([])) | length == 1
- (_kubeconfig_good_parsed.users | default([])) | length == 1
- _kubeconfig_good_parsed['current-context'] == 'default'
- _kubeconfig_good_parsed.clusters[0].cluster.server == _desired_server