0

Ansible から始めて、ReST API を使用して外部アプリケーションとやり取りしようとしています。

インベントリ ファイル内のすべてのホストを、jinja2 テンプレートを呼び出すロールによって使用される変数ファイルで指定された POD 名と比較しようとしています。

私の在庫ファイルは次のようになります。

    [all]
    'POD-9'
    'POD-10' 

変数ファイル:

    pods:
        params:
        - name: POD-9
        - name: POD-10


    {% for pod in pods.params %}
    {% if '{{ inventory_hostname }}' == '{{ pod.name }}' %} 
    <generate JSON template here>
    {% endif %}
    {% endfor %}

ただし、if ステートメントは有効になりません。変数ファイルのポッド名と同じ inventory_hostname でのみテンプレートを生成したい

現在の JSON ファイルには次の両方が含まれています: { "pod": { "name": "POD-9" } "pod": {
"name": "POD-10" } }

4

2 に答える 2

2

Jinja2 では、二重中括弧が print ステートメントとして使用されます。タグ内の変数にアクセスする場合は、それらを中括弧で囲まないでください

{% for pod in pods.params %}
    {% if inventory_hostname == pod.name %} 
        <generate JSON template here>
    {% endif %}
{% endfor %}
于 2015-12-22T08:13:09.423 に答える
0

問題が見つかりました: {% if pod.name == inventory_hostname %}

于 2015-12-22T08:16:21.710 に答える