主机是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') }}
来获取此变量的值?
答案 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:
注意强> 查找发生在本地计算机上,而不是远程计算机上。