98 lines
3.3 KiB
YAML
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
|
|
|