我试图编写一个利用远程主机上的环境变量的Ansible任务。
基于我曾想过使用lookup('env', 'SSH_AUTH_SOCK') or
ansible_env.SSH_AUTH_SOCK`的文档,但两者都没有返回正确的值。如果我使用前者,它将从我的本地主机(而不是远程主机)返回值。如果我使用后者则不返回任何内容。
如果我进入机器,我可以毫无问题地运行echo $SSH_AUTH_SOCK
。
我的理解是ansible_env
是远程主机环境变量的正确访问点,但似乎并非如此。
感谢任何帮助。
答案 0 :(得分:1)
env变量(SSH_AUTH_SOCK)可能不在遥控器的env中,因此它什么都不返回。排除这种情况的一种方法是获得始终可用的内容,例如:USER
或SSH_CLIENT
。如果你能得到那个值,那么你可以放心地假设在远程的环境中没有设置SSH_AUTH_SOCK。
- debug: msg={{ ansible_env.USER }}
当您进入计算机时,您看到SSH_AUTH_SOCK被设置的原因可能是:您的登录配置文件或bash脚本正在启动ssh-agent
,它将SSH_AUTH_SOCK变量设置为unix套接字,以便ssh-add
正常工作。