2017-10-10 9 views
0

私は、ターゲットLinuxホストから環境変数を読むことを試みています。ドキュメントごとに以下の作業をすべて試しましたが、結果はありません。可能な - リモートホストからの環境変数を読む

- name: Test1  
    debug: msg="{{ ansible_env.BULK }}" 
    delegate_to: "{{ target_host }}" 

    - name: Test2 
    shell: echo $BULK 
    delegate_to: "{{ target_host }}" 
    register: foo 

    - debug: msg="{{ foo.stdout }}" 

    - name: Test3 
    debug: msg="{{ lookup('env','BULK')}} is an environment variable" 
    delegate_to: "{{ target_host }}" 

環境変数「BULKは」私は脚本を実行していますので、私はその帰国何を負いませんローカルホストに設定されていません。 BULKではなく、常に利用可能な「HOME」を使用すると、結果が返されます。私がtarget_hostにSSHすれば、問題なくecho $BULKを実行できます。

リモートホストから環境変数を取得する方法は?

+0

なぜすべてのタスクで 'delegate_to'を使用しますか? – techraf

+0

@techraf:このyamlファイルには複数のタスクがあります。いくつかのタスクはローカルホストで実行され、targethostではほとんど実行されません。これはテストのためのもので、3つのタスクはすべて同じ操作を実行します。私が環境変数を読むことができるなら、私は他の2つを削除します。 –

答えて

1

私がtarget_hostにSSHを実行した場合、私はecho $BULKを問題なく実行できます。

おそらくBULKがターゲットマシンのシェルの対話型セッションでのみ供給されるrcファイルの1つに設定されているためです。そしてAnabilitiesのgather_factsタスクは、非インタラクティブなタスクで実行されます。

リモートホストから環境変数を取得するにはどうすればよいですか? https://unix.stackexchange.com/a/170499/133107ヒントのため:

は、それは関係なく、セッション型のソースされる場所に BULK変数を設定する行を移動

例えば見る(場所を正確に、ターゲットOSとシェルに依存します)。

関連する問題