2016-05-23 13 views
1

リモートホスト上の環境変数を使用する、[安全な]タスクを作成しようとしています。リモートホストから環境変数を読み取る

私はlookup('env', 'SSH_AUTH_SOCK') or ansible_env.SSH_AUTH_SOCK`のいずれかを使用すると考えていましたが、いずれも正しい値を返していません。前者を使用すると、ローカルホスト(リモートホストではない)から値が返されます。私は後者を使用する場合は何も返しません。

マシンにsshをインストールすると、問題なくecho $SSH_AUTH_SOCKを実行できます。

私の理解では、ansible_envはリモートホスト環境変数の適切なアクセスポイントでしたが、そうではないようです。

何か助けていただければ幸いです。

答えて

1

env変数(SSH_AUTH_SOCK)がリモートのenvにない可能性があるため、何も返しません。これを排除する1つの方法は、常に利用可能なもの、たとえばUSERまたはSSH_CLIENTを取得することです。その値を得ることができれば、SSH_AUTH_SOCKがリモートのenvに設定されていないと見なすことができます。

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

あなたがマシンにsshをするときSSH_AUTH_SOCKが設定されている参照の理由は次のようになります。あなたのログインプロファイルまたはbashスクリプトはssh-addが正しく動作するようにUnixソケットでSSH_AUTH_SOCK変数を設定するssh-agentを開始しています。

関連する問題