Path Ansible-将环境路径设置为库存变量

Path Ansible-将环境路径设置为库存变量,path,ansible-2.x,ansible-inventory,Path,Ansible 2.x,Ansible Inventory,Osmc media player需要为剧本提供特定路径 我想知道我是否可以将其设置为这些机器的库存中的环境变量,而不是将其包含在每个剧本中或创建单独的剧本 常见用法-如果在非osmc安装上实现,该路径是否可能会导致通用*nix机器出现问题 如果无法将其设置为库存变量: 这仅仅是因为它对大多数人都没有实现/有用吗? 或者因为清单与路径没有关系-例如,它在该点没有被调用 或者,将其作为特定于机器的变量/任务在角色中是更好的方式? 那看起来怎么样 ansible是个新手,我仍在尝试了解一些概念。如

Osmc media player需要为剧本提供特定路径

我想知道我是否可以将其设置为这些机器的库存中的环境变量,而不是将其包含在每个剧本中或创建单独的剧本

常见用法-如果在非osmc安装上实现,该路径是否可能会导致通用*nix机器出现问题

如果无法将其设置为库存变量: 这仅仅是因为它对大多数人都没有实现/有用吗? 或者因为清单与路径没有关系-例如,它在该点没有被调用

或者,将其作为特定于机器的变量/任务在角色中是更好的方式? 那看起来怎么样


ansible是个新手,我仍在尝试了解一些概念。

如前所述,
环境
关键字只能在任务或剧本级别使用

只需添加以下内容,即可使用标准剧本:

---
- name: Environment
  hosts: localhost
  connection: local
  gather_facts: False

  tasks:

  - name: Setup
    setup:
      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\u 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"

仅对定义的清单下的“收集事实”或“设置”模块有效,但您不需要拆分剧本。

环境关键字只能在任务或剧本级别使用。你为什么要用不同的剧本?只是功能的默认变量。记住你正在解决一个问题。谢谢你。很高兴了解环境,如果这是答案,请随意更正,我会接受的。“只是功能的默认变量。”请您进一步解释一下好吗?根据角色设置变量?或者将该路径应用于所有机器,因为它通常是正常的?道歉,如果我是愚蠢的,每天学习更多关于这一点,但还没有完全做到。继续浏览旧文档/教程中的内容。
- 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"