You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.0 KiB

  1. ---
  2. - name: Set kubeadm_discovery_address
  3. set_fact:
  4. kubeadm_discovery_address: >-
  5. {%- if "127.0.0.1" in kube_apiserver_endpoint or "localhost" in kube_apiserver_endpoint -%}
  6. {{ first_kube_master }}:{{ kube_apiserver_port }}
  7. {%- else -%}
  8. {{ kube_apiserver_endpoint }}
  9. {%- endif %}
  10. tags:
  11. - facts
  12. - name: Create kubeadm ControlPlane config
  13. template:
  14. src: "kubeadm-controlplane.{{ kubeadmConfig_api_version }}.yaml.j2"
  15. dest: "{{ kube_config_dir }}/kubeadm-controlplane.yaml"
  16. backup: yes
  17. when:
  18. - inventory_hostname != groups['kube-master']|first
  19. - not kubeadm_already_run.stat.exists
  20. - name: Wait for k8s apiserver
  21. wait_for:
  22. host: "{{kubeadm_discovery_address.split(':')[0]}}"
  23. port: "{{kubeadm_discovery_address.split(':')[1]}}"
  24. timeout: 180
  25. - name: Upload certificates so they are fresh and not expired
  26. command: >-
  27. {{ bin_dir }}/kubeadm init phase
  28. --config {{ kube_config_dir}}/kubeadm-config.yaml
  29. upload-certs --experimental-upload-certs
  30. {% if kubeadm_certificate_key is defined %}
  31. --certificate-key={{ kubeadm_certificate_key }}
  32. {% endif %}
  33. run_once: yes
  34. register: kubeadm_upload_cert
  35. delegate_to: "{{ groups['kube-master'][0] }}"
  36. - name: Parse certificate key if not set
  37. set_fact:
  38. kubeadm_certificate_key: "{{ hostvars[groups['kube-master'][0]]['kubeadm_upload_cert'].stdout_lines[-1] | trim }}"
  39. when: kubeadm_certificate_key is undefined
  40. - name: Joining control plane node to the cluster.
  41. command: >-
  42. {{ bin_dir }}/kubeadm join
  43. --config {{ kube_config_dir}}/kubeadm-controlplane.yaml
  44. --ignore-preflight-errors=all
  45. {% if kubeadm_certificate_key is defined %}
  46. --certificate-key={{ kubeadm_certificate_key }}
  47. {% endif %}
  48. register: kubeadm_join_control_plane
  49. when:
  50. - inventory_hostname != groups['kube-master']|first
  51. - not kubeadm_already_run.stat.exists
  52. environment:
  53. PATH: "{{ bin_dir }}:{{ ansible_env.PATH }}"
  54. - name: Set secret_changed to false to avoid extra token rotation
  55. set_fact:
  56. secret_changed: false