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

How to set existing linux environment variables with ansible?

RHEL 上的 Ansible v2.4.0.0 6.x

我看到了 ,但它涉及设置新的环境变量。如果我尝试设置我的 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') }}

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

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

- name: Execute task with extended PATH
  shell: echo $PATH
  environment:
    PATH: "/usr/other/bin:{{ ansible_env.PATH }}"

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

我不知道为什么,但是 解决方案对我不起作用。

经过一些测试后,我将以下 Ansible 部分与 Vagrant(Ubuntu 访客)结合使用。

-name: Creating environment variable via file in /etc/profile.d
 args:
   chdir: /etc/profile.d
 shell: echo "export M2_HOME=/home/vagrant/maven" > env.sh

这也适用于 PATH,方法是将其添加到带有 ${PATH} 的引号中。