用例:
ansible_python_interpreter=/usr/bin/env python-docker 我们再次连接到同一主机,但现在我们必须使用/usr/bin/env python-dockerpython 解释器
做这个的最好方式是什么?
目前我们设定的ansible_python_interpreter剧本级别为Playbook 2:
---
- name: DaqMon app
vars:
- ansible_python_interpreter: "{{ '/usr/bin/env python-docker' }}"
Run Code Online (Sandbox Code Playgroud)
这是可行的,但这也会改变本地操作的 python 解释器。因此本地操作将会失败,因为 (python-docker本地不存在)。
ansible_python_interpreter每个本地操作,这是乏味且容易出错的问题:
'/usr/bin/env python-docker'后备添加到terpreter-python-fallback - 但我认为这是不可能的感谢其他有用的答案,我找到了一个简单的解决方案:
/usr/bin/env python-dockerset_fact任务来覆盖仅本地主机的解释器
ansible_playbook_python变量,它指的是(本地)Ansible 主机上使用的 python 解释器来启动 playbook:请参阅Ansible 文档以下是开头的重要部分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
Run Code Online (Sandbox Code Playgroud)
ansible_python_interpreter您应该在主机级别设置。
所以是的,可以在清单中显式设置 localhost的解释器。
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
我假设您也可以在本地主机或 docker 主机上使用set_facton 。hostvars[<host>].ansible_python_interpreter
有一篇关于的精彩文章set_facthostvars !;-P
| 归档时间: |
|
| 查看次数: |
15033 次 |
| 最近记录: |