"TypeError: update expected at most 1 arguments, got 2"

I’m running a simple playbook from within Ansible Tower but getting the error in the subject line.

Version info:

  • Tower server: RHEL 7.5, Ansible 2.5.3, Ansible Tower 3.2.2
  • Remote node: RHEL 7.5

The playbook has multiple hosts sections, all are defined like this (with line numbers):

21 - name: “Setup the testing TEST/DEV systems”
22 hosts: test_dev

63 - name: “Setup the testing PPROD/PROD systems”
64 hosts: test_prod

103 - name: Setup of test systems

104 hosts: test_sys

The “test_sys” group is just a collection of the “test_dev” and “test_prod” groups. The first two work just fine and gather facts, but the third errors out in the “Gathering Facts” step (lines truncated for length marked with ‘snip’):

TASK [Gathering Facts] *********************************************************
task path: /var/lib/awx/projects/_146__ansibletowersetup/CICD-InfoSec-Testing/setuptesting.yml:103
Using module file /usr/lib/python2.7/site-packages/ansible/modules/system/setup.py
<10.50.219.144> ESTABLISH SSH CONNECTION FOR USER: root
<10.50.219.144> SSH: EXEC ssh -o UserKnownHostsFile=/dev/null -o ControlPersist=60s -o StrictHos […snip…]
Using module file /usr/lib/python2.7/site-packages/ansible/modules/system/setup.py
<10.50.219.146> ESTABLISH SSH CONNECTION FOR USER: root
<10.50.219.146> SSH: EXEC ssh -o UserKnownHostsFile=/dev/null -o ControlPersist=60s -o StrictHos […snip…]
<10.50.219.144> (0, '\n{“invocation”: {“module_args”: {“filter”: “*”, “gather_subset”: [“all”], […snip…]
ERROR! Unexpected Exception, this is probably a bug: update expected at most 1 arguments, got 2
the full traceback was:

Traceback (most recent call last):
File “/usr/bin/ansible-playbook”, line 118, in
exit_code = cli.run()
File “/usr/lib/python2.7/site-packages/ansible/cli/playbook.py”, line 122, in run
results = pbex.run()
File “/usr/lib/python2.7/site-packages/ansible/executor/playbook_executor.py”, line 159, in run
result = self._tqm.run(play=play)
File “/usr/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py”, line 289, in run
play_return = strategy.run(iterator, play_context)
File “/usr/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py”, line 321, in run
results += self._wait_on_pending_results(iterator)
File “/usr/lib/python2.7/site-packages/ansible/plugins/strategy/init.py”, line 674, in _wait_on_pending_results
results = self._process_pending_results(iterator)
File “/usr/lib/python2.7/site-packages/ansible/plugins/strategy/init.py”, line 117, in inner
results = func(self, iterator, one_pass=one_pass, max_passes=max_passes)
File “/usr/lib/python2.7/site-packages/ansible/plugins/strategy/init.py”, line 606, in _process_pending_results
self._variable_manager.set_host_facts(target_host, result_item[‘ansible_facts’].copy())
File “/usr/lib/python2.7/site-packages/ansible/vars/manager.py”, line 587, in set_host_facts
self._fact_cache.update(host.name, facts)
TypeError: update expected at most 1 arguments, got 2

Any ideas where to start looking?

Dan,

This looks to me like a bug in Ansible itself, rather than awx.

Dan,

For help with Ansible, you might try the Ansible mailing list:https://groups.google.com/forum/#!forum/ansible-project

Or the Ansible IRC room on freenode (ansible)

Based on your usage of Ansible Tower, you might also consider reaching out to your account representative at Red Hat (this mailing list is specifically for the open source awx project).

I’d agree, but when I run the playbook from the command line that error doesn’t come up so I’m suspecting something with the AnsibleTower-AnsibleCore interactions.

I’ll open a ticket with RedHat support to see what they say.