After further testing, I'm able to confirm that the kernel version check is done on each host and was able to reproduce this problem with an out of date cache.
### Only 3.19 kernel on host3 ### TASK: [openstack_hosts | Ensure kernel module(s)] ***************************** <127.0.0.1> REMOTE_MODULE modprobe name='' <192.168.250.21> REMOTE_MODULE modprobe name='' <192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"} changed: [host3] => (item=br_netfilter) => {"changed": true, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"} changed: [host2] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
### After upgrading kernel to 3.19 on and rebooting host2 ### TASK: [openstack_hosts | Ensure kernel module(s)] ***************************** <127.0.0.1> REMOTE_MODULE modprobe name='' <192.168.250.21> REMOTE_MODULE modprobe name='' <192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"} changed: [host2] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"} ok: [host3] => (item=br_netfilter) => {"changed": false, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"}
### Removed cached facts and reran playbook ### TASK: [openstack_hosts | Ensure kernel module(s)] ***************************** <127.0.0.1> REMOTE_MODULE modprobe name='' <192.168.250.21> REMOTE_MODULE modprobe name=br_netfilter <192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter ok: [host3] => (item=br_netfilter) => {"changed": false, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"} changed: [host2] => (item=br_netfilter) => {"changed": true, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"} changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
After further testing, I'm able to confirm that the kernel version check is done on each host and was able to reproduce this problem with an out of date cache.
### ******* ******* ******* *
Only 3.19 kernel on host3
###
TASK: [openstack_hosts | Ensure kernel module(s)] *******
<127.0.0.1> REMOTE_MODULE modprobe name=''
<192.168.250.21> REMOTE_MODULE modprobe name=''
<192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter
changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
changed: [host3] => (item=br_netfilter) => {"changed": true, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"}
changed: [host2] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
### ******* ******* ******* *
After upgrading kernel to 3.19 on and rebooting host2
###
TASK: [openstack_hosts | Ensure kernel module(s)] *******
<127.0.0.1> REMOTE_MODULE modprobe name=''
<192.168.250.21> REMOTE_MODULE modprobe name=''
<192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter
changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
changed: [host2] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}
ok: [host3] => (item=br_netfilter) => {"changed": false, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"}
### ******* ******* ******* *
Removed cached facts and reran playbook
###
TASK: [openstack_hosts | Ensure kernel module(s)] *******
<127.0.0.1> REMOTE_MODULE modprobe name=''
<192.168.250.21> REMOTE_MODULE modprobe name=br_netfilter
<192.168.250.22> REMOTE_MODULE modprobe name=br_netfilter
ok: [host3] => (item=br_netfilter) => {"changed": false, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"}
changed: [host2] => (item=br_netfilter) => {"changed": true, "failed": false, "item": "br_netfilter", "name": "br_netfilter", "params": "", "state": "present"}
changed: [localhost] => {"changed": true, "failed": false, "item": "", "name": "", "params": "", "state": "present"}