Monday, June 5, 2017

Jinja templating trick for use with Salt and OpenStack transport_url

Openstack is moving to using a transport_url instead of discrete rabbitmq servers, username, and password settings.  This makes doing templating with a configuration management like salt, my personal favorite, problematic as you need to interlace sensitive passwords in a string of arbitrary length.  The best I could come up with is this:

{% set rabbit_credential = ['openstack',pillar['openstack_rabbit_pass']]|join(':') %}
{% set rabbit_hosts_list = pillar['rabbit_hosts'].split(',') %}  

...

            transport_url: rabbit://{% for item in rabbit_hosts_list %}{{rabbit_credential}}@{{item}}:5672,{% endfor %}

The secret is that a transport url can end in a comma without causing any problems.

No comments: