Osmc媒体播放器需要一个特定的路径为剧本https://github.com/osmc/osmc/issues/319
environment:
PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"
我想知道我是否可以将其设置为这些机器的库存中的环境变量,而不是将其放在每个剧本中或创建单独的剧本。
常见用法 - 如果在非osmc安装上实现,那么该路径是否可能导致一般* nix机器出现问题?
如果您不能将此设置为库存变量:这是因为它对大多数人没有实施/有用吗?或者因为库存与路径无关 - 例如它在那时没有被调用?
或者更好的方法是将它作为角色中的机器特定变量/任务?那看起来怎么样?
对ansible很新,并且仍然试图了解一些概念。
如上所述,environment
关键字只能在任务或剧本级别使用。
您只需添加以下内容即可使用标准剧本:
---
- name: Environment
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Setup
setup:
gather_subset:
- "!all"
要么
---
- name: Environment
hosts: localhost
connection: local
gather_facts: True
gather_subset:
- "!all"
如果您调试变量:
---
- name: Environment
hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Setup
setup:
gather_subset:
- "!all"
- name: Debug
debug:
var: ansible_env.PATH
你会得到类似的东西:
TASK [Setup] *******************************************************************************************************************************************************
ok: [localhost]
TASK [Debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"ansible_env.PATH": "/Users/imjoseangel/source/venv/ansible/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
}
如果您想将该变量传递给另一个具有不同库存的游戏,该怎么办?
只是做hostvars.localhost.ansible_env.PATH
- name: Environment2
hosts: windows
connection: local
gather_facts: False
tasks:
- name: Debug
debug:
var: hostvars.localhost.ansible_env.PATH
所以
environment:
PATH: "{{ ansible_env.PATH }}:/sbin:/usr/sbin"
仅对定义的库存下的gather_facts或setup模块有效,但您不需要拆分playbooks。