147 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| 
 | |
| - name: initialize Kubernetes cluster
 | |
|   block:
 | |
|     - name: Intilizing Kubernetes Cluster
 | |
|       #command: kubeadm init --pod-network-cidr "{{ KubernetesPodSubnet }}" --apiserver-advertise-address "{{ ansible_default_ipv4.address }}" --ignore-preflight-errors Mem --cri-socket=unix:///var/run/crio/crio.sock
 | |
|       command: kubeadm init --pod-network-cidr "{{ KubernetesPodSubnet }}" --service-cidr "{{ KubernetesServiceSubnet }}" --apiserver-advertise-address "0.0.0.0" --ignore-preflight-errors Mem #--cri-socket=unix:///var/run/containerd/containerd.sock
 | |
|       when: 
 | |
|         - not KubernetesInitialized.stat.exists
 | |
| 
 | |
|   rescue:
 | |
|     - name: Reset Kubeadmn
 | |
|       ansible.builtin.shell: "{{ item }}"
 | |
|       #register: kube_reset
 | |
|       failed_when: item.rc != 0
 | |
|       with_items:
 | |
|         - kubeadm reset --force
 | |
|         - rm -Rf /etc/cni/net.d
 | |
| 
 | |
| 
 | |
| - name: Check if kubernetes has been Initialized
 | |
|   stat:
 | |
|     path: /etc/kubernetes/admin.conf
 | |
|   register: KubernetesInitialized
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: fetch kubernetes health
 | |
|   ansible.builtin.shell: " wget http://localhost:10248/healthz -q -O - || true"
 | |
|   register: KubernetesHealth
 | |
|   changed_when: true == false
 | |
|   when: KubernetesInitialized.stat.exists
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: set kubeernetes health fact
 | |
|   set_fact:
 | |
|     kube_health: "{{ KubernetesHealth.stdout | default(false) == 'ok' }}"
 | |
|   changed_when: true == false
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: Create directory for kube config.
 | |
|   become_method: sudo
 | |
|   become: yes
 | |
|   file: 
 | |
|     #path: /home/{{ ansible_user }}/.kube
 | |
|     path: ~/.kube
 | |
|     state: directory
 | |
|     owner: "{{ ansible_user }}"
 | |
|     group: "{{ ansible_user }}"
 | |
|     mode: 0700
 | |
|   # when: Kubernetes_Master
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: Copy Kube config for local user
 | |
|   copy:
 | |
|     remote_src: yes
 | |
|     src: /etc/kubernetes/admin.conf
 | |
|     #dest: /home/{{ ansible_user }}/.kube/config
 | |
|     dest: ~/.kube/config
 | |
|     owner: "{{ ansible_user }}"
 | |
|     group: "{{ ansible_user }}"
 | |
|     mode: 0700
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: Add calico networking.
 | |
|   template:
 | |
|     src: "calico.yaml.j2"
 | |
|     dest: /etc/kubernetes/manifests/calico.yaml
 | |
|     owner: root
 | |
|     mode: 0744
 | |
| 
 | |
| 
 | |
| - name: apply calico manifest
 | |
|   command: kubectl apply -f /etc/kubernetes/manifests/calico.yaml
 | |
|   tags:
 | |
|     - install
 | |
|     - manifest
 | |
| 
 | |
| 
 | |
| - name: create remote workdir
 | |
|   file:
 | |
|     path: "{{ item }}"
 | |
|     state: directory
 | |
|     mode: 0700
 | |
|   with_items:
 | |
|     - /tmp/ansible/
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name:  Create local workdir
 | |
|   file:
 | |
|     path: "{{ item }}"
 | |
|     state: directory
 | |
|     mode: 0700
 | |
|   delegate_to: localhost
 | |
|   connection: local
 | |
|   with_items:
 | |
|     - /tmp/ansible/
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: get join command
 | |
|   ansible.builtin.shell: kubeadm token create --print-join-command > /tmp/ansible/join_kubernetes.sh
 | |
|   changed_when: true == false
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
| - name: download join command
 | |
|   fetch:
 | |
|     src: /tmp/ansible/join_kubernetes.sh
 | |
|     dest: /tmp/ansible/
 | |
|     flat: yes
 | |
|   changed_when: true == false
 | |
|   tags:
 | |
|     - always
 | |
| 
 | |
| 
 | |
|   # always:
 | |
| 
 | |
|   #   - name:  remove remote workdir
 | |
|   #     file:
 | |
|   #       path: "{{ item }}"
 | |
|   #       state: absent
 | |
|   #     with_items:
 | |
|   #       - /tmp/ansible/join_kubernetes.sh
 | |
|   #     changed_when: true == false
 | |
| 
 | |
|   # when: 
 | |
|   #   #- Kubernetes_Prime
 | |
|   #   #- KubernetesInit.stat.exists
 | |
|   #   - kubernetes_config.cluster.prime.name == inventory_hostname
 | |
| 
 | |
| 
 | |
| 
 |