2017-04-30 5 views
0

forループ内のファイルコンテンツを動的に読み込もうとしています。しかし、すぐに私はファイルパス内にhost変数を使用しようとすると失敗します。ファイルルックアップパスのループ変数へのアクセス

いくつかの背景:

  • groups.docker_hostsに3つのエントリがあります。
  • 読み込みしようとしているすべてのファイルが存在し、読み込み可能です。
  • 各ファイルはxxは、この例のホスト指数例えば

あるfile content xxの含有量が正常に動作します:

template.j2 
    {% for host in groups.docker_hosts %} 
     "{{lookup('file', '{{inventory_dir}}/pki/dev-docker01/test')}}" 
    {% endfor %} 

    result 
    "file content 01" 
    "file content 01" 
    "file content 01" 

この1つは正しく同様

template.j2 
{% for host in groups.docker_hosts %} 
"{{host}}" 
{% endfor %} 

result: 
"dev-docker01" 
"dev-docker02" 
"dev-docker03" 

各ホストをレンダリングしかし、すぐに私がこのエラーを受け取っているファイルパス内にhostを使用しようとすると"msg": "AnsibleUndefinedVariable: 'host' is undefined"

{% for host in groups.mongo_hosts %} 
"{{lookup('file', '{{inventory_dir}}/pki/{{host}}/test')}}" 
{% endfor %} 

グローバル変数のみにアクセスできる新しい分離コンテキストで動作しているようです。どのように実際にそれを作るための任意のアイデアhostは正しく変数を参照してください?

答えて

2

{{host}}の値をホストに渡しています。ホストを変数として使用するだけです。

{% for host in groups['webservers'] %} 
"{{ lookup('file', 'test/' + host + '/foo.txt') }}" 
{% endfor %} 
+0

ありがとうございます! –

+0

多くの感謝!シンプル –

関連する問題