I am trying to create tomcat cluster based on number of hosts, and I am trying to pass variables to a for loop in template file.
I want to control num_hosts
from variables.
The template file snippet is:
{% 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 %}
Got the below error
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"}
I have tried multiple combination of syntaxes, bot none of them are working.
range
accespts integers as it's parameters, but jinja will be default convert everything to string. You can use the int
built in jinja2 filter to convert values to integer:
{% for id in range(1,( {{ num_hosts | int }} )) %}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With