Ansible期待python 2.在我的系统上(Arch Linux)," python"是Python 3,所以我必须在每个命令中传递-e "ansible_python_interpreter=/usr/bin/python2"
。
ansible-playbook my-playbook.yml -e "ansible_python_interpreter=/usr/bin/python2"
我的系统上是否有全局设置ansible_python_interpreter
,所以我不必将其传递给每个命令?我不想将它添加到我的剧本中,因为并非所有运行剧本的系统都有类似我的设置。
答案 0 :(得分:27)
你可以用三种方式设置
ansible_python_interpreter=/usr/bin/python2
这将按主机设置ansible_python_interpreter: "/usr/bin/python2"
这将按主机设置group_vars/all
中的所有节点(您可能需要创建目录group_vars
,文件all
)为{{1} } 希望有所帮助
答案 1 :(得分:2)
我选择使用Ansible的功能从目录中获取广告资源。通过这种方式,我只能为本地机器
定义本地主机的ansible_python_interpreter
inventory_dir/local
[local]
localhost ansible_python_interpreter="/path/to/alternate/bin/python"
然后就像使用库存文件一样使用目录。
ansible-playbook -i inventory_dir playbook.yml
答案 2 :(得分:1)
对于想要使用本地激活的virtualenv python解释器的人
在inventory
文件集中
[local]
localhost ansible_python_interpreter=python