Files

71 lines
2.4 KiB
YAML

---
# roles/pfsense_upgrade/tasks/version_detect.yml
# Reads version info from the running pfSense host and sets facts.
- name: Read current pfSense version string
ansible.builtin.raw: cat {{ pfsense_version_file }}
register: _raw_version
changed_when: false
- name: Read patch level (if present)
ansible.builtin.raw: >
test -f {{ pfsense_version_patch_file }} && cat {{ pfsense_version_patch_file }} || echo "0"
register: _raw_patch
changed_when: false
- name: Read build timestamp (if present)
ansible.builtin.raw: >
test -f {{ pfsense_version_buildtime }} && cat {{ pfsense_version_buildtime }} || echo "unknown"
register: _raw_buildtime
changed_when: false
- name: Read pfSense edition (CE vs Plus)
ansible.builtin.raw: >
sh -c 'pkg info pfSense 2>/dev/null | grep -i "^Name" | awk "{print \$3}"' || echo "pfSense"
register: _raw_edition
changed_when: false
- name: Detect CPU architecture
ansible.builtin.raw: uname -m
register: _raw_arch
changed_when: false
- name: Set version facts
ansible.builtin.set_fact:
pfsense_current_version: "{{ _raw_version.stdout | trim }}"
pfsense_current_patch: "{{ _raw_patch.stdout | trim }}"
pfsense_build_time: "{{ _raw_buildtime.stdout | trim }}"
pfsense_edition: "{{ _raw_edition.stdout | trim }}"
pfsense_arch: "{{ _raw_arch.stdout | trim }}"
# Parse major.minor from version string (e.g. "2.7.2-RELEASE" → "2.7")
pfsense_major_minor: >-
{{
(_raw_version.stdout | trim)
| regex_replace('^(\d+\.\d+).*$', '\1')
}}
# Parse patch version integer (e.g. "2.7.2-RELEASE" → 2)
pfsense_patch_int: >-
{{
(_raw_version.stdout | trim)
| regex_replace('^(\d+)\.(\d+)\.(\d+).*$', '\3')
| default('0')
}}
# Determine if this is a RELEASE, RC, BETA, or ALPHA
pfsense_release_type: >-
{{
(_raw_version.stdout | trim)
| regex_replace('^.*-(RELEASE|RC\d*|BETA\d*|ALPHA\d*|DEVELOPMENT).*$', '\1')
| default('UNKNOWN')
}}
- name: Display detected version info
ansible.builtin.debug:
msg:
- "Host : {{ inventory_hostname }}"
- "Edition : {{ pfsense_edition }}"
- "Version : {{ pfsense_current_version }}"
- "Branch : {{ pfsense_major_minor }}"
- "Release type : {{ pfsense_release_type }}"
- "Build time : {{ pfsense_build_time }}"
- "Architecture : {{ pfsense_arch }}"