Rework portfolio around Linux operations, Zabbix monitoring, migration validation, and ELK/Grafana log observability. Add AAP-style LVM resize workflow, Zabbix server/proxy/agent automation assets, Linux/AIX monitoring templates, and updated validation CI.
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
---
|
||||
- name: AAP-style LVM filesystem resize workflow
|
||||
hosts: all
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
vars:
|
||||
lvm_dry_run: true
|
||||
lvm_vg_name: ""
|
||||
lvm_lv_name: ""
|
||||
lvm_mountpoint: ""
|
||||
lvm_size_request: "+10G"
|
||||
lvm_resize_filesystem: true
|
||||
|
||||
pre_tasks:
|
||||
- name: Validate required survey variables
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- lvm_vg_name | length > 0
|
||||
- lvm_lv_name | length > 0
|
||||
- lvm_mountpoint | length > 0
|
||||
- lvm_size_request | length > 0
|
||||
fail_msg: "Required variables: lvm_vg_name, lvm_lv_name, lvm_mountpoint, lvm_size_request"
|
||||
|
||||
tasks:
|
||||
- name: Capture block device layout before resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- lsblk
|
||||
- --fs
|
||||
register: lvm_lsblk_before
|
||||
changed_when: false
|
||||
|
||||
- name: Capture physical volumes before resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- pvs
|
||||
- --noheadings
|
||||
- --units
|
||||
- g
|
||||
register: lvm_pvs_before
|
||||
changed_when: false
|
||||
|
||||
- name: Capture volume groups before resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- vgs
|
||||
- --noheadings
|
||||
- --units
|
||||
- g
|
||||
register: lvm_vgs_before
|
||||
changed_when: false
|
||||
|
||||
- name: Capture logical volumes before resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- lvs
|
||||
- --noheadings
|
||||
- --units
|
||||
- g
|
||||
register: lvm_lvs_before
|
||||
changed_when: false
|
||||
|
||||
- name: Capture filesystem usage before resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- df
|
||||
- -hT
|
||||
- "{{ lvm_mountpoint }}"
|
||||
register: lvm_df_before
|
||||
changed_when: false
|
||||
|
||||
- name: Validate target logical volume exists
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- lvs
|
||||
- "/dev/{{ lvm_vg_name }}/{{ lvm_lv_name }}"
|
||||
register: lvm_target_check
|
||||
changed_when: false
|
||||
|
||||
- name: Show dry-run resize command
|
||||
ansible.builtin.debug:
|
||||
msg: "DRY RUN: would run lvextend -L {{ lvm_size_request }} /dev/{{ lvm_vg_name }}/{{ lvm_lv_name }}"
|
||||
when: lvm_dry_run | bool
|
||||
|
||||
- name: Extend logical volume
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- lvextend
|
||||
- -L
|
||||
- "{{ lvm_size_request }}"
|
||||
- "/dev/{{ lvm_vg_name }}/{{ lvm_lv_name }}"
|
||||
register: lvm_lvextend_result
|
||||
changed_when: true
|
||||
when: not (lvm_dry_run | bool)
|
||||
|
||||
- name: Detect filesystem type
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- findmnt
|
||||
- -n
|
||||
- -o
|
||||
- FSTYPE
|
||||
- "{{ lvm_mountpoint }}"
|
||||
register: lvm_fstype
|
||||
changed_when: false
|
||||
|
||||
- name: Resize XFS filesystem
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- xfs_growfs
|
||||
- "{{ lvm_mountpoint }}"
|
||||
changed_when: true
|
||||
when:
|
||||
- not (lvm_dry_run | bool)
|
||||
- lvm_resize_filesystem | bool
|
||||
- lvm_fstype.stdout == "xfs"
|
||||
|
||||
- name: Resize ext filesystem
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- resize2fs
|
||||
- "/dev/{{ lvm_vg_name }}/{{ lvm_lv_name }}"
|
||||
changed_when: true
|
||||
when:
|
||||
- not (lvm_dry_run | bool)
|
||||
- lvm_resize_filesystem | bool
|
||||
- lvm_fstype.stdout in ["ext2", "ext3", "ext4"]
|
||||
|
||||
- name: Capture filesystem usage after resize
|
||||
ansible.builtin.command:
|
||||
argv:
|
||||
- df
|
||||
- -hT
|
||||
- "{{ lvm_mountpoint }}"
|
||||
register: lvm_df_after
|
||||
changed_when: false
|
||||
|
||||
- name: Report LVM resize evidence
|
||||
ansible.builtin.debug:
|
||||
msg:
|
||||
host: "{{ inventory_hostname }}"
|
||||
dry_run: "{{ lvm_dry_run }}"
|
||||
target: "/dev/{{ lvm_vg_name }}/{{ lvm_lv_name }}"
|
||||
mountpoint: "{{ lvm_mountpoint }}"
|
||||
requested_size: "{{ lvm_size_request }}"
|
||||
filesystem_type: "{{ lvm_fstype.stdout | default('unknown') }}"
|
||||
before_df: "{{ lvm_df_before.stdout_lines }}"
|
||||
after_df: "{{ lvm_df_after.stdout_lines }}"
|
||||
Reference in New Issue
Block a user