Seen with ansible 2.7.6:
TASK [tripleo-kernel : Set default sysctl options] ********************************************************************************************************************************************
task path: /usr/share/ansible/roles/tripleo-kernel/tasks/main.yml:23
Tuesday 24 September 2019 22:17:31 +0000 (0:00:00.095) 0:01:01.174 *****
<192.168.24.1> ESTABLISH LOCAL CONNECTION FOR USER: vagrant
<192.168.24.1> EXEC /bin/sh -c 'echo ~vagrant && sleep 0'
<192.168.24.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/vagrant/.ansible/tmp/ansible-tmp-1569363451.3394647-220564854196017 `" && echo ansible-tmp-1569363451.3394647-220564854196
017="` echo /home/vagrant/.ansible/tmp/ansible-tmp-1569363451.3394647-220564854196017 `" ) && sleep 0'
<192.168.24.1> EXEC /bin/sh -c 'rm -f -r /home/vagrant/.ansible/tmp/ansible-tmp-1569363451.3394647-220564854196017/ > /dev/null 2>&1 && sleep 0'
fatal: [undercloud]: FAILED! => {
"changed": false,
"msg": "AnsibleError: Unexpected templating type error occurred on (# {{ ansible_managed }}\n\n{% for item in tripleo_kernel_sysctl_settings | dict2items(key_name='key', value_name='opt')
%}\n{{ item.key }} = {{ item.opt.value }}\n{% endfor %}\n): dict_to_list_of_dict_key_value_elements() got an unexpected keyword argument 'key_name'"
}