--- - name: prepare cluster config hosts: k8s-stream gather_facts: no run_once: yes tasks: - name: configure node lists set_fact: kubernetes_nodes: "{{ groups['k8s-stream'] }}" kubernetes_nodes_master: "{{ groups['k8s-stream-master'] | first }}" - name: check if every node has a net_index assigned debug: msg: "nodes without net-index: {{ kubernetes_nodes | difference(kubernetes.net_index.keys()) | join(', ') }}" failed_when: kubernetes_nodes | difference(kubernetes.net_index.keys()) | length > 0 - name: install kubernetes and overlay network hosts: k8s-stream roles: ## Since `base` has a dependency for docker it would install and start the daemon ## without the docker daemon config file generated by `net`. ## This means that the docker daemon will create a bridge and install iptables rules ## upon first startup (the first time this playbook runs on a specific host). ## Since it is a tedious task to remove the interface and the firewall rules it is much ## easier to just run `net` before `base` as `net` does not need anything from `base`. - role: kubernetes-net - role: kubernetes-base - name: configure kubernetes master hosts: k8s-stream-master roles: - role: kubernetes-master - name: configure kubernetes nodes hosts: k8s-stream:!k8s-stream-master roles: - role: kubernetes-node ## TODO: cleanup (remove superflous nodes and delete bootstrap token)