无法在ansible模块中导入MySQLdb

时间:2014-03-07 13:51:40

标签: python mysql-python ansible

我正在尝试在ansible中编写自定义模块。使用import MySQLdb时,它给了我错误

 failed: [127.0.0.1] => {"failed": true, "parsed": false}
invalid output was: Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-1394199347.29-33439012674717/inventory", line 11, in <module>
    import MySQLdb
ImportError: No module named MySQLdb

使用
Python版本: 2.6.6
MySQL-python版本: 1.2.3

Python代码: -

#!/usr/bin/python

import datetime
import sys
import json
import os
import shlex
import MySQLdb

db = MySQLdb.connect("localhost","user","pwd","db_name" )
cursor = db.cursor()
cursor.execute("SELECT * FROM hosts")
data = cursor.fetchone()
print data
db.close()

我写了一本剧本来运行ansible模块: -

inventory.yaml: -

---
- hosts: webservers
  user: root
  sudo: True
  vars:
     act: list
  tasks:
  - name: Run module inventory
    action: inventory act="{{act}}" prod="roop"

我正在使用以下命令运行此剧本: -

ansible-playbook -v playboook/path/inventory.yaml 

相同的代码在python命令行(&lt;&lt;&lt;&lt;)中工作,但不在ansible模块中工作。

在我的ansible模块中,其他代码正在运行。 是否需要为ansible做任何配置设置?

1 个答案:

答案 0 :(得分:6)

您的MySQLdb模块不在Python环境中。在您的脚本中,您使用以下命令运行python:#!/usr/bin/python。您从命令行(>>>)运行的Python很可能与Python不同。您可以尝试运行:

which python

找出你正在运行的Python。所以,如果它是另一个安装它的Python,你可以在Ubuntu上运行:

sudo apt-get install python-mysqldb

或在CentOS上,RedHat:

sudo yum install MySQL-python

希望它有所帮助。