mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-02-01 01:28:11 -03:30
Calling bootstrap in facts.yaml so that we can always collect facts even on new nodes. This is useful when you want to add nodes to an inventory beforehand and then collect facts and scale the cluster with the scale playbook and --limits. With dynamic inventory sometimes it might be more difficult to add the nodes after running the facts playbook in this specific situation. Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@proton.ch>
159 lines
6.1 KiB
YAML
159 lines
6.1 KiB
YAML
---
|
|
- name: Check ansible version
|
|
import_playbook: ansible_version.yml
|
|
|
|
- name: Ensure compatibility with old groups
|
|
import_playbook: legacy_groups.yml
|
|
|
|
- hosts: bastion[0]
|
|
gather_facts: False
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: bastion-ssh-config, tags: ["localhost", "bastion"] }
|
|
|
|
- name: Gather facts
|
|
tags: always
|
|
import_playbook: facts.yml
|
|
|
|
- name: Download images to ansible host cache via first kube_control_plane node
|
|
hosts: kube_control_plane[0]
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults, when: "not skip_downloads and download_run_once and not download_localhost"}
|
|
- { role: kubernetes/preinstall, tags: preinstall, when: "not skip_downloads and download_run_once and not download_localhost" }
|
|
- { role: download, tags: download, when: "not skip_downloads and download_run_once and not download_localhost" }
|
|
|
|
- name: Prepare nodes for upgrade
|
|
hosts: k8s_cluster:etcd:calico_rr
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: kubernetes/preinstall, tags: preinstall }
|
|
- { role: download, tags: download, when: "not skip_downloads" }
|
|
|
|
- name: Upgrade container engine on non-cluster nodes
|
|
hosts: etcd:calico_rr:!k8s_cluster
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
serial: "{{ serial | default('20%') }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: container-engine, tags: "container-engine", when: deploy_container_engine }
|
|
|
|
- hosts: etcd:kube_control_plane
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- role: etcd
|
|
tags: etcd
|
|
vars:
|
|
etcd_cluster_setup: true
|
|
etcd_events_cluster_setup: "{{ etcd_events_cluster_enabled }}"
|
|
when: etcd_deployment_type != "kubeadm"
|
|
|
|
- hosts: k8s_cluster
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- role: etcd
|
|
tags: etcd
|
|
vars:
|
|
etcd_cluster_setup: false
|
|
etcd_events_cluster_setup: false
|
|
when:
|
|
- etcd_deployment_type != "kubeadm"
|
|
- kube_network_plugin in ["calico", "flannel", "canal", "cilium"] or cilium_deploy_additionally | default(false) | bool
|
|
- kube_network_plugin != "calico" or calico_datastore == "etcd"
|
|
|
|
- name: Handle upgrades to master components first to maintain backwards compat.
|
|
gather_facts: False
|
|
hosts: kube_control_plane
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
serial: 1
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: upgrade/pre-upgrade, tags: pre-upgrade }
|
|
- { role: container-engine, tags: "container-engine", when: deploy_container_engine }
|
|
- { role: kubernetes/node, tags: node }
|
|
- { role: kubernetes/control-plane, tags: master, upgrade_cluster_setup: true }
|
|
- { role: kubernetes/client, tags: client }
|
|
- { role: kubernetes/node-label, tags: node-label }
|
|
- { role: kubernetes-apps/cluster_roles, tags: cluster-roles }
|
|
- { role: kubernetes-apps, tags: csi-driver }
|
|
- { role: upgrade/post-upgrade, tags: post-upgrade }
|
|
|
|
- name: Upgrade calico and external cloud provider on all masters, calico-rrs, and nodes
|
|
hosts: kube_control_plane:calico_rr:kube_node
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
serial: "{{ serial | default('20%') }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: kubernetes-apps/external_cloud_controller, tags: external-cloud-controller }
|
|
- { role: network_plugin, tags: network }
|
|
- { role: kubernetes-apps/network_plugin, tags: network }
|
|
- { role: kubernetes-apps/kubelet-csr-approver, tags: kubelet-csr-approver }
|
|
- { role: kubernetes-apps/policy_controller, tags: policy-controller }
|
|
|
|
- name: Finally handle worker upgrades, based on given batch size
|
|
hosts: kube_node:calico_rr:!kube_control_plane
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
serial: "{{ serial | default('20%') }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: upgrade/pre-upgrade, tags: pre-upgrade }
|
|
- { role: container-engine, tags: "container-engine", when: deploy_container_engine }
|
|
- { role: kubernetes/node, tags: node }
|
|
- { role: kubernetes/kubeadm, tags: kubeadm }
|
|
- { role: kubernetes/node-label, tags: node-label }
|
|
- { role: upgrade/post-upgrade, tags: post-upgrade }
|
|
|
|
- hosts: kube_control_plane[0]
|
|
gather_facts: False
|
|
any_errors_fatal: true
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: win_nodes/kubernetes_patch, tags: ["master", "win_nodes"] }
|
|
|
|
- hosts: calico_rr
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: network_plugin/calico/rr, tags: network }
|
|
|
|
- hosts: kube_control_plane
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: kubernetes-apps/ingress_controller, tags: ingress-controller }
|
|
- { role: kubernetes-apps/external_provisioner, tags: external-provisioner }
|
|
- { role: kubernetes-apps, tags: apps }
|
|
|
|
- name: Apply resolv.conf changes now that cluster DNS is up
|
|
hosts: k8s_cluster
|
|
gather_facts: False
|
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
environment: "{{ proxy_disable_env }}"
|
|
roles:
|
|
- { role: kubespray-defaults }
|
|
- { role: kubernetes/preinstall, when: "dns_mode != 'none' and resolvconf_mode == 'host_resolvconf'", tags: resolvconf, dns_late: true }
|