- import_playbook: "{{ playbook_dir }}/../nodejs-demo-apply.yml" - name: Verify 04-01 nodejs demo (rollout + HTTP) hosts: k3s_server become: true run_once: true vars: k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml verify_entry_base: "{{ nodejs_entry_base | default('http://' ~ k3s_server_ip) }}" tasks: - name: Rollout status nodejs-demo ansible.builtin.shell: | set -e KUBECONFIG={{ k3s_kubeconfig }} kubectl rollout status deployment/nodejs-demo -n default --timeout=180s args: executable: /bin/bash changed_when: false - name: HTTP check /node (expect 200 and Hello World) ansible.builtin.shell: | set -e base="{{ verify_entry_base | trim | regex_replace('/+$','') }}" url="$base/node" code=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 --max-time 8 "$url" 2>/dev/null || echo "000") echo "$url -> $code" test "$code" = "200" body=$(curl -sS --connect-timeout 3 --max-time 8 "$url" 2>/dev/null || true) echo "$body" | grep -q "Hello World from Node.js" args: executable: /bin/bash changed_when: false - name: Teardown 04-01 nodejs demo (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 nodejs-demo resources when VERIFY_TEARDOWN=1 when: verify_teardown == "1" ansible.builtin.shell: | set -e KUBECONFIG={{ k3s_kubeconfig }} kubectl delete deploy/nodejs-demo svc/nodejs-demo ing/nodejs-demo -n default --ignore-not-found=true args: executable: /bin/bash changed_when: true