web-dev-qa-db-ja.com

リモートホストの環境変数を取得する方法

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

リモートホストの環境変数を取得/変更するにはどうすればよいですか?

私のプレイブック:

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

これは、user1という名前のリモートホストのパスではなく、私のマシンのパスを返します。私は初心者です。助けが必要です。前もって感謝します。

11
mndhr

lookup関数の動作は 明示的に文書化されています

プラグインを使用すると、外部ソースからAnsibleのデータにアクセスできます。これらのプラグインは、Ansibleコントロールマシンで評価されます...

リモート環境変数へのアクセスに関して [〜#〜] faq [〜#〜] があります:

Ansible 1.4は、「ansible_env」変数のファクトを介してリモート環境変数を利用できるようにします。

{{ ansible_env.SOME_VARIABLE }}

リモートファクト(ansible_envなど)は、ファクト収集が有効になっている場合にのみ使用できることに注意してください(これは、ansibleのデフォルトの動作ですが、構成ファイルまたはプレイブックで無効にできます)。

modifyリモートホストの環境が必要な場合は、environmentディレクティブを説明する ドキュメント をもう一度参照してください。

Ansibleを使用すると、「environment」キーワードを使用して環境を簡単に構成できます。次に例を示します。

- hosts: all
  remote_user: root

  tasks:

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

これらは環境変数を設定しますこの特定のタスク用。永続的な変更ではありません。

12
larsks

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

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

2
TriskalJM