prole/infrastructure/roles/k3s/tasks/optional_workloads_policy_eval.yml
chrisfu 133b719479 Align CNPG bootstrap placement with Ansible policy
Prefer infra-managed manifests for bootstrap; reconcile CNPG instances based on Ready+schedulable labeled db nodes; update manifests to use node-role affinity + anti-affinity; add policy/tests and config touch-ups (incl. prole.cfg).
2026-03-18 22:06:41 -07:00

30 lines
1.2 KiB
YAML

---
- name: Evaluate optional-workloads policy (ready + schedulable) - build candidates
ansible.builtin.set_fact:
_k3s_ready_node_candidates: >-
{{ (_k3s_nodes_list.stdout_lines | default([])
| select('search', ' Ready')
| list) }}
_k3s_scheduling_disabled_node_candidates: >-
{{ (_k3s_nodes_list.stdout_lines | default([])
| select('search', 'SchedulingDisabled')
| list) }}
optional_workloads_min_ready_schedulable_nodes: >-
{{ (k3s_optional_workloads_min_nodes_cfg | int) }}
changed_when: false
- name: Evaluate optional-workloads policy (ready + schedulable) - count ready schedulable nodes
ansible.builtin.set_fact:
ready_schedulable_nodes: >-
{{ ((_k3s_ready_node_candidates | default([]))
| difference(_k3s_scheduling_disabled_node_candidates | default([]))
| length) | int }}
changed_when: false
- name: Evaluate optional-workloads policy (ready + schedulable) - compute allow/deny
ansible.builtin.set_fact:
optional_workloads_allowed: >-
{{ (ready_schedulable_nodes | int) >= (optional_workloads_min_ready_schedulable_nodes | int) }}
changed_when: false