0

我正在编写一个脚本来通过 ansible 将代码重新部署到英特尔爱迪生。运行以下命令时出现错误。如果可能的话,我想知道如何在本地找到导致此问题的文件。我认为在服务器上引发错误的文件“/home/root/.ansible/tmp/ansible-tmp-1444631867.66-245111051532005/setup”可能是从本地存储库中的文件生成的。

但是,我似乎无法在本地 ansible 中找到此设置文件,并且在引发错误后,ansible 会从服务器(edison)中删除此文件。

$ ansible-playbook -i inventory.yml provision_edison.yml

failed: [192.168.1.196] => {"failed": true, "parsed": false}
Traceback (most recent call last):
  File "/home/root/.ansible/tmp/ansible-tmp-1444631867.66-245111051532005/setup", line 196, in <module>
import syslog
ImportError: No module named syslog
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

我的库存文件inventory.yml

[edisons]
192.168.1.196

我的 provision_edison.yml 文件

 ---
 - hosts: edisons
   remote_user: root
   tasks:
     - name: "test if stuff is working"
       shell: uname -a

我认为这是服务器上发生的 python 导入错误。我尝试查看服务器抛出的行号 196 是否对应于我在本地拥有的文件,但没有运气。

 root@edison-01:/usr/bin# ./python
 Python 2.7.3 (default, Aug 15 2014, 22:34:09) 
 [GCC 4.8.2] on linux2
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import syslog
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ImportError: No module named syslog
4

2 回答 2

0

许多一次性 Python 版本不包含 syslog 库,即使它在技术上是核心的一部分。此问题应通过以下提交在 Ansible 2.0 中修复:https ://github.com/ansible/ansible/commit/c57200925f7fc3c77da9a0b671ef7328cad15d8d

于 2015-10-14T15:49:32.730 回答
0

您的 Python 环境中的某些内容必须关闭。 syslog至少从 2.6 开始就成为标准库的一部分。这是基于 Unix 的机器吗?这是 Python 的全新安装吗?我会检查你的 Python 路径之类的东西,看看你是否可以在那个盒子上导入其他标准库。

于 2015-10-12T22:03:17.617 回答