Ansible 要求安装 MySQL-python,尽管它已经安装

2024-03-21

我正在尝试使用在 Mac OSX 上运行的 Ansible 控制器创建一个新的 MySQL 数据库。当我第一次得到msg: the python mysqldb module is required错误消息,我添加了一个任务来安装MySQL-python with pip。它已正确安装,但我仍然收到 Ansible 要求安装的错误。

我的最小剧本是:

- hosts: all
  tasks:
  - name: Ensure MySQL-python module is installed
    pip:
      name: MySQL-python
      executalbe: /usr/local/Cellar/python/2.7.10_2/bin/pip

  - name: Create test_db MySQL database
    mysql_db:
      name: test_db
      state: present

当我运行剧本时:

ansible-playbook -i "localhost," -c local mysql-test.yml

我得到以下结果(changed对于第一次运行时的第一个任务):

TASK: [Ensure MySQL-python module is installed] **************************************
ok: [localhost]

TASK: [Create test_db MySQL database] *********************************************
failed: [localhost] => {"failed": true}
msg: the python mysqldb module is required

pip show MySQL-python显示软件包已正确安装。

我正在运行 Python 2.7.10 和 Ansible 1.9.4,两者都安装了homebrew,因此我不使用sudo.

缺什么?


  • 我检查了剧本ubuntu/trusty64Vagrant 机器和它一起工作没问题(OSX 是 Ansible 控制器,唯一的区别是需要sudo in pip模块)。

  • 我在本地的第二台 Mac 上检查了剧本-c local并通过 SSH 远程并得到相同的结果error正如原来的问题(对于pip为了通过 SSH 正常工作,我必须添加executalbe=/usr/local/Cellar/python/2.7.10_2/bin/pip否则它报告msg: Failed to find required executable pip)

运行时任务的结果-c local -vvvv:

<localhost> REMOTE_MODULE mysql_db name=test_db state=present
<localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037 && echo $HOME/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037']
<localhost> PUT /var/folders/nw/2vnhg_gj77v_cyfv0p1vdfj80000gn/T/tmpK3DT_j TO /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/mysql_db
<localhost> EXEC ['/bin/sh', '-c', u'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/mysql_db; rm -rf /Users/techraf/.ansible/tmp/ansible-tmp-1446497958.1-90296161052037/ >/dev/null 2>&1']
failed: [localhost] => {"failed": true}
msg: the python mysqldb module is required

问题的原因是 Ansible 使用了默认的 OSX 的 Python (/usr/bin/python) 运行时在结果中可见-vvvv option.

第一个任务成功,因为默认 OSX 的 Python 称为 Homebrewpip可执行文件并安装了MySQL-pythonHomebrew 的 Python 模块。

第二个任务失败,因为它再次运行默认的 OSX 的 Python,这需要MySQL-python,但该版本未安装该模块。

解决方案是使用选项指定 Ansible 使用的 Python 解释器的路径:

ansible-playbook -i "localhost," -c local --extra-vars "ansible_python_interpreter=/usr/local/bin/python" mysql-test.yml

或添加ansible_python_interpreter=/usr/local/bin/python到库存文件。

同样的问题是提及 https://serverfault.com/questions/567887/how-to-install-python-packages-to-homebrew-ansibles-site-packages-folder,它包含其他可能解决方案的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible 要求安装 MySQL-python,尽管它已经安装 的相关文章

