Compare commits

2 Commits

Author SHA1 Message Date
bda1e73e71 Add hung NFS share management
All checks were successful
Ansible Code Pipeline / Ansible-Development-Pipeline (ansible-dev-fedora) (push) Successful in 8s
2025-08-27 13:33:09 -04:00
bf965f5e4d Add CI for linting
All checks were successful
Ansible Code Pipeline / Ansible-Development-Pipeline (ansible-dev-fedora) (push) Successful in 10s
2025-08-27 13:25:19 -04:00
4 changed files with 74 additions and 0 deletions

3
.ci.env Normal file
View File

@ -0,0 +1,3 @@
export ANSIBLE_LINT_EXCLUSION="--exclude .gitea"
export ANSIBLE_INVENTORY="-i 127.0.0.1, --connection=local"
export ANSIBLE_PLAYBOOK=""

View File

@ -0,0 +1,30 @@
name: Ansible Code Pipeline
run-name: ${{ gitea.actor }} is running Ansible Code Pipeline
on:
push:
branches:
- main
jobs:
Ansible-Development-Pipeline:
strategy:
matrix:
os: [ ansible-dev-fedora ]
runs-on: ${{ matrix.os }}
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Ansible Environment Verify
run: |
whoami
. ./.ci.env
env
git log -1
ansible --version
ansible-lint --version
- name: Run Ansible-Lint
run: |
. ./.ci.env
ansible-lint -v --offline $ANSIBLE_LINT_EXCLUSION

38
tasks/hung_nfs_check.yml Normal file
View File

@ -0,0 +1,38 @@
---
- name: Check for mounted NFS shares # noqa: command-instead-of-module
ansible.builtin.command: mount -t nfs,nfs4
register: lazy_reboot_nfs_mounts
changed_when: false
failed_when: lazy_reboot_nfs_mounts['rc'] not in [0, 32]
- name: Create a list of NFS mount points
ansible.builtin.set_fact:
lazy_reboot_nfs_list:
"{{ lazy_reboot_nfs_mounts['stdout_lines'] | map('split') | map(attribute=2) | list }}"
- name: Verify mount status and reboot host
block:
- name: Verify mount status
ansible.builtin.command: "ls {{ item }}"
timeout: 5
changed_when: false
register: r_lazy_reboot_verify_mounts
loop: "{{ lazy_reboot_nfs_list }}"
loop_control:
label: "{{ item }}"
rescue:
- name: Group shares that failed status check
ansible.builtin.set_fact:
lazy_reboot_failed_shares:
"{{ r_lazy_reboot_verify_mounts['results'] | selectattr('failed') | map(attribute='item') | list }}"
- name: Lazily unmount the failed shares
ansible.builtin.command: "umount -f -l {{ item }}"
changed_when: false
register: r_lazy_unmount
async: 30
poll: 0
loop: "{{ lazy_reboot_failed_shares }}"
loop_control:
label: "{{ item }}"

View File

@ -1,4 +1,7 @@
--- ---
- name: Check for hung NFS mounts
ansible.builtin.include_tasks: hung_nfs_check.yml
- name: Capture initial boot ID - name: Capture initial boot ID
ansible.builtin.slurp: ansible.builtin.slurp:
src: "{{ verified_reboot_bootid_file }}" src: "{{ verified_reboot_bootid_file }}"