Rosa-Luxemburgstiftung-Berlin / ansible-opnsense-update

perform a firmware update for opnsense via ansible
GNU General Public License v3.0
4 stars 3 forks source link

opn_update_desired_version=24.1.10_8 with currently running opnsense-version=24.1.10_8 does a major upgrade to 24.7_5 #10

Open crpb opened 2 months ago

crpb commented 2 months ago

Hey,

seems like the update-task as described upgrades to next release if the system is already on that desired_version with an underscore in the version /o.

i guess it's this logic but haven't looked any deeper yet.

log of 'ansible-playbook -v -e opn_update_desired_version=24.1.10_8 update.yaml ..' ```bash ~/ansible/cb/opnsense (git)-[main] % ssh 192.168.1.5 opnsense-version OPNsense 24.1.10_8 ~/ansible/cb/opnsense (git)-[main] % cat update.yaml - name: opnsense hosts: - opnsense - opnsensetest vars: ansible_become: false roles: - role: ansible-opnsense-facts tags: - opnsense - facts - role: ansible-opnsense-plugpack tags: - opnsense - plugpack - role: ansible-opnsense-update tags: - opnsense - update # - role: ansible-opnsense-checkmk # tags: # - opnsense # - checkmk ~/ansible/cb/opnsense (git)-[main] % ansible-playbook -v -e opn_update_desired_version=24.1.10_8 update.yaml -l 192.168.1.5 Using /home/cb/.ansible.cfg as config file _________________ < PLAY [opnsense] > ----------------- \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ ________________________ < TASK [Gathering Facts] > ------------------------ \ \ . .---. // Y|o o|Y// /_(i=i)K/ ~()~*~()~ (_)-(_) Darth Vader koala ok: [192.168.1.5] ________________________________________________________ < TASK [ansible-opnsense-facts : custom facts directory] > -------------------------------------------------------- \ \ .::!!!!!!!:. .!!!!!:. .:!!!!!!!!!!!! ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$ :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P $$$$$##WX!: . changed=false gid: 0 group: wheel mode: '0755' owner: root path: /etc/ansible/facts.d size: 512 state: directory uid: 0 ________________________________________________ < TASK [ansible-opnsense-facts : opnsense facts] > ------------------------------------------------ \ ,+*^^*+___+++_ \ ,*^^^^ ) \ _+* ^**+_ \ +^ _ _++*+_+++_, ) _+^^*+_ ( ,+*^ ^ \+_ ) { ) ( ,( ,_+--+--, ^) ^\ { (@) } f ,( ,+-^ __*_*_ ^^\_ ^\ ) {:;-/ (_+*-+^^^^^+*+*<_ _++_)_ ) ) / ( / ( ( ,___ ^*+_+* ) < < \ U _/ ) *--< ) ^\-----++__) ) ) ) ( ) _(^)^^)) ) )\^^^^^))^*+/ / / ( / (_))_^)) ) ) ))^^^^^))^^^)__/ +^^ ( ,/ (^))^)) ) ) ))^^^^^^^))^^) _) *+__+* (_))^) ) ) ))^^^^^^))^^^^^)____*^ \ \_)^)_)) ))^^^^^^^^^^))^^^^) (_ ^\__^^^^^^^^^^^^))^^^^^^^) ^\___ ^\__^^^^^^))^^^^^^^^)\\ ^^^^^\uuu/^^\uuu/^^^^\^\^\^\^\^\^\^\ ___) >____) >___ ^\_\_\_\_\_\_\) ^^^//\\_^^//\\_^ ^(\_\_\_\) ^^^ ^^ ^^^ ^ ok: [192.168.1.5] => (item=opnsense.fact) => changed=false ansible_loop_var: item checksum: d0d7f47a563bb8cc2ae4e38eb18e4a3cc06fec04 dest: /etc/ansible/facts.d/opnsense.fact gid: 0 group: wheel item: opnsense.fact mode: '0755' owner: root path: /etc/ansible/facts.d/opnsense.fact size: 365 state: file uid: 0 ____________________________________________________________ < TASK [ansible-opnsense-facts : reload ansible_local facts] > ------------------------------------------------------------ \ \ .::!!!!!!!:. .!!!!!:. .:!!!!!!!!!!!! ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$ :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P $$$$$##WX!: . changed=false skip_reason: Conditional result was False ____________________________________________________________ < TASK [ansible-opnsense-plugpack : remove opnsense plugins] > ------------------------------------------------------------ \ ___-------___ \ _-~~ ~~-_ \ _-~ /~-_ /^\__/^\ /~ \ / \ /| O|| O| / \_______________/ \ | |___||__| / / \ \ | \ / / \ \ | (_______) /______/ \_________ \ | / / \ / \ \ \^\\ \ / \ / \ || \______________/ _-_ //\__// \ ||------_-~~-_ ------------- \ --/~ ~\ || __/ ~-----||====/~ |==================| |/~~~~~ (_(__/ ./ / \_\ \. (_(___/ \_____)_) skipping: [192.168.1.5] => changed=false skipped_reason: No items in the list _________________________________________________________ / TASK [ansible-opnsense-plugpack : give the process some \ \ time for settling ...] / --------------------------------------------------------- \ . . \ / `. .' " \ .---. < > < > .---. \ | \ \ - ~ ~ - / / | _____ ..-~ ~-..-~ | | \~~~\.' `./~~~/ --------- \__/ \__/ .' O \ / / \ " (_____, `._.' | } \/~~~/ `----. / } | / \__/ `-. | / | / `. ,~~| ~-.__| /_ - ~ ^| /- _ `..-' | / | / ~-. `-. _ _ _ |_____| |_____| ~ - . _ _ _ _ _> Pausing for 5 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [192.168.1.5] => changed=false delta: 5 echo: true rc: 0 start: '2024-07-28 16:58:12.233157' stderr: '' stdout: Paused for 5.0 seconds stop: '2024-07-28 16:58:17.233469' user_input: '' _____________________________________________________________ < TASK [ansible-opnsense-plugpack : install opnsense plugins] > ------------------------------------------------------------- \ \ .... . ........ . . . . ....... ......... .............................. Elephant inside ASCII snake ok: [192.168.1.5] => (item=os-acme-client) => changed=false ansible_loop_var: item cmd: - /usr/local/sbin/configctl - firmware - install - os-acme-client delta: null end: null item: os-acme-client msg: Did not run command since '/usr/local/opnsense/version/acme-client' exists rc: 0 start: null stderr: '' stderr_lines: stdout: skipped, since /usr/local/opnsense/version/acme-client exists stdout_lines: ok: [192.168.1.5] => (item=os-haproxy) => changed=false ansible_loop_var: item cmd: - /usr/local/sbin/configctl - firmware - install - os-haproxy delta: null end: null item: os-haproxy msg: Did not run command since '/usr/local/opnsense/version/haproxy' exists rc: 0 start: null stderr: '' stderr_lines: stdout: skipped, since /usr/local/opnsense/version/haproxy exists stdout_lines: ok: [192.168.1.5] => (item=os-nextcloud-backup) => changed=false ansible_loop_var: item cmd: - /usr/local/sbin/configctl - firmware - install - os-nextcloud-backup delta: null end: null item: os-nextcloud-backup msg: Did not run command since '/usr/local/opnsense/version/nextcloud-backup' exists rc: 0 start: null stderr: '' stderr_lines: stdout: skipped, since /usr/local/opnsense/version/nextcloud-backup exists stdout_lines: changed: [192.168.1.5] => (item=os-smart) => changed=true ansible_loop_var: item cmd: - /usr/local/sbin/configctl - firmware - install - os-smart delta: '0:00:00.039802' end: '2024-07-28 16:26:56.740534' item: os-smart msg: '' rc: 0 start: '2024-07-28 16:26:56.700732' stderr: '' stderr_lines: stdout: OK stdout_lines: _________________________________________________________ / TASK [ansible-opnsense-plugpack : give the process some \ \ time for settling ...] / --------------------------------------------------------- \ \ __ UooU\.'@@@@@@`. \__/(@@@@@@@@@@) (@@@@@@@@) `YY~~~~YY' || || Pausing for 5 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [192.168.1.5] => changed=false delta: 5 echo: true rc: 0 start: '2024-07-28 16:58:18.525941' stderr: '' stdout: Paused for 5.0 seconds stop: '2024-07-28 16:58:23.526293' user_input: '' _______________________________________________________ < TASK [ansible-opnsense-plugpack : purge opnsense pkg] > ------------------------------------------------------- \ , , \ /( )` \ \ \___ / | /- _ `-/ ' (/\/ \ \ /\ / / | ` \ O O ) / | `-^--'`< ' (_.) _ ) / `.___/` / `-----' / <----. __ / __ \ <----|====O)))==) \) /==== <----' `--' `.__,' \ | | \ / ______( (_ / \______ ,' ,-----' | \ `--{__________) \/ ok: [192.168.1.5] => changed=false msg: '' stderr: '' stderr_lines: stdout: '' stdout_lines: _________________________________________________________ / TASK [ansible-opnsense-plugpack : give the process some \ \ time for settling ...] / --------------------------------------------------------- \ \ oO)-. .-(Oo /__ _\ /_ __\ \ \( | ()~() | )/ / \__|\ | (-___-) | /|__/ ' '--' ==`-'== '--' ' Pausing for 5 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [192.168.1.5] => changed=false delta: 5 echo: true rc: 0 start: '2024-07-28 16:58:24.014856' stderr: '' stdout: Paused for 5.0 seconds stop: '2024-07-28 16:58:29.015192' user_input: '' _________________________________________________________ < TASK [ansible-opnsense-plugpack : install opnsense pkg] > --------------------------------------------------------- \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ ok: [192.168.1.5] => changed=false msg: package(s) already present stderr: '' stderr_lines: stdout: |- Updating OPNsense repository catalogue... OPNsense repository is up to date. All repositories are up to date. stdout_lines: ____________________________________________________________ < TASK [ansible-opnsense-update : check ansible version ...] > ------------------------------------------------------------ \ ____________ \ |__________| / /\ / / \ /___________/___/| | | | | ==\ /== | | | O O | \ \ | | < | \ \| /| | \ \ / | \_____/ | / / / /| | / /| /||\| | /||\/ -------------| | | | | <__/ \__> ok: [192.168.1.5] => changed=false msg: All assertions passed ____________________________________________________________ / TASK [ansible-opnsense-update : check facts ... real facts \ \ and not alternative one!] / ------------------------------------------------------------ \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False ________________________________________________________ / TASK [ansible-opnsense-update : set unified syntax for \ \ opnsense.core.product_version] / -------------------------------------------------------- \ \ \ \ /\ ( ) .( o ). ok: [192.168.1.5] => changed=false ansible_facts: opn_current_version: 24.1.10 verbosity: 1 ______________________________________________________ < TASK [ansible-opnsense-update : opn_current_version] > ------------------------------------------------------ \ ____________ \ |__________| / /\ / / \ /___________/___/| | | | | ==\ /== | | | O O | \ \ | | < | \ \| /| | \ \ / | \_____/ | / / / /| | / /| /||\| | /||\/ -------------| | | | | <__/ \__> ok: [192.168.1.5] => opn_current_version: 24.1.10 ______________________________________________ / TASK [ansible-opnsense-update : force \ \ opn_update_desired_version to the lates ...] / ---------------------------------------------- \ \ .--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/ skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False _____________________________________________________________ < TASK [ansible-opnsense-update : opn_update_desired_version] > ------------------------------------------------------------- \ . _ . \ |\_|/__/| / / \/ \ \ /__|O||O|__ \ |/_ \_/\_/ _\ | | | (____) | || \/\___/\__/ // (_/ || | || | ||\ \ //_/ \______// __ || __|| (____(____) ok: [192.168.1.5] => opn_update_desired_version: 24.1.10_8 ___________________________________________________________ / TASK [ansible-opnsense-update : decide if we should run a \ \ update] / ----------------------------------------------------------- \ \ . ___ // {~._.~}// ( Y )K/ ()~*~() (_)-(_) Luke Skywalker koala ok: [192.168.1.5] => changed=false ansible_facts: _opn_update_required: true _____________________________________________________ < TASK [ansible-opnsense-update : prepare update ...] > ----------------------------------------------------- \ \ .... . ........ . . . . ....... ......... .............................. Elephant inside ASCII snake included: /home/cb/git/github/rosa-luxemburgstiftung-berlin/ansible-opnsense-update/tasks/update.yml for 192.168.1.5 __________________________________________________________ / TASK [ansible-opnsense-update : check if this is a major \ \ update] / ---------------------------------------------------------- \ \ .::!!!!!!!:. .!!!!!:. .:!!!!!!!!!!!! ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$ :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P $$$$$##WX!: . changed=false cmd: - opnsense-update - -vR delta: '0:00:00.009275' end: '2024-07-28 16:27:08.644806' msg: '' rc: 0 start: '2024-07-28 16:27:08.635531' stderr: '' stderr_lines: stdout: '24.7' stdout_lines: _______________________________________________________ / TASK [ansible-opnsense-update : register desired base \ \ version] / ------------------------------------------------------- \ ,-^-. \ !oYo! \ /./=\.\______ ## )\/\ ||-----w|| || || Cowth Vader ok: [192.168.1.5] => changed=false ansible_facts: _opn_update_desired_base: - '24' - '1' - '10_8' _______________________________________________________ / TASK [ansible-opnsense-update : register major update \ \ status based on _opn_update_desired_base] / ------------------------------------------------------- \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False _______________________________________________________ / TASK [ansible-opnsense-update : register major update \ \ status] / ------------------------------------------------------- \ \ . .---. // Y|o o|Y// /_(i=i)K/ ~()~*~()~ (_)-(_) Darth Vader koala ok: [192.168.1.5] => changed=false ansible_facts: _opn_major_update: true ________________________________________________________ / TASK [ansible-opnsense-update : major update require a \ \ reboot] / -------------------------------------------------------- \ ,+*^^*+___+++_ \ ,*^^^^ ) \ _+* ^**+_ \ +^ _ _++*+_+++_, ) _+^^*+_ ( ,+*^ ^ \+_ ) { ) ( ,( ,_+--+--, ^) ^\ { (@) } f ,( ,+-^ __*_*_ ^^\_ ^\ ) {:;-/ (_+*-+^^^^^+*+*<_ _++_)_ ) ) / ( / ( ( ,___ ^*+_+* ) < < \ U _/ ) *--< ) ^\-----++__) ) ) ) ( ) _(^)^^)) ) )\^^^^^))^*+/ / / ( / (_))_^)) ) ) ))^^^^^))^^^)__/ +^^ ( ,/ (^))^)) ) ) ))^^^^^^^))^^) _) *+__+* (_))^) ) ) ))^^^^^^))^^^^^)____*^ \ \_)^)_)) ))^^^^^^^^^^))^^^^) (_ ^\__^^^^^^^^^^^^))^^^^^^^) ^\___ ^\__^^^^^^))^^^^^^^^)\\ ^^^^^\uuu/^^\uuu/^^^^\^\^\^\^\^\^\^\ ___) >____) >___ ^\_\_\_\_\_\_\) ^^^//\\_^^//\\_^ ^(\_\_\_\) ^^^ ^^ ^^^ ^ ok: [192.168.1.5] => changed=false ansible_facts: _opn_reboot_required: true ____________________________________________________________ / TASK [ansible-opnsense-update : check if update requires a \ \ reboot] / ------------------------------------------------------------ \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False __________________________________________________________ / TASK [ansible-opnsense-update : register reboot required \ \ status] / ---------------------------------------------------------- \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False ____________________________________________________________ < TASK [ansible-opnsense-update : debug opn_current_version] > ------------------------------------------------------------ \ , , \ /( )` \ \ \___ / | /- _ `-/ ' (/\/ \ \ /\ / / | ` \ O O ) / | `-^--'`< ' (_.) _ ) / `.___/` / `-----' / <----. __ / __ \ <----|====O)))==) \) /==== <----' `--' `.__,' \ | | \ / ______( (_ / \______ ,' ,-----' | \ `--{__________) \/ ok: [192.168.1.5] => opn_current_version: 24.1.10 _______________________________________ / TASK [ansible-opnsense-update : debug \ \ _opn_check_major_update] / --------------------------------------- \ \ . .---. // Y|o o|Y// /_(i=i)K/ ~()~*~()~ (_)-(_) Darth Vader koala ok: [192.168.1.5] => _opn_check_major_update: changed: false cmd: - opnsense-update - -vR delta: '0:00:00.009275' end: '2024-07-28 16:27:08.644806' failed: false msg: '' rc: 0 start: '2024-07-28 16:27:08.635531' stderr: '' stderr_lines: [] stdout: '24.7' stdout_lines: - '24.7' __________________________________________________________ < TASK [ansible-opnsense-update : debug _opn_major_update] > ---------------------------------------------------------- \ \ /\_)o< | \ | O . O| \_____/ ok: [192.168.1.5] => _opn_major_update: true _______________________________________ / TASK [ansible-opnsense-update : debug \ \ _opn_check_reboot_required] / --------------------------------------- \ ____________ \ |__________| / /\ / / \ /___________/___/| | | | | ==\ /== | | | O O | \ \ | | < | \ \| /| | \ \ / | \_____/ | / / / /| | / /| /||\| | /||\/ -------------| | | | | <__/ \__> ok: [192.168.1.5] => _opn_check_reboot_required: changed: false skip_reason: Conditional result was False skipped: true _____________________________________________________________ < TASK [ansible-opnsense-update : debug _opn_reboot_required] > ------------------------------------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || ok: [192.168.1.5] => _opn_reboot_required: true ___________________________________________________________ / TASK [ansible-opnsense-update : register opnsense version \ \ before the update] / ----------------------------------------------------------- \ \ \_\_ _/_/ \ \__/ (oo)\_______ (__)\ )\/\ ||----w | || || ok: [192.168.1.5] => changed=false ansible_facts: _opn_initial_product_version: 24.1.10_8 _________________________________________________________ < TASK [ansible-opnsense-update : set reboot_timeout ...] > --------------------------------------------------------- \ \ . .---. // Y|o o|Y// /_(i=i)K/ ~()~*~()~ (_)-(_) Darth Vader koala ok: [192.168.1.5] => changed=false ansible_facts: _opn_reboot_timeout: '1800' _____________________________________________ < TASK [ansible-opnsense-update : run update] > --------------------------------------------- \ ____ \ / \ | ^__^ | | (oo) |______ | (__) | )\/\ \____/|----w | || || Moofasa skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False _____________________________________________________________ / TASK [ansible-opnsense-update : run update and reboot using \ \ a reboot_timeout of 1800s ...] / ------------------------------------------------------------- \ . _ . \ |\_|/__/| / / \/ \ \ /__|O||O|__ \ |/_ \_/\_/ _\ | | | (____) | || \/\___/\__/ // (_/ || | || | ||\ \ //_/ \______// __ || __|| (____(____) skipping: [192.168.1.5] => changed=false skip_reason: Conditional result was False ____________________________________________________________ / TASK [ansible-opnsense-update : run upgrade targeting 24.1 \ \ and reboot using a reboot_timeout of 1800s ...] / ------------------------------------------------------------ \ . . \ / `. .' " \ .---. < > < > .---. \ | \ \ - ~ ~ - / / | _____ ..-~ ~-..-~ | | \~~~\.' `./~~~/ --------- \__/ \__/ .' O \ / / \ " (_____, `._.' | } \/~~~/ `----. / } | / \__/ `-. | / | / `. ,~~| ~-.__| /_ - ~ ^| /- _ `..-' | / | / ~-. `-. _ _ _ |_____| |_____| ~ - . _ _ _ _ _> changed: [192.168.1.5] => changed=true elapsed: 497 rebooted: true _____________________________________________________________ < TASK [ansible-opnsense-update : reload ansible_local facts] > ------------------------------------------------------------- \ \ . ___ // {~._.~}// ( Y )K/ ()~*~() (_)-(_) Luke Skywalker koala ok: [192.168.1.5] ___________________________________________________________ / TASK [ansible-opnsense-update : trumpet the news all ower \ \ the town ...] / ----------------------------------------------------------- \ \ oO)-. .-(Oo /__ _\ /_ __\ \ \( | ()~() | )/ / \__|\ | (-___-) | /|__/ ' '--' ==`-'== '--' ' ok: [192.168.1.5] => msg: update performed from 24.1.10_8 to 24.7_5 __________________________________________________________ / TASK [ansible-opnsense-update : finally send some clacks \ | over the wire, keeping the legacy of Sir Terry Pratchett | \ alive ...] / ---------------------------------------------------------- \ ^___^ \ (ooo)\_______ (___)\ )\/\ ||----w | || || ok: [192.168.1.5] => changed=false cmd: - echo - 'X-Clacks-Overhead: GNU Terry Pratchett' delta: '0:00:00.003772' end: '2024-07-28 17:17:22.235779' failed_when_result: false msg: '' rc: 0 start: '2024-07-28 17:17:22.232007' stderr: '' stderr_lines: stdout: 'X-Clacks-Overhead: GNU Terry Pratchett' stdout_lines: ____________________________________________________________ / TASK [ansible-opnsense-update : U: turn the message around \ | at the end of the line and send it back again :: | \ X-Clacks-Overhead: GNU Terry Pratchett] / ------------------------------------------------------------ \ / \ //\ \ |\___/| / \// \\ /0 0 \__ / // | \ \ / / \/_/ // | \ \ @_^_@'/ \/_ // | \ \ //_^_/ \/_ // | \ \ ( //) | \/// | \ \ ( / /) _|_ / ) // | \ _\ ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. (( / / )) ,-{ _ `-.|.-~-. .~ `. (( // / )) '/\ / ~-. _ .-~ .-~^-. \ (( /// )) `. { } / \ \ (( / )) .----~-.\ \-' .~ \ `. \^-. ///.----..> \ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ ok: [192.168.1.5] => gnuterrypratchett_return.stdout: 'X-Clacks-Overhead: GNU Terry Pratchett' ____________ < PLAY RECAP > ------------ \ \ /\_)o< | \ | O . O| \_____/ 192.168.1.5 : ok=31 changed=2 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 ``` ... well this takes a while on my test-vm here but i think it's clear that it is happening

or is that somewhat by design?