Files
2026-03-29 09:08:01 +08:00

42 lines
1.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 可复用:按顺序对多个 label selector 执行 kubectl wait pod --for=condition=ready。
# 必填verify_kubectl_wait_items列表元素含 selector、timeout_s
# 可选verify_kubectl_wait_namespace默认 default、k3s_kubeconfig
- name: Assert verify_kubectl_wait_items for kubectl-wait-pods-ready
ansible.builtin.assert:
that:
- verify_kubectl_wait_items is defined
- verify_kubectl_wait_items | length > 0
fail_msg: "verify_common kubectl-wait-pods-ready需设置非空 verify_kubectl_wait_items"
- name: kubectl wait pods ready (verify_common)
ansible.builtin.shell: |
set -euo pipefail
KCFG="{{ k3s_kubeconfig | default('/etc/rancher/k3s/k3s.yaml') }}"
ns="{{ verify_kubectl_wait_namespace | default('default') }}"
{% for item in verify_kubectl_wait_items %}
echo "[OC-ASSERT] assertion=kubectl_wait_pod_ready selector={{ item.selector | quote }} namespace=${ns} timeout={{ item.timeout_s | int }}s"
ok=0
for attempt in 1 2 3 4 5 6 7 8; do
set +e
out=$(KUBECONFIG="$KCFG" kubectl wait --for=condition=ready pod \
-l "{{ item.selector }}" -n "$ns" --timeout={{ item.timeout_s | int }}s 2>&1)
rc=$?
set -e
if [ "$rc" -eq 0 ]; then ok=1; break; fi
if echo "$out" | grep -qE 'NotFound|not found'; then
echo "[OC-ASSERT] assertion=kubectl_wait_pod_ready selector={{ item.selector | quote }} retry=${attempt} reason=pod_churn_notfound"
sleep 3
continue
fi
echo "$out" >&2
exit "$rc"
done
if [ "$ok" != "1" ]; then
echo "[OC-ASSERT] assertion=kubectl_wait_pod_ready selector={{ item.selector | quote }} result=fail reason=exhausted_retries"
exit 1
fi
{% endfor %}
args:
executable: /bin/bash
changed_when: false