110 lines
3.4 KiB
YAML
110 lines
3.4 KiB
YAML
- name: Assert docs file exists
|
|
ansible.builtin.stat:
|
|
path: "{{ repo_root }}/docs/{{ doc_filename }}"
|
|
register: _doc_stat
|
|
|
|
- name: Fail when docs file missing
|
|
ansible.builtin.assert:
|
|
that:
|
|
- _doc_stat.stat.exists
|
|
fail_msg: "docs file missing: docs/{{ doc_filename }}"
|
|
|
|
- name: Find matching ansible/files doc_id directory
|
|
ansible.builtin.find:
|
|
paths: "{{ repo_root }}/ansible/files"
|
|
file_type: directory
|
|
patterns: "{{ doc_id }}"
|
|
use_regex: false
|
|
register: _files_dirs
|
|
|
|
- name: Fail when ansible/files doc_id directory missing
|
|
ansible.builtin.assert:
|
|
that:
|
|
- _files_dirs.matched | int >= 1
|
|
fail_msg: "ansible/files missing doc_id directory: ansible/files/{{ doc_id }}"
|
|
|
|
- name: Show noop verification summary
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "doc_id={{ doc_id }}"
|
|
- "doc={{ doc_filename }}"
|
|
- "files_dirs={{ _files_dirs.files | map(attribute='path') | list }}"
|
|
|
|
- name: Verify cluster reachable (kubectl get nodes) [runbook baseline]
|
|
ansible.builtin.shell: |
|
|
set -euo pipefail
|
|
KUBECONFIG={{ k3s_kubeconfig | default('/etc/rancher/k3s/k3s.yaml') }} kubectl get nodes
|
|
args:
|
|
executable: /bin/bash
|
|
delegate_to: "{{ groups['k3s_server'][0] }}"
|
|
become: true
|
|
run_once: true
|
|
changed_when: false
|
|
|
|
- name: Verify core namespace exists (kube-system) [runbook baseline]
|
|
ansible.builtin.shell: |
|
|
set -euo pipefail
|
|
KUBECONFIG={{ k3s_kubeconfig | default('/etc/rancher/k3s/k3s.yaml') }} kubectl get ns kube-system
|
|
args:
|
|
executable: /bin/bash
|
|
delegate_to: "{{ groups['k3s_server'][0] }}"
|
|
become: true
|
|
run_once: true
|
|
changed_when: false
|
|
|
|
- name: Find YAML manifests under ansible/files doc_id dirs
|
|
ansible.builtin.find:
|
|
paths: "{{ _files_dirs.files | map(attribute='path') | list }}"
|
|
file_type: file
|
|
patterns:
|
|
- "*.yml"
|
|
- "*.yaml"
|
|
recurse: true
|
|
use_regex: false
|
|
register: _files_manifests
|
|
|
|
- name: Show manifest count summary
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "doc_id={{ doc_id }}"
|
|
- "manifest_files={{ _files_manifests.matched | default(0) }}"
|
|
- "manifest_paths={{ (_files_manifests.files | map(attribute='path') | list)[:12] }}"
|
|
|
|
- name: Build kubernetes-manifest validation list (exclude example/non-k8s files)
|
|
ansible.builtin.set_fact:
|
|
_k8s_manifest_files: >-
|
|
{{
|
|
(_files_manifests.files | default([]))
|
|
| rejectattr('path', 'search', '\\.example\\.')
|
|
| rejectattr('path', 'search', 'docker-compose')
|
|
| list
|
|
}}
|
|
|
|
- name: Show filtered kubernetes manifest count
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "doc_id={{ doc_id }}"
|
|
- "k8s_manifest_files={{ _k8s_manifest_files | length }}"
|
|
- "k8s_manifest_paths={{ (_k8s_manifest_files | map(attribute='path') | list)[:12] }}"
|
|
|
|
- name: Server-side dry-run apply (kubectl apply --dry-run=server) [doc assertion]
|
|
ansible.builtin.shell: |
|
|
set -euo pipefail
|
|
KUBECONFIG={{ k3s_kubeconfig | default('/etc/rancher/k3s/k3s.yaml') }} \
|
|
kubectl apply --dry-run=client -f -
|
|
args:
|
|
executable: /bin/bash
|
|
stdin: "{{ lookup('ansible.builtin.file', item.path) }}"
|
|
loop: "{{ _files_manifests.files }}"
|
|
loop_control:
|
|
label: "{{ item.path }}"
|
|
delegate_to: "{{ groups['k3s_server'][0] }}"
|
|
become: true
|
|
run_once: true
|
|
changed_when: false
|
|
when:
|
|
- (_files_manifests.matched | default(0) | int) > 0
|
|
- "'example.' not in item.path"
|
|
- "'docker-compose' not in item.path"
|
|
|