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

时间:2017-10-25 15:51:46

标签: ansible ansible-2.x

RHEL 6.x上的Ansible v2.4.0.0

我看到How to set linux environment variables with ansible,但它涉及设置新的环境变量。如果我尝试设置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') }}

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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

-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}的引号中。