2016-04-04 36 views
6

リモートホストの環境変数の操作に問題があります。たとえば、{{lookup( 'env'、 'PATH')}}を試すと、これはリモートホストではないゲストマシンのパスを返します。リモートホストの環境変数を取得する方法

リモートホストの環境変数の取得/変更方法は?

私の脚本:のは、私はいくつかの助けが必要ansibleで初心者だUSER1という名前のリモートホストのパスではなく私のマシンのパスを返し

--- 
- name : playbook 
    hosts : webservers 
    gather_facts: yes 
    remote_user: user1 
    vars: 
    Path: "{{lookup('ansible_env','PATH')}}" 
    roles : 
- task1 
- task2 
- task3 

。前もって感謝します。

+0

ルックアップは、{{ansible_env.PATH}}でのみお試しください---------->パス: "{{ansible_env.PATH}}" –

答えて

7

関数の挙動はdocumented explicitlyある:

プラグインは、外部ソースからAnsibleのデータのアクセスを可能にします。これらのプラグインは、

は、リモート環境変数へのアクセスに関する FAQあり... Ansible制御マシン上で評価されます。

Ansibleを1.4も「ansible_envに事実を介したリモート環境変数が利用できるようになります'変数:実際の収集がENAある場合ansible_envのような遠隔事実が(のみ利用可能であることを

{{ ansible_env.SOME_VARIABLE }} 

注意bled(これはデフォルトの動作ですが、設定ファイルやプレーブックで無効にすることができます)。あなたは「環境を使用して環境を構成する

Ansibleはそれが容易になります:あなたはリモートホストの環境を変更にしたい場合は

、あなたは再びenvironmentディレクティブを記述したthe documentationに見えますキーワード。次に例を示します。

- hosts: all 
    remote_user: root 

    tasks: 

    - apt: name=cobbler state=installed 
     environment: 
     http_proxy: http://proxy.example.com:8080 

これらのセットは、この特定のタスクの環境変数。これは永続的な変更ではありません。

+0

私は '{{ansible_env.PATH}}'を使用しようとしましたが、私のローカルマシンの同じPathを私に返します。私はまだemtyを返すような他の変数を取得しようとしました、あるいはローカルマシンで定義されていれば変数の値を返します。 と私は、 'ansible all -m setup'コマンドでリモートホストのすべてのansible_env変数を見つけようとしましたが、リモートホストで定義されているすべての変数を見つけることができません – mndhr

0

ドキュメントhereによると、リモートマシンにlookupを使用することはできません。そのキーワードは、ローカルマシンでのみ機能します。

代わりに、{{ ansible_env.PATH}}を使用します。

lookup
+0

'{{ansible_env.PATH} } 'しかし、私のローカルマシンの同じパスを私に返します。私はまだemtyを返すような他の変数を取得しようとしました、あるいはローカルマシンで定義されていれば変数の値を返します。 – mndhr

関連する問題