用例:
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解释器。因此local actions将失败,因为(python-docker
在本地不存在)。
ansible_python_interpreter
问题:
'/usr/bin/env python-docker'
作为后备选项添加到interpreter-python-fallback-但我认为这是不可能的答案 0 :(得分:2)
尝试在第一本书的主机级别上将set_fact
用于ansible_python_interpreter
。
答案 1 :(得分:1)
您应在主机级别上设置ansible_python_interpreter
。
是的,可以为localhost in your inventory显式设置解释器。
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python
我假设您还可以在本地主机或Docker主机上的set_fact
上使用hostvars[<host>].ansible_python_interpreter
。
答案 2 :(得分:0)
由于其他有用的答案,我找到了一个简单的解决方案:
/usr/bin/env python-docker
set_fact
任务来覆盖仅本地主机的解释器
ansible_playbook_python
变量,该变量引用在(本地)Ansible主机上用于启动剧本的python解释器:请参见Ansible docs 这是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
答案 3 :(得分:0)
在全球范围内,使用ansible.cfg的[defaults]部分中的interpreter_python键
interpreter_python = auto_silent
答案 4 :(得分:0)
使用配置文件禁用此警告
cat>> ansible.cfg << EOF
[defaults]
interpreter_python=auto_legacy_silent
EOF