# [optional] to synchronize time of nodes with 'chrony' - hosts: all roles: - { role: chrony, when: "groups['chrony']|length > 0" } # to create CA, kubeconfig, kube-proxy.kubeconfig etc. - hosts: localhost roles: - deploy # prepare tasks for all nodes - hosts: - kube-master - kube-node - etcd roles: - prepare # to install etcd cluster - hosts: etcd roles: - etcd # to install container runtime - hosts: - kube-master - kube-node roles: - { role: docker, when: "CONTAINER_RUNTIME == 'docker'" } - { role: containerd, when: "CONTAINER_RUNTIME == 'containerd'" } # to set up 'kube-master' nodes - hosts: kube-master roles: - kube-master - kube-node tasks: - name: Making master nodes SchedulingDisabled shell: "{{ bin_dir }}/kubectl cordon {{ inventory_hostname }} " when: "inventory_hostname not in groups['kube-node']" ignore_errors: true - name: Setting master role name shell: "{{ bin_dir }}/kubectl label node {{ inventory_hostname }} kubernetes.io/role=master --overwrite" ignore_errors: true # to set up 'kube-node' nodes - hosts: kube-node roles: - { role: kube-node, when: "inventory_hostname not in groups['kube-master']" } # to install network plugin, only one can be choosen - hosts: - kube-master - kube-node roles: - { role: calico, when: "CLUSTER_NETWORK == 'calico'" } - { role: cilium, when: "CLUSTER_NETWORK == 'cilium'" } - { role: flannel, when: "CLUSTER_NETWORK == 'flannel'" } - { role: kube-router, when: "CLUSTER_NETWORK == 'kube-router'" } - { role: kube-ovn, when: "CLUSTER_NETWORK == 'kube-ovn'" } # to install cluster-addons - hosts: - kube-node roles: - cluster-addon