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

rea*_*ebo 5 python ansible

序言:我只是先移动ansible,所以请耐心等待

另外:我读了“尽管已安装MySQL-python的Ansible要求安装”一文的答案,但我的情况有所不同,因为在控制机器上本地是完美的。由于这个问题,我发现我的问题出在遥控机器上。所以我的问题是相同的,但是链接的问题不包含解决我的问题的答案

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

~/.ssh$ ansible openvpn -C -m "ping"
192.168.1.225 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
Run Code Online (Sandbox Code Playgroud)

我试图发射一个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."
}
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Davide Maze所建议的,这可能是由于丢失了python-apt。所以我检查了,但是_我有python-apt

$ python -V
Python 2.7.15rc1

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

$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

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

rea*_*ebo 5

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

python-apt控制器机器中检查,而不是在受控机器中。

所以,当我安装包控制器控制使用机器:

$ ansible openvpn -m "apt name=python-apt state=latest" --become-user realtebo
Run Code Online (Sandbox Code Playgroud)

您也可以使用以下表格,即sudo apt-get update等待操作员输入密码。用户是通过 ssh 登录的用户;所以检查你的配置。就我而言,我使用的是 ssh 密钥;密码登录完全被禁用。

$ ansible openvpn -m apt -a "update-cache=yes" --become --ask-become-pass
Run Code Online (Sandbox Code Playgroud)

提示 1:为了避免这种交互,可以使用 Vault,但我还没有尝试过。

提示 2:此外,--ask-become-pass不在您可能正在寻找的文档中,在 letter 处a;这是因为选项被缩短为-K大写,所以往下看更多见文档

在确保远程包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
}
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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