使用案例:
ansible_python_interpreter=/usr/bin/env python-docker
我们再次连接到同一主机,但现在必须使用/usr/bin/env python-docker
python解释器
要做到这一点,最好的方法是什么?
目前我们设置ansible_python_interpreter
在攻略级别上Playbook 2
---
- name: DaqMon app
vars:
- ansible_python_interpreter: "{{ '/usr/bin/env python-docker' }}"
这是可行的,但这也会改变本地操作的python解释器。因此,地方行动将会失败,因为(python-docker
本地不存在)。
ansible_python_interpreter
在每个冗长且容易出错的局部操作上问题
'/usr/bin/env python-docker'
作为后备interpreter-python-fallback-但我认为这是不可能的发布于 2019-08-26 15:40:10
感谢其他有用的答案,我找到了一个简单的解决方案:
/usr/bin/env python-docker
set_fact
任务来重写仅用于localhost的解释器。我们还必须委派facts
我们可以使用魔法ansible_playbook_python
变量,它指的是在(本地)
Ansible主机上用来启动剧本的python解释器:请参见可转换文件
以下是本文开头的重要部分Playbook 2
---
- name: Playbook 2
vars:
- ansible_python_interpreter: "{{ '/usr/bin/env python-docker' }}"
...
tasks:
- set_fact:
ansible_python_interpreter: '{{ ansible_playbook_python }}'
delegate_to: localhost
delegate_facts: true
发布于 2019-08-26 11:23:16
您应该将ansible_python_interpreter
在主机级别上。
因此,可以显式地为清单中的localhost。
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python
我想你也可以用set_fact
打开hostvars[].ansible_python_interpreter
在您的localhost或docker主机上。
有一个关于` `hostvars`‘上的`set_fact`的精彩文章!;-P
发布于 2019-08-26 10:40:46
尝试使用set_fact
对于ansible_python_interpreter
在第一本攻略中的主机级别。
https://stackoverflow.com/questions/57656073
复制相似问题