ANSI шаблон цикла Jinja2 "Мне нужна строка, отделенная, но последняя запись без, - PullRequest
0 голосов
/ 30 мая 2018

Я хочу создать динамическую книгу для моей инфраструктуры.

Мне нужна эта строка в моей конфигурации:

wsrep_cluster_address = 'gcomm: //192.168.126.38,192.168.126.39,192.168.126.40 '

мой шаблон выглядит следующим образом:

wsrep_cluster_address =' ​​gcomm: // {% для хоста в группах ['db-server']%} {{hostvars [host] ['ansible_host']}}, {% endfor%} '

на хосте работает и выглядит так:

wsrep_cluster_address = 'gcomm: //172.16.120.45,172.16.120.40,172.16.120.42,'

последняя запятая ломает мне нервы.

Есть ли способ сказать, отвечаяне запятая последнюю запись цикла?

Танки за любую помощь, хорошего дня

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы спасли мой день!Также, если вам нужна строка в конфигурационном файле, например, JSON:

nodelist = ["192.168.126.38","192.168.126.39","192.168.126.40"]

Это ваш ответ для этого:

nodelist={%for host in groups['mygroup']%}"{{hostvars[host].ansible_eth0.ipv4.address}}"{% if not loop.last %},{% endif %}{% endfor %}

Вотесли полный пример:

 - name: Create List of nodes to be added into Cluster
   set_fact: nodelist={%for host in groups['mygroup']%}"{{hostvars[host].ansible_eth0.ipv4.address}}"{% if not loop.last %},{% endif %}{% endfor %}

 - debug: msg=[{{nodelist}}]

 - name: Set Cluster node list in config file
   lineinfile:
         path: "/etc/myfonfig.cfg"
         line: "hosts: [{{ nodelist }}]"

, в результате вы получите следующую строку в файле конфигурации:

hosts: ["192.168.126.38","192.168.126.39","192.168.126.40"]

0 голосов
/ 30 мая 2018

Нашел решение, благодаря моему разработчику.

wsrep_cluster_address = 'gcomm: // {% для хоста в группах [' db-server ']%} {{hostvars [host] ['ansible_host']}} {% if not loop.last%}, {% endif%} {% endfor%} '

...