Ansible需要python-apt,但是已经安装了

时间:2018-07-31 22:00:18

标签: python ansible

  

序言:我只是在移动ansible中的第一个按键,所以请耐心等待

     

也:我在'Ansible demands installing MySQL-python despite it was already installed'上阅读了答案,但是我的情况有所不同,因为在控制机器上本地是完美的。由于这个问题,我发现我的问题出在遥控机器上。因此,我的问题是相同的,但是链接的问题不包含解决我的问题的答案

我正在从命令行测试ansible。例如,我可以ping通

~/.ssh$ ansible openvpn -C -m "ping"
192.168.1.225 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

我尝试启动apt update

  

我不确定这是否适合与apt-get update等价的语法,但这不是 问题

     

我正在使用-C来查看当我要求进行空试时ansible对我说的话。

$ ansible openvpn -C -m "apt update-cache=yes"
192.168.1.225 | FAILED! => {
    "changed": false,
    "msg": "python-apt must be installed to use check mode. If run normally this module can auto-install it."
}

编辑:如@Davide Maze所建议,可能是由于缺少python-apt造成的。所以我检查了一下,但是_I有python-apt

$ python -V
Python 2.7.15rc1

$ pip list
... cut ...
python-apt (1.6.2)
... cut ...

$ which python
/usr/bin/python

我的问题是:为什么ansible告诉我未安装python-apt,以及如何解决此问题?

2 个答案:

答案 0 :(得分:5)

我通过在运行 ansible_python_interpreter 时使用 ansible-playbook 参数解决了这个错误,如下所示。

ansible-playbook playbook_name.yml -e ansible_python_interpreter=/usr/bin/python --check

答案 1 :(得分:2)

感谢@David Maze为我指出正确的方向

我在 controller 机器中检查python-apt,而不是在受控机器中检查。{p>

因此我使用

将软件包从控制器安装到控制器计算机中
$ ansible openvpn -m "apt name=python-apt state=latest" --become-user realtebo

您还可以使用以下格式,即sudo apt-get update,然后等待操作员输入密码。用户是通过ssh登录的用户;因此,请检查您的配置。就我而言,我使用的是ssh键,密码登录功能完全被禁用。

$ ansible openvpn -m apt -a "update-cache=yes" --become --ask-become-pass
  

提示1:为避免这种相互作用,保险库文件可用,但我尚未尝试过。

     

提示2:此外,--ask-become-pass不在您可能要查找的文档中,字母为a;这是因为该选项在大写的-K中被缩短了,所以在See the doc下往下看

确保软件包python-apt可以远程使用之后,-C选项开始起作用,正是因为现在python-apt可以远程使用。

ansible openvpn -C -m "apt name=python state=latest"

192.168.1.225 | SUCCESS => {
    "cache_update_time": 1533077635,
    "cache_updated": false,
    "changed": false
}