如何使用ansible设置现有的linux环境变量?

Chr*_*s F 3 ansible ansible-2.x

RHEL 6.x 上的 Ansible v2.4.0.0

我看到如何使用 ansible 设置 linux 环境变量,但它涉及设置新的环境变量。如果我尝试设置 PATH 变量,该解决方案对我不起作用。我愿意...

- name: Add /usr/other/bin to PATH dir to use the git binary there
  environment:
#    PATH: /usr/other/bin:{{ ansible_env.PATH }}
    PATH: /usr/other/bin:{{ lookup('env','PATH') }}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两种方法,如上所示,注释掉一种与另一种,并且在两种情况下我都会遇到语法错误。我错过了什么?

Kon*_*rov 8

这是PATH为单个任务扩展变量的正确方法:

- name: Execute task with extended PATH
  shell: echo $PATH
  environment:
    PATH: "/usr/other/bin:{{ ansible_env.PATH }}"
Run Code Online (Sandbox Code Playgroud)

environment本身不是动作,它是修改动作(shell在我的示例中)环境的关键字。

  • 在这里添加这个以防有人遇到同样的问题。确保您的剧本为“gather_facts: true”。如果它设置为 false,则不会设置您的 PATH 变量。 (2认同)