71 lines
2.4 KiB
YAML
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: >
|
|
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 }}"
|