I’d suggest not using the shell: module, instead use the systemd: module.
Then setup the when: clause with a third that only executes this play on OS versions that have systemctl (e.g. RHEL 7+, etc). You run a play right before it that registers the full path of systemctl found on the system (maybe use shell: which systemctl).
Something like this:
name: manage services using systemctl
tags: manage services using systemctl
systemd:
name: {{servicesList}}
state: {{actionTodo}}
with_items:
“{{servicesList}}”
when:
ansible_os_family == “RedHat” and ansible_lsb.major_release|int >= 7
Correction to my previous email:
You COULD run a play right before it that registers the full path of systemctl found on the system (maybe use shell: which systemctl), but that is not a stable method in some cases. I suggest using systemd: with the OS version check if needed.