如何永久设置环境变量?

时间:2016-09-28 14:03:38

标签: ansible

主机是Ubuntu 16.04

我尝试为用户设置环境变量,其中包含:

- hosts: all
  remote_user: user1
  tasks:
  - name: Adding the path in the bashrc files
    lineinfile: dest=/home/user1/.bashrc line='export MY_VAR=TEST' insertafter='EOF' state=present

  - name: Source the bashrc file
    shell: . /home/user1/.bashrc 

  - debug: msg={{lookup('env','MY_VAR')}}

不幸的是它输出:

TASK [debug] *******************************************************************
ok: [xxxxx.xxx] => {
    "msg": ""
}

如何导出变量,以便下次在此机器上运行某些任务时,我可以使用{{ lookup('env', 'MY_VAR') }}来获取此变量的值?

2 个答案:

答案 0 :(得分:7)

因为查找是在本地发生的,并且因为每个任务都在它自己的进程中运行,所以你需要做一些不同的事情。

- hosts: all
  remote_user: user1
  tasks:
  - name: Adding the path in the bashrc files
    lineinfile: dest=/home/user1/.bashrc line='export MY_VAR=TEST' insertafter='EOF' state=present

  - shell: . /home/user1/.bashrc && echo $MY_VAR
    args:
      executable: /bin/bash
    register: myvar

  - debug: var=myvar.stdout

在这个例子中,我正在寻找.bashrc并检查同一命令中的var,并将值存储为register

答案 1 :(得分:1)

Ansible中的所有查找都是本地的。有关详细信息,请参阅documentation

  

注意   查找发生在本地计算机上,而不是远程计算机上。