missing 1 required positional argument: 'body'
Closed this issue · 4 comments
SUMMARY
I'm using community.kubernetes modules to create any rolebindings using a template.
ISSUE TYPE
- Bug Report
I used for days this template and it was working.
Error message:
{
"module_stdout": "",
"module_stderr": "Traceback (most recent call last):\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 102, in <module>\n _ansiballz_main()\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible_collections.community.kubernetes.plugins.modules.k8s', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 337, in <module>\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 333, in main\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 605, in execute_module\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 670, in perform_action\nTypeError: get() missing 1 required positional argument: 'body'\n",
"exception": "Traceback (most recent call last):\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 102, in <module>\n _ansiballz_main()\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible_collections.community.kubernetes.plugins.modules.k8s', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 337, in <module>\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 333, in main\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 605, in execute_module\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 670, in perform_action\nTypeError: get() missing 1 required positional argument: 'body'\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
COMPONENT NAME
common.py
ANSIBLE VERSION
ansible 2.9.13
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Aug 18 2020, 08:33:21) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
CONFIGURATION
OS / ENVIRONMENT
Red Hat Enterprise Linux release 8.3 (Ootpa)
STEPS TO REPRODUCE
I'm using ansible tower. I'm using a template to apply rolebindings.
I was using 1.1.1 version and it's working fine. I don't know why, I get this error. I tried to update to 1.2.0, but it's not solved.
---
- name: "Create Rolebindings"
hosts: all
vars_files:
- "defaults/secret.yml"
gather_facts: false
vars:
ansible_python_interpreter: /usr/bin/python3
module_defaults:
community.kubernetes.k8s:
state: 'present'
host: "https://<url>:6443"
api_key: "{{ SECRET.TOKEN }}"
validate_certs: no
tasks:
- name: Create defaults rolebindings
community.kubernetes.k8s:
state: present
template: 'bp_default-bindings.j2'
loop:
- { group_name: 'Openshift_{{ var_ambiente[0]|upper }}{{ var_ambiente[1:] }}_Arch', role_name: 'bp_arc_{{ var_ambiente }}' }
- { group_name: 'Openshift_{{ var_ambiente[0]|upper }}{{ var_ambiente[1:] }}_Aud', role_name: 'bp_aud_{{ var_ambiente }}' }
J2
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: "{{ item.role_name }}-{{ item.group_name }}"
namespace: "bp-{{ nome_namespace }}-{{ var_ambiente }}"
subjects:
- kind: Group
apiGroup: rbac.authorization.k8s.io
name: "{{ item.group_name }}"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: "{{ item.role_name }}"
EXPECTED RESULTS
Turn to create rolebindings again
ACTUAL RESULTS
{
"module_stdout": "",
"module_stderr": "Traceback (most recent call last):\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 102, in <module>\n _ansiballz_main()\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible_collections.community.kubernetes.plugins.modules.k8s', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 337, in <module>\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 333, in main\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 605, in execute_module\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 670, in perform_action\nTypeError: get() missing 1 required positional argument: 'body'\n",
"exception": "Traceback (most recent call last):\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 102, in <module>\n _ansiballz_main()\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/var/lib/awx/.ansible/tmp/ansible-tmp-1614365944.6865492-9-58089201719527/AnsiballZ_k8s.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible_collections.community.kubernetes.plugins.modules.k8s', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib64/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/usr/lib64/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/usr/lib64/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 337, in <module>\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/modules/k8s.py\", line 333, in main\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 605, in execute_module\n File \"/tmp/ansible_community.kubernetes.k8s_payload_if44_923/ansible_community.kubernetes.k8s_payload.zip/ansible_collections/community/kubernetes/plugins/module_utils/common.py\", line 670, in perform_action\nTypeError: get() missing 1 required positional argument: 'body'\n",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1,
"_ansible_no_log": false,
"changed": false,
"item": {
"group_name": "Openshift_Dev_Arch",
"role_name": "bp_arc_dev"
},
"ansible_loop_var": "item",
"_ansible_item_label": {
"group_name": "Openshift_Dev_Arch",
"role_name": "bp_arc_dev"
}
}
I am not able to reproduce
changed: [localhost] => (item={'group_name': 'Openshift_Av_Arch', 'role_name': 'bp_arc_av'}) => {"ansible_loop_var": "item", "changed": true, "item": {"group_name": "Openshift_Av_Arch", "role_name": "bp_arc_av"}, "method": "create", "result": {"apiVersion": "rbac.authorization.k8s.io/v1", "kind": "RoleBinding", "metadata": {"creationTimestamp": "2021-02-28T15:00:15Z", "name": "bp_arc_av-Openshift_Av_Arch", "namespace": "default", "resourceVersion": "8073020", "selfLink": "/apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/bp_arc_av-Openshift_Av_Arch", "uid": "6a1af9fd-4eba-40b6-b2ee-8b4a067a5bcf"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "bp_arc_av"}, "subjects": [{"apiGroup": "rbac.authorization.k8s.io", "kind": "Group", "name": "Openshift_Av_Arch"}]}}
changed: [localhost] => (item={'group_name': 'Openshift_Av_Aud', 'role_name': 'bp_aud_av'}) => {"ansible_loop_var": "item", "changed": true, "item": {"group_name": "Openshift_Av_Aud", "role_name": "bp_aud_av"}, "method": "create", "result": {"apiVersion": "rbac.authorization.k8s.io/v1", "kind": "RoleBinding", "metadata": {"creationTimestamp": "2021-02-28T15:00:16Z", "name": "bp_aud_av-Openshift_Av_Aud", "namespace": "default", "resourceVersion": "8073025", "selfLink": "/apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/bp_aud_av-Openshift_Av_Aud", "uid": "e1dbc251-6f5b-4682-b29d-1a27a44fa372"}, "roleRef": {"apiGroup": "rbac.authorization.k8s.io", "kind": "ClusterRole", "name": "bp_aud_av"}, "subjects": [{"apiGroup": "rbac.authorization.k8s.io", "kind": "Group", "name": "Openshift_Av_Aud"}]}}
# ansible-galaxy collection list | grep kuber
community.kubernetes 1.2.0
I am trying other things to reproduce this.
It's crazy because I have no changes on my environment.
I tried upgrade to 1.2.0, but I get same error.
I find out a difference between success and error logs.
On success, the module search patch is:
ansible-playbook 2.9.13
config file = /etc/ansible/ansible.cfg
configured module search path = ['/var/lib/awx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
On error logs, I get:
ansible-playbook 2.9.13
config file = /etc/ansible/ansible.cfg
configured module search path = ['/var/lib/awx/venv/awx/lib64/python3.6/site-packages/awx/plugins/library']
I don't know why this difference.
In the error, your system is only looking in the module content that ships with AWX itself while the success runs is looking in modules (collections) installed into AWX and the system Ansible that presumably includes the latest version of this collection.
I'm pretty sure that is where your problem is at -- something is changing/overriding in your Tower system configuration search path. I'd recommend contacting Red Hat support for assistance if you can't figure out what's changing your system configuration.