2016-05-23 60 views
1

我正在嘗試編寫一個使用遠程主機上的環境變量的Ansible任務。從遠程主機讀取環境變量

基於我認爲使用的文檔是lookup('env', 'SSH_AUTH_SOCK') or ansible_env.SSH_AUTH_SOCK`,但都沒有返回正確的值。如果我使用前者,它會從我的本地主機(不是遠程主機)返回值。如果我使用後者,則返回任何內容。

如果我進入機器ssh我可以運行echo $SSH_AUTH_SOCK沒有問題。

我的理解是,ansible_env是遠程主機環境變量的正確訪問點,但似乎並非如此。

任何幫助表示讚賞。

回答

1

env變量(SSH_AUTH_SOCK)可能不在遠程的env中,因此它不返回任何內容。排除此問題的一種方法是獲取始終可用的內容,例如:USERSSH_CLIENT。如果你可以得到這個值,那麼你可以安全地假定SSH_AUTH_SOCK沒有在遠程的env中設置。

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

你看,當你ssh到機器可能是SSH_AUTH_SOCK設置的原因是:您的登錄資料或bash腳本開始ssh-agent這使ssh-add作品正確設置SSH_AUTH_SOCK變量與Unix套接字。