ansible中的系统特定变量

时间:2014-03-31 18:39:53

标签: ansible

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,所以我不必将其传递给每个命令?我不想将它添加到我的剧本中,因为并非所有运行剧本的系统都有类似我的设置。

3 个答案:

答案 0 :(得分:27)

你可以用三种方式设置

  1. http://docs.ansible.com/intro_inventory.html#list-of-behavioral-inventory-parameters ansible_python_interpreter=/usr/bin/python2这将按主机设置
  2. 设置 host_vars / ansible_python_interpreter: "/usr/bin/python2"这将按主机设置
  3. 将其设置为文件group_vars/all中的所有节点(您可能需要创建目录group_vars,文件all)为{{1} }
  4. 希望有所帮助

答案 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