mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-10-29 22:03:22 -02:30
The plays carry `any_errors_fatal: "{{ any_errors_fatal | default(true) }}"`,
added in #1201 so the behaviour could be turned off.
`any_errors_fatal` is an Ansible play keyword, and Ansible reserves keyword
names in the variable namespace. Setting it through -e, group_vars or
host_vars is rejected with "Found variable using reserved name:
any_errors_fatal" and the value never reaches the play, so the expression
always falls through to `default(true)`. The knob has been inert since it was
introduced.
Rename the variable to `kubespray_any_errors_fatal`. Default behaviour is
unchanged -- still fatal -- but `-e kubespray_any_errors_fatal=false` now
works as #1201 intended.
This matters most in playbooks/internal_facts.yml, where the fatal bootstrap
play runs ahead of the play that gathers and caches facts: one unreachable
host aborts the run before any facts are cached, the playbook still exits 0,
and a later `scale.yml --limit=...` refuses because the excluded hosts have
no cache entries. roles/network_facts already sets ignore_unreachable: true
for this reason, but it never executes.
Refs #13407
Claude-Session: https://claude.ai/code/session_017RCEoUNR9gthd455d8Anrx
Signed-off-by: Weigang Geng <3356786+gengwg@users.noreply.github.com>
Co-authored-by: Weigang Geng <3356786+gengwg@users.noreply.github.com>
62 lines
2.3 KiB
YAML
62 lines
2.3 KiB
YAML
---
|
|
### NOTE: This playbook cannot be used to deploy any new nodes to the cluster.
|
|
### Additional information:
|
|
### * Will not upgrade etcd
|
|
### * Will not upgrade network plugins
|
|
### * Will not upgrade Docker
|
|
### * Will not pre-download containers or kubeadm
|
|
### * Currently does not support Vault deployment.
|
|
###
|
|
### In most cases, you probably want to use upgrade-cluster.yml playbook and
|
|
### not this one.
|
|
|
|
- name: Setup ssh config to use the bastion
|
|
hosts: localhost
|
|
gather_facts: false
|
|
roles:
|
|
- { role: kubespray_defaults}
|
|
- { role: bastion-ssh-config, tags: ["localhost", "bastion"]}
|
|
|
|
- name: Bootstrap hosts OS for Ansible
|
|
hosts: k8s_cluster:etcd:calico_rr
|
|
any_errors_fatal: "{{ kubespray_any_errors_fatal | default(true) }}"
|
|
gather_facts: false
|
|
vars:
|
|
# Need to disable pipelining for bootstrap_os as some systems have requiretty in sudoers set, which makes pipelining
|
|
# fail. bootstrap_os fixes this on these systems, so in later plays it can be enabled.
|
|
ansible_ssh_pipelining: false
|
|
roles:
|
|
- { role: kubespray_defaults}
|
|
- { role: bootstrap_os, tags: bootstrap_os}
|
|
|
|
- name: Preinstall
|
|
hosts: k8s_cluster:etcd:calico_rr
|
|
any_errors_fatal: "{{ kubespray_any_errors_fatal | default(true) }}"
|
|
roles:
|
|
- { role: kubespray_defaults}
|
|
- { role: kubernetes/preinstall, tags: preinstall }
|
|
|
|
- name: Handle upgrades to control plane components first to maintain backwards compat.
|
|
hosts: kube_control_plane
|
|
any_errors_fatal: "{{ kubespray_any_errors_fatal | default(true) }}"
|
|
serial: 1
|
|
roles:
|
|
- { role: kubespray_defaults}
|
|
- { role: upgrade/pre-upgrade, tags: pre-upgrade }
|
|
- { role: kubernetes/node, tags: node }
|
|
- { role: kubernetes/control-plane, tags: master, upgrade_cluster_setup: true }
|
|
- { role: kubernetes/client, tags: client }
|
|
- { role: kubernetes-apps/cluster_roles, tags: cluster-roles }
|
|
- { role: upgrade/post-upgrade, tags: post-upgrade }
|
|
|
|
- name: Finally handle worker upgrades, based on given batch size
|
|
hosts: kube_node:!kube_control_plane
|
|
any_errors_fatal: "{{ kubespray_any_errors_fatal | default(true) }}"
|
|
serial: "{{ serial | default('20%') }}"
|
|
roles:
|
|
- { role: kubespray_defaults}
|
|
- { role: upgrade/pre-upgrade, tags: pre-upgrade }
|
|
- { role: kubernetes/node, tags: node }
|
|
- { role: upgrade/post-upgrade, tags: post-upgrade }
|
|
- { role: kubespray_defaults}
|