为什么将 "ansible_python_interpreter" conf 选项设置为“/usr/bin/python3”

Why set "ansible_python_interpreter" conf option to '/usr/bin/python3'

我想在托管节点上使用 python 3.6 和 Ansible(我想控制节点可以使用任何东西)。

在其 official doc 上,它说要在托管节点上启用 python 3.6,我必须将 ansible_python_interpreter 配置选项设置为 /usr/bin/python3。这个选项是 inventory option。我知道即使使用动态清单也可以设置此清单变量,但我只是不想设置变量那么复杂。

所以我没有设置这个选项,而是我:

  1. 使用 ec2_module 自动配置 aws ec2 ubuntu18.04(python 3.6 at /usr/bin/python3)(我也可以使用 raw 模块来安装如果它不存在)
  2. 使用 raw 模块创建从 /usr/bin/python/usr/bin/python3
  3. 的符号链接

我试过了,似乎只要将 /usr/bin/python 设置为可接受的 python 版本(>= 2.7>= 3.6),它就应该可以工作。 ..

问题: 那么将 ansible_python_interpreter 配置选项设置为 /usr/bin/python3 有什么意义呢?

Question: So what's the point of setting the ansible_python_interpreter configuration option to /usr/bin/python3?

默认情况下,Ansible 将始终在远程系统上使用 /usr/bin/python。你设置 ansible_python_interpreter 来提供一条通往 不是 /usr/bin/python 的东西的路径,如果你想让它使用它的话。当然,您可以改为创建符号链接,但是:

  • 这比设置清单变量容易多少?
  • 在许多发行版中,/usr/bin/python 已经存在并且是 Python 2 并且是系统工具所必需的。更换它会损坏东西。
  • 即使在默认情况下不附带 Python 2 的系统上,通过创建从 /usr/bin/python/usr/bin/python3 的符号链接,您也可能会破坏任何期望 /usr/bin/python 是 Python 2. 现在可能不会咬你,但将来可能会让你大吃一惊。