From 3bf795f69f707fd2423c6286ad8b9e5a1fcf0612 Mon Sep 17 00:00:00 2001 From: "Ben D." Date: Mon, 27 Apr 2026 19:12:29 -0700 Subject: [PATCH] Update roles/pfsense_upgrade/tasks/update_check.yml --- roles/pfsense_upgrade/tasks/update_check.yml | 152 ++++++++++--------- 1 file changed, 80 insertions(+), 72 deletions(-) diff --git a/roles/pfsense_upgrade/tasks/update_check.yml b/roles/pfsense_upgrade/tasks/update_check.yml index c607660..cbb5ce5 100644 --- a/roles/pfsense_upgrade/tasks/update_check.yml +++ b/roles/pfsense_upgrade/tasks/update_check.yml @@ -1,16 +1,38 @@ --- # roles/pfsense_upgrade/tasks/update_check.yml # Dynamic upgrade detection using pfSense repository system +# Works with tcsh default shell on pfSense # --------------------------------------------------------------------------- # 1. Detect available repositories and identify upgrade target # --------------------------------------------------------------------------- -- name: List available pfSense repositories +- name: Create temporary PHP script for repo detection ansible.builtin.raw: | - php -r 'require_once("/etc/inc/pkg-utils.inc"); $repos = pkg_list_repos(); $upgrade = ""; foreach($repos as $r) { if (!isset($r["default"])) { echo $r["name"] . "|" . $r["descr"]; break; } } echo $upgrade ?: "UP_TO_DATE";' + cat > /tmp/check_repo.php << 'PHPEOF' + /tmp/get_version.php << 'PHPEOF' + /tmp/get_repo.php << 'PHPEOF' + + ansible.builtn.debug: + msg: | DRY RUN — Upgrade to {{ upgrade_target_repo }} is available but perform_upgrade=false. Re-run with -e "perform_upgrade=true" to apply. when: - upgrade_available | bool - not (perform_upgrade | bool) - -# --------------------------------------------------------------------------- -# 5. Compare branches — detect if a newer stable branch exists upstream -# --------------------------------------------------------------------------- -- name: Determine if a newer major release branch is available + +- name: Display up-to-date message + ansible.builtin.debug: + msg: "System is up to date — no upgrade available" + when: not upgrade_available + +- name: Set facts for downstream tasks (compatibility with existing verify.yml) ansible.builtin.set_fact: - new_major_release_available: >- - {{ - upstream_fetch_ok | bool and - (upstream_major_minor | string) != (pfsense_major_minor | string) and - (upstream_major_minor.split('.')[0] | int > pfsense_major_minor.split('.')[0] | int) or - (upstream_major_minor.split('.')[0] | int == pfsense_major_minor.split('.')[0] | int and - upstream_major_minor.split('.')[1] | int > pfsense_major_minor.split('.')[1] | int) - }} - when: upstream_fetch_ok | bool - -- name: Default new_major_release_available when fetch failed - ansible.builtin.set_fact: - new_major_release_available: false - when: not (upstream_fetch_ok | bool) - -# --------------------------------------------------------------------------- -# 6. Print the full update status report -# --------------------------------------------------------------------------- -- name: Display update status report - ansible.builtin.debug: - msg: - - "============================================================" - - " Update Status: {{ inventory_hostname }}" - - "============================================================" - - " Current version : {{ pfsense_current_version }}" - - " Current branch : {{ pfsense_major_minor }}" - - "------------------------------------------------------------" - - " In-branch update : {{ 'YES — ' ~ upgrade_available_version if upgrade_available | bool else 'No — already up to date' }}" - - " Outdated pkgs : {{ pkg_outdated_count }} package(s) behind" - - "------------------------------------------------------------" - - " Upstream latest : {{ upstream_version if upstream_fetch_ok | bool else 'Could not reach upstream' }}" - - " Upstream branch : {{ upstream_major_minor if upstream_fetch_ok | bool else 'N/A' }}" - - " New branch avail : {{ 'YES — ' ~ upstream_version if new_major_release_available | bool else 'No' }}" - - "------------------------------------------------------------" - - " perform_upgrade : {{ perform_upgrade | bool }}" - - " allow_major_upg : {{ allow_major_upgrade | bool }}" - - "============================================================" - -- name: Warn if a new major release branch is available but not allowed - ansible.builtin.debug: - msg: > - WARNING: pfSense {{ upstream_version }} is available on branch {{ upstream_major_minor }}, - which is newer than your running branch {{ pfsense_major_minor }}. - To upgrade across branches, re-run with: -e "perform_upgrade=true allow_major_upgrade=true" - when: - - new_major_release_available | bool - - not (allow_major_upgrade | bool) - -- name: Warn if perform_upgrade is false but upgrades are available - ansible.builtin.debug: - msg: > - DRY RUN — upgrades are available but perform_upgrade=false. - Re-run with -e "perform_upgrade=true" to apply. - when: - - (upgrade_available | bool) or (pkg_outdated_count | int > 0) - - not (perform_upgrade | bool) \ No newline at end of file + upgrade_available_version: "{{ upgrade_target_repo | default('') }}" \ No newline at end of file