--- - name: Apply nodejs-demo Kubernetes manifests hosts: k3s_server become: true run_once: true vars: k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml nodejs_demo_manifest: "04-01-nodejs-demo.yaml" manifests_dir: "{{ playbook_dir }}/../../files/04-01" tasks: - name: Ensure manifest file exists ansible.builtin.stat: path: "{{ manifests_dir }}/{{ nodejs_demo_manifest }}" register: nodejs_manifest_stat delegate_to: localhost become: false - name: Fail if manifest not found ansible.builtin.fail: msg: "未找到 {{ manifests_dir }}/{{ nodejs_demo_manifest }},请从仓库根检查文件名" when: not nodejs_manifest_stat.stat.exists delegate_to: localhost become: false - name: Copy manifest to control plane ansible.builtin.copy: src: "{{ manifests_dir }}/{{ nodejs_demo_manifest }}" dest: "/tmp/{{ nodejs_demo_manifest }}" mode: "0644" - name: kubectl apply nodejs-demo manifest ansible.builtin.shell: | set -e KUBECONFIG={{ k3s_kubeconfig }} kubectl apply -f /tmp/{{ nodejs_demo_manifest }} register: nodejs_apply changed_when: "'configured' in nodejs_apply.stdout or 'created' in nodejs_apply.stdout" - name: Show kubectl apply output ansible.builtin.debug: var: nodejs_apply.stdout_lines - name: Verify 04-01 nodejs base (HTTP 200) 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.include_role: name: verify_common tasks_from: kubectl-rollout-status.yml vars: verify_rollout_ref: deployment/nodejs-demo verify_rollout_timeout_s: 240 - name: HTTP check /node ansible.builtin.include_role: name: verify_common tasks_from: http-curl-expect.yml vars: verify_http_entry_base: "{{ verify_entry_base }}" verify_http_path: "/node" verify_http_connect_timeout: 3 verify_http_max_time: 10 verify_http_assertion_label: nodejs_base_04_01_entry_http