リモートホストの環境変数の操作に問題があります。たとえば、{{lookup( 'env'、 'PATH')}}を試行すると、リモートホストではなくゲストマシンのパスが返されます。
リモートホストの環境変数を取得/変更するにはどうすればよいですか?
私のプレイブック:
---
- name : playbook
hosts : webservers
gather_facts: yes
remote_user: user1
vars:
Path: "{{lookup('ansible_env','PATH')}}"
roles :
- task1
- task2
- task3
これは、user1という名前のリモートホストのパスではなく、私のマシンのパスを返します。私は初心者です。助けが必要です。前もって感謝します。
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
これらは環境変数を設定しますこの特定のタスク用。永続的な変更ではありません。
ドキュメントによると ここ 、リモートマシンにはlookup
を使用できません。そのキーワードは、ローカルマシンでのみ機能します。
代わりに、{{ ansible_env.PATH}}
を使用します。