k8s module - TypeError: argument of type 'NoneType' is not iterable

757 views
Skip to first unread message

Jason Gilfoil

unread,
Feb 4, 2020, 11:50:56 PM2/4/20
to Ansible Project
Hello,

Trying to apply a yaml definition using the k8s module to my cluster. I've never used this module before so i'm trying to work out if i'm just doing something wrong or is this a bug?

playbook:

---

- hosts: kube-master[0]
  become
: no
  tasks
:
   
- name: Install simple app
      k8s
:
        definition
: "{{ lookup('file', 'redis-master-deployment.yaml') }}"
        kubeconfig
: .kube/config-dev
      delegate_to
: localhost

Error i'm getting:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: argument of type 'NoneType' is not iterable
fatal: [core01-dev -> localhost]: FAILED! => changed=false
  module_stderr: |-
    Traceback (most recent call last):
      File "<stdin>", line 114, in <module>
      File "<stdin>", line 106, in _ansiballz_main
      File "<stdin>", line 49, in invoke_module
      File "/usr/lib/python3.5/imp.py", line 234, in load_module
        return load_source(name, filename, file)
      File "/usr/lib/python3.5/imp.py", line 170, in load_source
        module = _exec(spec, sys.modules[name])
      File "<frozen importlib._bootstrap>", line 626, in _exec
      File "<frozen importlib._bootstrap_external>", line 665, in exec_module
      File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
      File "/tmp/ansible_k8s_payload__jlk6464/__main__.py", line 258, in <module>
      File "/tmp/ansible_k8s_payload__jlk6464/__main__.py", line 254, in main
      File "/tmp/ansible_k8s_payload__jlk6464/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py", line 154, in execute_module
      File "/tmp/ansible_k8s_payload__jlk6464/ansible_k8s_payload.zip/ansible/module_utils/k8s/common.py", line 180, in get_api_client
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 645, in load_kube_config
        persist_config=persist_config)
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 613, in _get_kube_config_loader_for_yaml_file
        **kwargs)
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 153, in __init__
        self.set_active_context(active_context)
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 173, in set_active_context
        context_name = self._config['current-context']
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 495, in __getitem__
        v = self.safe_get(key)
      File "/home/vagrant/.local/lib/python3.5/site-packages/kubernetes/config/kube_config.py", line 491, in safe_get
        key in self.value):
    TypeError: argument of type 'NoneType' is not iterable
  module_stdout: ''
  msg: |-
    MODULE FAILURE
    See stdout/stderr for the exact error
  rc: 1

Versions:
vagrant@ansible:/vagrant$ ansible --version
ansible 2.8.8
  config file = /vagrant/ansible.cfg
  configured module search path = ['/vagrant/library']
  ansible python module location = /home/vagrant/.local/lib/python3.5/site-packages/ansible
  executable location = /home/vagrant/.local/bin/ansible
  python version = 3.5.2 (default, Oct  8 2019, 13:06:37) [GCC 5.4.0 20160609]

vagrant@ansible:/vagrant$ python
Python 3.5.2 (default, Oct  8 2019, 13:06:37)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import yaml
>>> yaml.__version__
'5.3'
>>> import openshift
>>> openshift.__version__
'0.10.1'

Thanks!

Jason Gilfoil

unread,
Feb 6, 2020, 12:17:19 AM2/6/20
to Ansible Project

I figured it out. I had the path to my kubeconfig set wrong and i was missing 'context' and namespace parameters. What finally worked:

- hosts: kube-master[0]
  become: no
  tasks:
    - name: Install simple app
      k8s:
        definition: '{{ item }}'
        kubeconfig: ~/.kube/config-dev
        context: dev
        namespace: default
        state: absent
      with_items: '{{ lookup("url", "https://k8s.io/examples/application/guestbook/redis-master-deployment.yaml", split_lines=False) | from_yaml_all | list }}'
      when: item is not none
      delegate_to: localhost


Reply all
Reply to author
Forward
0 new messages