Im using Ansible 2.5 on Ubuntu 17.10
Given the following xml file
<business>
<beers>
</beers>
</business>
Trying to add nested elements so that the file is changed to the following output fails.
<business>
<beers>
<beer>
<name>Old Rasputin</name>
<year>2000</year>
</beer>
</beers>
</business>
Here is the playbook I used
- name: Add several more beers with the year of manufacture nested
xml:
path: /foo/bar.xml
xpath: /business/beers
add_children:
- beer:
- name: Old Rasputin
- year: 2000
I see the following exception,
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: Argument must be bytes or unicode, got 'list'
fatal: [localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/tmp/ansible_sv9JSC/ansible_module_xml.py\",
line 860, in <module>\n main()\n File \"/tmp/ansible_sv9JSC/ansible_module_xml.py\", line 840, in main\n
add_target_children(module, doc, xpath, namespaces, add_children, input_type)\n File \"/tmp/ansible_sv9JSC/ansible_module_xml.py\", line 409, in add_target_children\n
new_kids = children_to_nodes(module, children, in_type)\n File \"/tmp/ansible_sv9JSC/ansible_module_xml.py\", line 651, in children_to_nodes\n
return [child_to_element(module, child, type) for child in children]\n File \"/tmp/ansible_sv9JSC/ansible_module_xml.py\", line 639, in child_to_element\n
node.text = value\n File \"src/lxml/etree.pyx\", line 1030, in lxml.etree._Element.text.__set__\n File \"src/lxml/apihelpers.pxi\", line 716, in lxml.etree._setNodeText\n
File \"src/lxml/apihelpers.pxi\", line 704, in lxml.etree._createTextNode\n File \"src/lxml/apihelpers.pxi\", line 1442, in lxml.etree._utf8\nTypeError: Argument must be bytes or unicode, got 'list'\n",
"module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}
Is this supported or am I missing something here?