随机推荐

  • 操作栏菜单项文本颜色

    如何更改菜单项标题的文本颜色 我尝试将其更改如下 但它仅更改操作栏标题文本的颜色 而不更改菜单项文本的颜色 尝试这样的事情
  • 指定的控制器无效(错误) - Zend Framework

    我总是收到这个错误 blub libraries Zend Controller Dispatcher Standard php 中出现异常 Zend Controller Dispatcher Exception 消息为 指定的控制器无效
  • 我什么时候应该重写 Equals 函数? [复制]

    这个问题在这里已经有答案了 可能的重复 Java 总是覆盖等于 https stackoverflow com questions 1549553 java always override equals 我应该覆盖equals我创建的任何类
  • Python:Numpy 将数组的每一行与另一个数组的每一行相乘

    我知道对此存在一些疑问 这应该可以通过广播实现 但不知怎的 我真的不明白广播如何通过添加附加轴来工作 还有一个类似的问题 其中一个数组的每一列与另一个数组的每一列相乘 将每一列与每一列相乘 https stackoverflow com q
  • Flowtype - 如何编写类工厂的声明,例如骨干模型?

    广泛的谷歌搜索和阅读 Flow 文档和示例并没有显示 Javascript 中非常常见的模式的任何示例 具有返回类的函数 一个典型的例子是 Backbone var User Backbone Model extend getFullNam
  • 为什么 DOCUMENT_ROOT 与远程服务器上的 realpath('.') 不同

    with echo realpath br echo dirname FILE br echo realpath dirname FILE br echo SERVER PHP SELF br echo getcwd 我总是得到 servi
  • 如何检查 CLI 程序是否正在等待来自 stdin 的输入?

    如何检查我刚刚使用 CreateProcess 启动的 CLI 程序是否正在等待来自 Windows C API 的标准输入的输入 正如上面的一些评论所说 一旦程序已经开始等待 您就无法检查程序是否正在等待标准输入 您可以使用事件处理程序
  • 2 个文档在 MongoDB 中合并

    我需要从 MongoDB 中不同集合的两个文档中获取数据 其中有 1 个公共字段 对数据库没有更改 我是新手 请帮助我 a db users find username email protected cdn cgi l email pro
  • 使用 JQuery 从另一个网站获取 HTML:可能吗?合法的?

    我正在尝试从不在同一域中的网页获取 HTML 代码 html 文本被解析并总结了在 HTML 代码来源的页面上找到的食谱 食谱名称 主要成分 步骤数 然后 用户可以单击该链接并转到域外的该网页来查看菜谱 我知道同源策略 但这是否适用于从国内
  • 使用 Chrome 打开正文中包含 HTML 的 Outlook

    虽然我已经从 Stack 中找到了很多这方面的信息 特别是here https stackoverflow com questions 5620324 mailto with html body 我只是想绝对确定在 Chrome 中无法执行
  • 嵌套哈希中的 Form_tag 参数

    我有一个没有与之关联的模型的表单 所以我正在使用form tag而不是form for 正如预期的那样 当用户提交表单时 每个字段都包含在 params 哈希中 但表单会发生很大变化 我希望在 params 哈希中包含一个哈希 该哈希将保存
  • .Net 3.5 中 Dynamic 关键字的使用

    我使用 net v4 5 在 Visual Studio 2013 中编写了这段代码 我遇到的问题是 我现在必须降级到 net v3 5 而动态关键字会抛出错误 因为缺少程序集引用 net v3 5 中是否有与 动态 等效的类型 或者有什么
  • Python Curses 不清除屏幕

    我想在Python下使用Curses而不清除屏幕 原因是我希望我的应用程序在现有屏幕上弹出一个简单的小菜单并很快退出 退出时将弹出菜单中丑陋的部分保留在屏幕上是可以接受的 但不是首选 我们的想法是将其用于快速实用的系统管理应用程序和脚本 其
  • 我的拉取请求已合并,下一步该做什么?

    我最近参与了 GitHub 的一个项目 我做了以下事情 分叉原始存储库 将其克隆到我的本地计算机 创建一个分支来修复现有错误 修复该分支中的错误 将该分支推送到我的存储库 向存储库的作者发送拉取请求以合并我的fix分支到其主分支 这是我第一
  • 如何在C++中输出变量的二进制值

    我的 C 编程课上有一项作业 要求编写一个输出变量值的二进制值的函数 例如 如果我将 a 的值设置为字符 我应该得到 a 输出的二进制值 我的 C 教授并不是全世界最伟大的 而且我在使用他给我们的神秘示例来使我的代码正常工作时遇到了困难 现
  • 在 LINQ 中学习表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您可以推荐哪些有关 LINQ 表达式树的文章 教程 Link https learn microsof
  • 在执行另一个方法时(动态)更新标签文本

    我是一名 iOS 开发人员 目前正在开发 iPhone 应用程序 我有一个关于更新 ViewController 内容的简单问题 如果我能得到了解此问题的人的反馈或有建议的解决方案 我将不胜感激 我正在编写一种方法 不断更新标签的文本 以及
  • 如何在通过域名输入时仅显示一次页面预加载器?

    所以 我在主页上有 jQuery 页面预加载器 如下所示
  • 如何在 Android Studio (4.2) 中查看 JetpackCompose kotlin 源代码? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 When I command click进入 JetpackCompose 函数 我看到的全部如下 根据 Android Studio 4
  • Ansible 要求安装 MySQL-python,尽管它已经安装

    我正在尝试使用在 Mac OSX 上运行的 Ansible 控制器创建一个新的 MySQL 数据库 当我第一次得到msg the python mysqldb module is required错误消息 我添加了一个任务来安装MySQL