从远程主机读取环境变量

时间:2016-05-23 23:54:27

标签: ansible

我试图编写一个利用远程主机上的环境变量的Ansible任务。

基于我曾想过使用lookup('env', 'SSH_AUTH_SOCK') or ansible_env.SSH_AUTH_SOCK`的文档,但两者都没有返回正确的值。如果我使用前者,它将从我的本地主机(而不是远程主机)返回值。如果我使用后者则不返回任何内容。

如果我进入机器,我可以毫无问题地运行echo $SSH_AUTH_SOCK

我的理解是ansible_env是远程主机环境变量的正确访问点,但似乎并非如此。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

env变量(SSH_AUTH_SOCK)可能不在遥控器的env中,因此它什么都不返回。排除这种情况的一种方法是获得始终可用的内容,例如:USERSSH_CLIENT。如果你能得到那个值,那么你可以放心地假设在远程的环境中没有设置SSH_AUTH_SOCK。

  - debug: msg={{ ansible_env.USER }}

当您进入计算机时,您看到SSH_AUTH_SOCK被设置的原因可能是:您的登录配置文件或bash脚本正在启动ssh-agent,它将SSH_AUTH_SOCK变量设置为unix套接字,以便ssh-add正常工作。