Ansible 需要 python-apt 但它已经安装



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

此外:我在"Ansible要求安装MySQL python,尽管它已经安装"上读到了答案,但我的情况不同,因为在本地控制机上,一切都很完美;多亏了这个问题,我发现我的问题出在遥控机器上。所以我的问题是一样的,但链接的问题不包含解决我问题的答案

我正在从命令行测试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。所以我检查了一下,但我有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,以及如何解决这个问题

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

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

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

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

因此,我使用将控制器的软件包安装到控制的机器中

$ 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中缩写为大写,所以请往下看查看文档

在确保包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
}

最新更新