Added pfsense upgrade roles
This commit is contained in:
70
roles/pfsense_upgrade/tasks/version_detect.yml
Normal file
70
roles/pfsense_upgrade/tasks/version_detect.yml
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
# 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 }}"
|
||||
Reference in New Issue
Block a user