我正在尝试在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做任何配置设置?
答案 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
希望它有所帮助。