68 lines
1.8 KiB
YAML
68 lines
1.8 KiB
YAML
---
|
|
- 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"
|