2016-09-28 187 views
4

主機是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') }}來獲取這個變量的值?

回答

1

Ansible中的所有查找都是本地的。詳情請參見documentation:發生在本地計算機上

注意 查找,而不是在遠程計算機上。

5

由於查找在本地發生,並且由於每個任務運行在它自己的進程中,所以您需要做一些有點不同的事情。

- 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

存儲所述值