--- - name: Create the directory for the kubernetes_config_file file: path: "{{ kubernetes_kubeadm_kubelet_config_file_path | dirname }}" state: directory - name: Deploy the config-file for kubeadm and kubelet template: src: "kubeadm-kubelet-config.j2" dest: "{{ kubernetes_kubeadm_kubelet_config_file_path }}" - name: Initialize Kubernetes control plane with kubeadm init command: > kubeadm init --config {{ kubernetes_kubeadm_kubelet_config_file_path }} {{ kubernetes_kubeadm_init_extra_opts }} register: kubeadmin_init when: (not kubernetes_init_stat.stat.exists) and (kubernetes_ignore_preflight_errors is not defined) - name: Initialize Kubernetes control plane with kubeadm init and ignore_preflight_errors command: > kubeadm init --config {{ kubernetes_kubeadm_kubelet_config_file_path }} --ignore-preflight-errors={{ kubernetes_ignore_preflight_errors }} {{ kubernetes_kubeadm_init_extra_opts }} register: kubeadmin_init when: (not kubernetes_init_stat.stat.exists) and (kubernetes_ignore_preflight_errors is defined) - name: Print the init output to screen. debug: var: kubeadmin_init.stdout verbosity: 2 when: not kubernetes_init_stat.stat.exists - name: Ensure .kube directory exists. file: path: ~/.kube state: directory mode: 0755 - name: Symlink the kubectl admin.conf to ~/.kube/conf. file: src: /etc/kubernetes/admin.conf dest: ~/.kube/config state: link mode: 0644 - name: Configure Flannel networking. command: "kubectl apply -f {{ kubernetes_flannel_manifest_file }}" register: flannel_result changed_when: "'created' in flannel_result.stdout" when: kubernetes_pod_network.cni == 'flannel' until: flannel_result is not failed retries: 12 delay: 5 - name: Configure Calico networking. command: "kubectl apply -f {{ kubernetes_calico_manifest_file }}" register: calico_result changed_when: "'created' in calico_result.stdout" when: kubernetes_pod_network.cni == 'calico' until: calico_result is not failed retries: 12 delay: 5 - name: Get Kubernetes version for Weave installation. shell: kubectl version | base64 | tr -d '\n' changed_when: false register: kubectl_version when: kubernetes_pod_network.cni == 'weave' until: kubectl_version is not failed retries: 12 delay: 5 - name: Configure Weave networking. command: "{{ item }}" with_items: - "kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version={{ kubectl_version.stdout_lines[0] }}" register: weave_result changed_when: "'created' in weave_result.stdout" when: kubernetes_pod_network.cni == 'weave' # TODO: Check if taint exists with something like `kubectl describe nodes` # instead of using kubernetes_init_stat.stat.exists check. - name: Allow pods on control plane (if configured). command: "kubectl taint nodes --all node-role.kubernetes.io/control-plane-" when: - kubernetes_allow_pods_on_control_plane | bool - not kubernetes_init_stat.stat.exists