--- - name: Initialize Kubernetes master hosts: masters become: true vars: pod_network_cidr: "10.244.0.0/16" # Flannel default tasks: - name: Check if cluster already initialized stat: path: /etc/kubernetes/admin.conf register: kubeadm_init_done - name: Run kubeadm init command: > kubeadm init --apiserver-advertise-address={{ ansible_host }} --pod-network-cidr={{ pod_network_cidr }} when: not kubeadm_init_done.stat.exists register: kubeadm_output - name: Create .kube dir for cloud-user file: path: /home/cloud-user/.kube state: directory mode: "0700" owner: cloud-user group: cloud-user - name: Copy admin.conf to cloud-user kubeconfig copy: src: /etc/kubernetes/admin.conf dest: /home/cloud-user/.kube/config remote_src: true owner: cloud-user group: cloud-user mode: "0600" - name: Create .kube dir for root (enables sudo kubectl) file: path: /root/.kube state: directory mode: "0700" - name: Copy admin.conf to root kubeconfig copy: src: /etc/kubernetes/admin.conf dest: /root/.kube/config remote_src: true mode: "0600" - name: Install Flannel CNI command: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml environment: KUBECONFIG: /etc/kubernetes/admin.conf - name: Get join command command: kubeadm token create --print-join-command register: join_command - name: Save join command to local file local_action: module: copy content: "{{ join_command.stdout }}" dest: /tmp/k8s_join_command.sh mode: "0600"