Files
Deploy-Laboratory/ansible/playbooks/verify/03-06.yml
2026-03-27 16:58:41 +08:00

98 lines
3.3 KiB
YAML

---
- name: Deploy 03-06 nfs pv+pvc demo (gated by env)
hosts: k3s_server
become: true
run_once: true
vars:
k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml
manifest_src: "{{ playbook_dir }}/../../files/03-06/nfs-pv-pvc-demo.yaml"
manifest_dest: /tmp/nfs-pv-pvc-demo.yaml
nfs_server_ip: "{{ lookup('env', 'NFS_SERVER_IP') | default('', true) }}"
nfs_export_path: "{{ lookup('env', 'NFS_EXPORT_PATH') | default('', true) }}"
tasks:
- name: "Gate - skip apply when NFS vars missing"
when: (nfs_server_ip | trim == "") or (nfs_export_path | trim == "")
block:
- ansible.builtin.debug:
msg: "[GATE] skipped doc_id=03-06 reason=missing_env missing=NFS_SERVER_IP,NFS_EXPORT_PATH"
- meta: end_play
- name: Copy manifest
ansible.builtin.copy:
src: "{{ manifest_src }}"
dest: "{{ manifest_dest }}"
mode: "0644"
- name: Replace NFS placeholders
ansible.builtin.replace:
path: "{{ manifest_dest }}"
regexp: "<NFS_SERVER_IP>"
replace: "{{ nfs_server_ip | trim }}"
- name: Replace NFS export path placeholder
ansible.builtin.replace:
path: "{{ manifest_dest }}"
regexp: "<NFS_EXPORT_PATH>"
replace: "{{ nfs_export_path | trim }}"
- name: Apply manifest
ansible.builtin.shell: |
set -e
KUBECONFIG={{ k3s_kubeconfig }} kubectl apply -f {{ manifest_dest }}
args:
executable: /bin/bash
changed_when: true
- name: Verify 03-06 nfs pvc demo (Bound)
hosts: k3s_server
become: true
run_once: true
vars:
k3s_kubeconfig: /etc/rancher/k3s/k3s.yaml
nfs_server_ip: "{{ lookup('env', 'NFS_SERVER_IP') | default('', true) }}"
nfs_export_path: "{{ lookup('env', 'NFS_EXPORT_PATH') | default('', true) }}"
tasks:
- name: "Gate - skip verify when NFS vars missing"
when: (nfs_server_ip | trim == "") or (nfs_export_path | trim == "")
block:
- ansible.builtin.debug:
msg: "[GATE] skipped doc_id=03-06 reason=missing_env missing=NFS_SERVER_IP,NFS_EXPORT_PATH"
- meta: end_play
- name: Wait pvc Bound
ansible.builtin.shell: |
set -e
KUBECONFIG={{ k3s_kubeconfig }} kubectl get pvc nfs-pvc-demo -n default -o jsonpath='{.status.phase}'
args:
executable: /bin/bash
register: pvc_phase
changed_when: false
until: pvc_phase.stdout | trim == "Bound"
retries: 40
delay: 3
- name: Teardown 03-06 nfs pv+pvc 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 }}"
nfs_server_ip: "{{ lookup('env', 'NFS_SERVER_IP') | default('', true) }}"
nfs_export_path: "{{ lookup('env', 'NFS_EXPORT_PATH') | default('', true) }}"
manifest_dest: /tmp/nfs-pv-pvc-demo.yaml
tasks:
- name: Skip teardown when gated
when: (nfs_server_ip | trim == "") or (nfs_export_path | trim == "")
meta: end_play
- name: Delete resources when VERIFY_TEARDOWN=1
when: verify_teardown == "1"
ansible.builtin.shell: |
set -e
KUBECONFIG={{ k3s_kubeconfig }} kubectl delete -f {{ manifest_dest }} --ignore-not-found=true
args:
executable: /bin/bash
changed_when: true