eme*_*ava 3 lxml python-2.7 ansible
我有 ansible (v2.0.0.2) 和 python (v2.7.6),并且我正在运行“maven_artifact”模块。
作为直接的 ansible 命令,它工作得很好
ansible localhost -m maven_artifact -a "group_id=commons-collections artifact_id=commons-collections dest=/tmp/commons-collections-latest.jar" -vvvv
Run Code Online (Sandbox Code Playgroud)
但是当我通过剧本做同样的事情时
- name: download via maven
maven_artifact: group_id=junit artifact_id=junit dest=/tmp/junit-latest.jar
Run Code Online (Sandbox Code Playgroud)
它因此错误而失败
fatal: [test01vm1]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_name": "maven_artifact"},
"module_stderr": "",
"module_stdout": "\r\nTraceback (most recent call last):\r\n
File \"/home/admin123/.ansible/tmp/ansible-tmp-1454675562.75-201853614879442/maven_artifact\",
line 25, in <module>\r\n from lxml import etree\r\nImportError:
No module named lxml\r\n", "msg": "MODULE FAILURE", "parsed": false}
Run Code Online (Sandbox Code Playgroud)
我相信可能与 python lxml 模块有关,我发现了这些现有的票证
http://stackoverflow.com/questions/13355984/get-errors-when-import-lxml-etree-to-python
http://stackoverflow.com/questions/4598229/installing-lxml-module-in-python
Run Code Online (Sandbox Code Playgroud)
我想知道有人可以解决这个问题吗?
编辑 - 添加 python 路径详细信息
我运行这个命令来查看 python 主目录上的路径
14:55:11@pcZBook-15:/usr/local/etc$ python -c 'import sys; print(":".join(sys.path))'
Run Code Online (Sandbox Code Playgroud)
文件夹列表是
:/opt/stack/keystone
:/opt/stack/glance
:/opt/stack/cinder
:/opt/stack/nova
:/opt/stack/horizon
:/usr/lib/python2.7
:/usr/lib/python2.7/plat-x86_64-linux-gnu
:/usr/lib/python2.7/lib-tk
:/usr/lib/python2.7/lib-old
:/usr/lib/python2.7/lib-dynload
:/usr/local/lib/python2.7/dist-packages
:/usr/lib/python2.7/dist-packages
:/usr/lib/python2.7/dist-packages/PILcompat
:/usr/lib/python2.7/dist-packages/gtk-2.0
:/usr/lib/pymodules/python2.7
:/usr/lib/python2.7/dist-packages/ubuntu-sso-client
:/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode
Run Code Online (Sandbox Code Playgroud)
我通常做的是打电话:
- name: Install PIP
apt: name=python-pip state=present
- name: Install lxml
pip: name=lxml
Run Code Online (Sandbox Code Playgroud)
看起来 ansible 试图在远程目标主机上执行“maven_artifact”命令,而该主机没有所需的 python 库。
就我而言,我只想在本地“ansible_host”上运行命令,因此我只需添加“local_action”前缀即可运行命令。
- name: download via maven
local_action: maven_artifact group_id=junit artifact_id=junit dest=/tmp/junit-latest.jar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9677 次 |
最近记录: |