日常更新
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# 可复用:按顺序对多个 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
|
||||
Reference in New Issue
Block a user