---
- name: Install kubectl
dnf:
name: kubectl
disable_excludes: kubernetes
state: present
- name: Pull kubernetes container images
command: kubeadm config images pull
- name: Initialize kubernetes cluster
shell: kubeadm init --apiserver-advertise-address={{ kubernetes.control_ip }} --pod-network-cidr={{ calico.cidr }} --cri-socket=unix:///run/containerd/containerd.sock
register: output
- name: Save output file from master
copy:
content: "{{ output.stdout }}"
dest: /tmp/kube-output.txt
- name: Copy join command to local file
fetch:
src: /tmp/kube-output.txt
dest: /home/{{ user }}/kube-output.txt
flat: yes
- name: Creates kubeconfig directory
file:
path: /home/{{ user }}/.kube
state: directory
- name: Copy kubeconfig file
copy:
src: /etc/kubernetes/admin.conf
dest: /home/{{ user }}/.kube/config
owner: "{{ user }}"
group: "{{ user }}"
mode: "0644"
remote_src: yes
- name: Add kubectl alias
lineinfile:
path: /home/{{ user }}/.bashrc
line: "alias k='kubectl'"
state: present
- name: Fetch file and set permissions
fetch:
src: /home/{{ user }}/.kube/config
dest: /home/{{ user }}/kubeconfig
flat: yes
validate_checksum: yes
- name: Download Calico YAML
get_url:
url: https://raw.githubusercontent.com/projectcalico/calico/{{ calico.version }}/manifests/calico.yaml
dest: /tmp/calico.yaml
- name: Apply Calico YAML
become_user: "{{ user }}"
shell: kubectl apply -f calico.yaml
args:
chdir: /tmp/
- name: Pause for Calico pods to ready
become_user: "{{ user }}"
shell: kubectl wait pod --all --for=condition=Ready --namespace=kube-system --timeout=300s