Ansible无法找到Python模块

时间:2019-03-27 09:19:54

标签: python pip ansible

可用于在多个虚拟机上运行docker swarm。
即使已安装,ansible也无法在远程计算机上找到python模块responseType: "arraybuffer",

运行剧本 docker

错误消息:

sudo ansible-playbook -i inv2.py /etc/ansible/playbook.yml

模块列表:

fatal: [10.212.137.216]: FAILED! => {"changed": false, "msg": "Failed to import docker or docker-py - No module named requests.exceptions. Try `pip install docker` or `pip install docker-py` (Python 2.6)"}

5 个答案:

答案 0 :(得分:1)

发生此错误是因为Ansible正在搜索您正在使用的python模块的其他路径。

当您使用official package禁用Ansible时,它将使用python 2.7,因此,当您运行Ansible时,它将搜索python 2模块。

有很多解决方法:

  • 添加ansible_python_interpreter选项以设置正确的Python路径:

类似于以下示例:

ansible-playbook -i inventory playbook.yml -e'ansible_python_interpreter=/usr/bin/python3'
  • 使用pip3重新安装ansible,这是我在系统上运行的打包程序管理器版本,我真的认为这是避免以后发生错误的最佳方法:

使用以下命令:

sudo apt remove ansible
pip3 install ansible

详细了解有关Ansible对Python 3的支持:Ansible - Python 3 Support

答案 1 :(得分:0)

确保docker-py没有与docker并行安装。如果是这种情况,请卸载docker-py并重新安装docker。有关更多详细信息,请参见上面@vladimir的要求链接。

以防万一,因为您没有提供剧本...:您是否100%确定docker命令在目标vm上运行?还是要从Ansible本地主机解决已安装的群?在后一种情况下,必须在运行ansible的计算机上安装pip docker模块。

答案 2 :(得分:0)

以下配置适用于我。它会安装docker,python和docker-compose最新版本

---
- name: Checking docker on latest version
  apt: name=docker.io state=latest

- name: Checking python
  apt: name=python state=latest

- name: Checking docker-compose on latest version
  apt: name=docker-compose state=latest

答案 3 :(得分:0)

您的主机文件-/ etc / ansible / hosts中需要python解释器

ansible_python_interpreter=/usr/bin/python3

例如:

ubuntu@${ip} ansible_private_key_file=~/.ssh/${var.key_name}.pem ansible_python_interpreter=/usr/bin/python3

对于剧本,您需要Python模块和python docker-compose。工作示例为:

tasks:
    - name: Install Docker
      apt:
        update_cache: yes
        name: docker.io
  
    - name: Install Docker-Compose
      apt:
        name: docker-compose
  
    - name: Install Python Module
      apt:
        name: python3-pip
  
    - name: Install Python Docker-Compose
      pip:
        name: docker-compose

答案 4 :(得分:0)

FWIW,我遇到了这个问题,因为/usr/lib64/python2.7下的目录仅对root可读和可执行。我运行chmod -R go+rX /usr/lib{,64}之后,问题就消失了。 root的{​​{1}}是umask,因此出现了问题。