fix: make image pre-pull roles fully best effort
Deploy Cluster / Terraform (push) Successful in 27s
Deploy Cluster / Ansible (push) Failing after 22m46s

The pre-pull roles were still blocking the playbook because they retried until
success and exhausted their retry budget during registry TLS timeouts. Keep the
image pulls as opportunistic cache warmers, but never let them fail the
bootstrap; log any missed images instead.
This commit is contained in:
2026-04-23 06:41:21 +00:00
parent ee6417c18e
commit f9bc53723f
2 changed files with 20 additions and 8 deletions
@@ -2,9 +2,15 @@
- name: Pre-pull bootstrap images into containerd - name: Pre-pull bootstrap images into containerd
command: /usr/local/bin/ctr -n k8s.io images pull {{ item }} command: /usr/local/bin/ctr -n k8s.io images pull {{ item }}
register: bootstrap_image_pull register: bootstrap_image_pull
retries: 12
delay: 15
until: bootstrap_image_pull.rc == 0
loop: "{{ bootstrap_prepull_images }}" loop: "{{ bootstrap_prepull_images }}"
changed_when: true changed_when: bootstrap_image_pull.rc == 0
failed_when: false failed_when: false
- name: Report bootstrap images that did not pre-pull
debug:
msg: >-
Bootstrap image pre-pull failed for {{ item.item }}: {{ item.stderr | default('no stderr') }}
loop: "{{ bootstrap_image_pull.results | default([]) }}"
loop_control:
label: "{{ item.item }}"
when: item.rc is defined and item.rc != 0
@@ -2,9 +2,15 @@
- name: Pre-pull Rancher images into containerd - name: Pre-pull Rancher images into containerd
command: /usr/local/bin/ctr -n k8s.io images pull {{ item }} command: /usr/local/bin/ctr -n k8s.io images pull {{ item }}
register: rancher_image_pull register: rancher_image_pull
retries: 5
delay: 15
until: rancher_image_pull.rc == 0
loop: "{{ rancher_images_to_prepull }}" loop: "{{ rancher_images_to_prepull }}"
changed_when: true changed_when: rancher_image_pull.rc == 0
failed_when: false failed_when: false
- name: Report Rancher images that did not pre-pull
debug:
msg: >-
Rancher image pre-pull failed for {{ item.item }}: {{ item.stderr | default('no stderr') }}
loop: "{{ rancher_image_pull.results | default([]) }}"
loop_control:
label: "{{ item.item }}"
when: item.rc is defined and item.rc != 0