--- # Converges one node of the cluster: the same prep either way, then branch on # which k3s role it plays. k3s_node_role is set per group, not per host — see # inventory/group_vars/k3s_control_plane.yml (server) and k3s_workers.yml # (agent) — so adding a fifth Pi later is a hosts.yml edit, not a role change. - name: Validate k3s_node_role ansible.builtin.assert: that: k3s_node_role in ['server', 'agent'] fail_msg: >- k3s_node_role is '{{ k3s_node_role }}'; expected 'server' or 'agent'. Check inventory/group_vars/k3s_control_plane.yml and k3s_workers.yml. quiet: true - name: Prepare the node for k3s ansible.builtin.include_tasks: prep.yml - name: Install the k3s server (control plane) ansible.builtin.include_tasks: server.yml when: k3s_node_role == 'server' - name: Install the k3s agent (worker) ansible.builtin.include_tasks: agent.yml when: k3s_node_role == 'agent'