无法在ansible模块中导入MySQLdb
我正在尝试在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命令行(<<<)中可以正常工作,但在ansible模块中却不行。
在我的ansible模块中,其他代码都能正常运行。
请问是否需要对ansible进行什么配置设置?
1 个回答
6
你的 MySQLdb 模块在 Python 环境中找不到。在你的脚本里,你是用 #!/usr/bin/python
来运行 Python 的。很有可能你在命令行中运行的 Python(也就是你输入 >>>
后的那个)和你脚本里用的不是同一个 Python。你可以试着运行:
which python
来查看你正在使用哪个 Python。如果是其他版本的 Python,你可以在 Ubuntu 上安装它:
sudo apt-get install python-mysqldb
或者在 CentOS、RedHat 上安装:
sudo yum install MySQL-python
希望这些信息对你有帮助。