Unter gewissen Umständen ignoriert ansible Zeilenumbrüche in jina2 (.j2) templates.
Das Problem lässt sich jedoch einfach beheben.
Wenn man bei ansible in einem jinja2 template in der selben Zeile if/else Konstrukte hat,  z.B.:
.my.cnf.j2
| # .my.cnf
[client]
host={% if db_hostname is defined %}{{ db_hostname }}{% else %}localhost{% endif %}
user={% if item.value.mysql_user is defined %}{{ item.value.mysql_user }}{% else %}{{ item.value.user }}{% endif %}
password={% if item.value.mysql_password is defined %}{{ item.value.mysql_password }}{% elif item.value.password is defined %}{{ item.value.password }}{% else %}{% endif %} | 
Werden die nachfolgenden Zeilenumbrüche ignoriert. Aus der obigen Datei würde dann Beispielsweise:
| # .my.cnf host=MYHOSTuser=myuserpassword=secret | 
Dies ist ein bekannter Bug in Ansible und wird auch bei stackoverflow diskutiert.
Die Lösung ist hier, einfach zuoberst im template file die Zeile:
| #jinja2: trim_blocks:False | 
zu setzen und Zeilenumbrüche werden wieder gemacht.
Im Beispiel hier also:
.my.cnf.j2
| #jinja2: trim_blocks:False
# .my.cnf
[client]
host={% if db_hostname is defined %}{{ db_hostname }}{% else %}localhost{% endif %}
user={% if item.value.mysql_user is defined %}{{ item.value.mysql_user }}{% else %}{{ item.value.user }}{% endif %}
password={% if item.value.mysql_password is defined %}{{ item.value.mysql_password }}{% elif item.value.password is defined %}{{ item.value.password }}{% else %}{% endif %} | 
