Fix storing delegate_to facts (#70231)

* Fix storing delegate_to facts
This commit is contained in:
Martin Krizek 2020-06-23 18:02:16 +02:00 committed by GitHub
parent c9edb35652
commit 88bb76f248
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 5 deletions

View file

@ -242,22 +242,25 @@ class ActionBase(with_metaclass(ABCMeta, object)):
# we'll propagate back to the controller in the task result # we'll propagate back to the controller in the task result
discovered_key = 'discovered_interpreter_%s' % idre.interpreter_name discovered_key = 'discovered_interpreter_%s' % idre.interpreter_name
# update the local vars copy for the retry
if use_vars.get('ansible_facts') is None:
use_vars['ansible_facts'] = {}
use_vars['ansible_facts'][discovered_key] = self._discovered_interpreter
# TODO: this condition prevents 'wrong host' from being updated # TODO: this condition prevents 'wrong host' from being updated
# but in future we would want to be able to update 'delegated host facts' # but in future we would want to be able to update 'delegated host facts'
# irrespective of task settings # irrespective of task settings
if not self._task.delegate_to or self._task.delegate_facts: if not self._task.delegate_to or self._task.delegate_facts:
# store in local task_vars facts collection for the retry and any other usages in this worker # store in local task_vars facts collection for the retry and any other usages in this worker
if use_vars.get('ansible_facts') is None: if task_vars.get('ansible_facts') is None:
task_vars['ansible_facts'] = use_vars['ansible_facts'] = {} task_vars['ansible_facts'] = {}
task_vars['ansible_facts'][discovered_key] = use_vars['ansible_facts'][discovered_key] = self._discovered_interpreter task_vars['ansible_facts'][discovered_key] = self._discovered_interpreter
# preserve this so _execute_module can propagate back to controller as a fact # preserve this so _execute_module can propagate back to controller as a fact
self._discovered_interpreter_key = discovered_key self._discovered_interpreter_key = discovered_key
else: else:
if task_vars['ansible_delegated_vars'][self._task.delegate_to].get('ansible_facts') is None: if task_vars['ansible_delegated_vars'][self._task.delegate_to].get('ansible_facts') is None:
task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'] = {} task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'] = {}
use_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'] = {}
task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'][discovered_key] = self._discovered_interpreter task_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'][discovered_key] = self._discovered_interpreter
use_vars['ansible_delegated_vars'][self._task.delegate_to]['ansible_facts'][discovered_key] = self._discovered_interpreter
return (module_style, module_shebang, module_data, module_path) return (module_style, module_shebang, module_data, module_path)

View file

@ -73,3 +73,5 @@ ansible-playbook discovery_applied.yml -i inventory -v "$@"
# https://github.com/ansible/ansible/issues/70168 # https://github.com/ansible/ansible/issues/70168
ansible-playbook verify_interpreter_delegate_facts.yml -i inventory -v "$@" ansible-playbook verify_interpreter_delegate_facts.yml -i inventory -v "$@"
ansible-playbook verify_interpreter_auto_delegate_to.yml -i inventory -v "$@"

View file

@ -0,0 +1,7 @@
- hosts: testhost
gather_facts: no
tasks:
- detect_interpreter:
delegate_to: testhost3
vars:
ansible_python_interpreter: auto