--- # 一键应用 Node.js demo 清单(与 docs/04-01~04-13 + ansible/files/nodejs-demo 对齐) # # 执行(在仓库根目录): # ansible-playbook -i ansible/inventory.ini ansible/playbooks/nodejs-demo-apply.yml \ # -e nodejs_demo_manifest=04-01-nodejs-demo.yaml # # 默认清单:04-01-nodejs-demo.yaml - 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/nodejs-demo" 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