- import_playbook: "{{ playbook_dir }}/../nginx-matrix-deploy.yml" - name: Verify 02-05 nginx matrix (HTTP paths) hosts: k3s_server become: true run_once: true vars: k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml verify_entry_base: "{{ nginx_entry_base | default('http://' ~ k3s_server_ip) }}" tasks: - name: Verify M1~M4 deployments ready ansible.builtin.shell: | set -e KUBECONFIG={{ k3s_kubeconfig }} kubectl rollout status deployment/nginx-m1 -n default --timeout=120s KUBECONFIG={{ k3s_kubeconfig }} kubectl rollout status deployment/nginx-m2 -n default --timeout=120s KUBECONFIG={{ k3s_kubeconfig }} kubectl rollout status deployment/nginx-m3 -n default --timeout=180s KUBECONFIG={{ k3s_kubeconfig }} kubectl rollout status deployment/nginx-m4 -n default --timeout=180s args: executable: /bin/bash changed_when: false - name: HTTP check 4 paths (expect 200 and X-Backend marker) ansible.builtin.shell: | set +e base="{{ verify_entry_base | trim | regex_replace('/+$','') }}" fail=0 for id in 1 2 3 4; do url="$base/demo-m$id/" code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 --max-time 8 "$url" 2>/dev/null || echo "000") echo "$url -> $code" if [ "$code" != "200" ]; then echo "$url -> unexpected http_code=$code" fail=1 continue fi backend=$(curl -sS -D - -o /dev/null --connect-timeout 3 --max-time 8 "$url" 2>/dev/null \ | awk -F': ' '/^X-Backend:/{print $2; exit}' \ | tr -d '\r' || true) echo "$url -> X-Backend: ${backend:-}" if [ "$backend" != "M$id" ]; then fail=1 fi done exit $fail args: executable: /bin/bash changed_when: false - name: Teardown 02-05 nginx matrix (optional) hosts: k3s_server become: true run_once: true vars: k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml verify_teardown: "{{ (VERIFY_TEARDOWN | default('1')) | string }}" tasks: - name: Delete nginx matrix resources when VERIFY_TEARDOWN=1 when: verify_teardown == "1" ansible.builtin.shell: | set -e KUBECONFIG={{ k3s_kubeconfig }} kubectl delete -f /tmp/nginx-matrix/ -R --ignore-not-found=true args: executable: /bin/bash changed_when: true