diff --git a/lib/ansible/runner/action_plugins/add_host.py b/lib/ansible/runner/action_plugins/add_host.py index 2fcea6cd5c..72172fcaec 100644 --- a/lib/ansible/runner/action_plugins/add_host.py +++ b/lib/ansible/runner/action_plugins/add_host.py @@ -69,12 +69,6 @@ class ActionModule(object): inventory._hosts_cache[new_name] = new_host allgroup.add_host(new_host) - # Add any variables to the new_host - for k in args.keys(): - if not k in [ 'name', 'hostname', 'groupname', 'groups' ]: - new_host.set_variable(k, args[k]) - - groupnames = args.get('groupname', args.get('groups', args.get('group', ''))) # add it to the group if that was specified if groupnames: @@ -100,6 +94,11 @@ class ActionModule(object): # actually load host vars new_host.vars = inventory.get_host_variables(new_name, update_cached=True, vault_password=inventory._vault_password) + # Add any passed variables to the new_host + for k in args.keys(): + if not k in [ 'name', 'hostname', 'groupname', 'groups' ]: + new_host.set_variable(k, args[k]) + result['new_host'] = new_name # clear pattern caching completely since it's unpredictable what diff --git a/test/integration/unicode.yml b/test/integration/unicode.yml index 2889155055..6dca7fe490 100644 --- a/test/integration/unicode.yml +++ b/test/integration/unicode.yml @@ -42,6 +42,12 @@ debug: var=unicode_host_var +- name: 'A play for hosts in group: ĪīĬĭ' + hosts: 'ĪīĬĭ' + gather_facts: false + tasks: + - debug: var=hostvars[inventory_hostname] + - name: 'A play for hosts in group: ĪīĬĭ' hosts: 'ĪīĬĭ' gather_facts: true