问题
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