From 741fa025a06b1e63278ad5f3e0963e39126a94da Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Mon, 6 Aug 2018 11:40:12 +0530 Subject: [PATCH] delegate_to: accept only string for delegation host (#43473) delegate_to parameter in task only accepts string, this fix will error out if other datatypes are provided instead of string. Signed-off-by: Abhijeet Kasurde --- lib/ansible/vars/manager.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/vars/manager.py b/lib/ansible/vars/manager.py index 23331cc4941..9e938732986 100644 --- a/lib/ansible/vars/manager.py +++ b/lib/ansible/vars/manager.py @@ -36,7 +36,7 @@ from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVar from ansible.inventory.host import Host from ansible.inventory.helpers import sort_groups, get_group_vars from ansible.module_utils._text import to_native -from ansible.module_utils.six import iteritems, text_type +from ansible.module_utils.six import iteritems, text_type, string_types from ansible.plugins.loader import lookup_loader, vars_loader from ansible.plugins.cache import FactCache from ansible.template import Templar @@ -524,6 +524,10 @@ class VariableManager: cache_items = True if delegated_host_name is None: raise AnsibleError(message="Undefined delegate_to host for task:", obj=task._ds) + if not isinstance(delegated_host_name, string_types): + raise AnsibleError(message="the field 'delegate_to' has an invalid type (%s), and could not be" + " converted to a string type." % type(delegated_host_name), + obj=task._ds) if delegated_host_name in delegated_host_vars: # no need to repeat ourselves, as the delegate_to value # does not appear to be tied to the loop item variable