2016-04-17 15 views
3

ホストの数に基づいてtomcatクラスタを作成しようとしていますが、テンプレートファイルのforループに変数を渡そうとしています。可能性のあるPlaybook- forループの変数を渡す

変数からnum_hostsを制御したいと思います。

テンプレートファイルの抜粋は次のとおりです。

{% for id in range(1,({{ num_hosts }})) %} 
    <Member 
     className="org.apache.catalina.tribes.membership.StaticMember" 
     port="4110" 
     host="${test.server.web.other{{ id }}.fqdn}" 
     domain="delta-static" 
    /> 
{% endfor %} 

は、以下のエラー

fatal: [test-web01.aliceapp.com]: FAILED! => 
{"changed": false, 
"failed": true, 
"invocation": {"module_args": {"dest": "/home/tomcat/apache-tomcat/conf/server.xml", "src": "test/server.j2"}, "module_name": "template"}, 
"msg": "AnsibleError: an unexpected type error occurred. Error was an integer is required"} 

を手に入れた私はそれらのボットどれも機能していない、構文の複数の組み合わせを試してみました。

+0

ここで使用しているプレイブックの部分も含めてください – SztupY

答えて

1

最後できます。

{%の範囲のID(1、(num_hosts | int))

1

rangeパラメータとしてはaccespts整数が使用されますが、jinjaはデフォルトですべてを文字列に変換します。あなたは整数に値を変換するためにJinja2のフィルタに建てintを使用することができます:それは構文を次のように動作させるために

{% for id in range(1,({{ num_hosts | int }})) %} 
関連する問題