Ansible K8s module: Failed to import the required Python library (openshift) on Python /usr/bin/python3

情到浓时终转凉″ 提交于 2021-01-28 03:10:56

问题


The env

Ansible 2.9.6 (python3)

Tried to run a simple playbook

- hosts: master
  gather_facts: no
  become: yes
  tasks:
    - name: create name space
      k8s:
        name: testing
        api_version: v1
        kind: Namespace
        state: present

Getting following error

The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_k8s_payload_u121g92v/ansible_k8s_payload.zip/ansible/module_utils/k8s/common.py", line 33, in <module>
    import kubernetes
ModuleNotFoundError: No module named 'kubernetes'
fatal: [192.168.20.38]: FAILED! => {
    "changed": false,
    "error": "No module named 'kubernetes'",
    "invocation": {
        "module_args": {
            "api_key": null,
            "api_version": "v1",
            "append_hash": false,
            "apply": false,
            "ca_cert": null,
            "client_cert": null,
            "client_key": null,
            "context": null,
            "force": false,
            "host": null,
            "kind": "Namespace",
            "kubeconfig": null,
            "merge_type": null,
            "name": "testing",
            "namespace": null,
            "password": null,
            "proxy": null,
            "resource_definition": null,
            "src": null,
            "state": "present",
            "username": null,
            "validate": null,
            "validate_certs": null,
            "wait": false,
            "wait_condition": null,
            "wait_sleep": 5,
            "wait_timeout": 120
        }
    },
    "msg": "Failed to import the required Python library (openshift) on k8smasternode's Python /usr/bin/python3. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"
}

It confuses me that,

  • the root cause is "no module named kubernetes"?
  • or "Failed to import the required Python library (openshift) on Python /usr/bin/python3"?

And how to fix that?

Any help would be appreciated!

btw,

Kubernetes master node has /usr/bin/python3


回答1:


Taking a look at the documentation here: https://docs.ansible.com/ansible/latest/modules/k8s_module.html

Seems like you need to have:

  • python >= 2.7
  • openshift >= 0.6
  • PyYAML >= 3.11

One way to do this is:

pip install openshift pyyaml kubernetes 

Side note, I've added kubernetes here but I believe it's a dependency of openshift.




回答2:


Define this variable in inventory - ansible_python_interpreter: /usr/local/bin/python3, it must help ansible to choose right interpreter during local connection.



来源:https://stackoverflow.com/questions/60866755/ansible-k8s-module-failed-to-import-the-required-python-library-openshift-on

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!