Jinja2 templates
Jump to navigation
Jump to search
The example below show use of Jinja2 to generate Bash script that reads dynamic data from EC2 AWS Metadata. The solution helps setting up JVM params based on instance type as these come with different memory sizes.
################################################################################################### # Ansible group file: server-nodes ################################################################################################### jvm_memory : - tier : 1 list : " m1.small | m1.medium | m1.large | m1.xlarge | t1.micro " xms : 256m xmx : 1024m maxpermsize : 512m - tier : 2 list : " t2.medium | c3.large | c5.large " xms : 2048m xmx : 2048m maxpermsize : 1024m - tier : 3 list : " t2.large | t3.large | c5.xlarge " xms : 2048m xmx : 4096m maxpermsize : 1024m - tier : 4 list : " t2.xlarge | t3.xlarge | c5d.large | c4.2xlarge | c5.2xlarge " xms : 2048m xmx : 8192m maxpermsize : 2048m ################################################################################################### jvm_memory_proxy : '{{ jvm_memory }}' jvm_memory_lb : '{{ jvm_memory }}'
################################################################################################### # Bash template: server_start.sh.j2 ################################################################################################### #!/bin/sh INSTANCE_TYPE=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-type` case $INSTANCE_TYPE in {% if inventory_hostname in groups['server-nodes'] | default([]) %} {% for proxy in jvm_memory_proxy %} {{proxy.list}} ) XMS={{proxy.xms }} XMX={{proxy.xmx }} MAXPERMSIZE={{ proxy.maxpermsize }} ;; {% endfor %} {% elif 'proxy-api-nodes' in group_names and inventory_hostname in groups['proxy-api-nodes'] | default([]) %} {% for proxy in jvm_memory_proxy_api %} {{proxy.list}} ) XMS={{proxy.xms }} XMX={{proxy.xmx }} MAXPERMSIZE={{ proxy.maxpermsize }} ;; {% endfor %} {% elif inventory_hostname in groups['proxy-wkr-nodes'] | default([]) %} {% for proxy in jvm_memory_proxy_wkr %} {{proxy.list}} ) XMS={{proxy.xms }} XMX={{proxy.xmx }} MAXPERMSIZE={{ proxy.maxpermsize }} ;; {% endfor %} {% endif %} * ) XMS={{ jvm_memory_xms }} XMX={{ jvm_memory_xmx }} MAXPERMSIZE={{ jvm_memory_maxpermsize }} ;; esac ###################################################################################################