Jinja2 шаблонный вопрос - PullRequest
       5

Jinja2 шаблонный вопрос

0 голосов
/ 11 марта 2020

Попытка установить факт в ansible с использованием Jinja2.

Получение следующей ошибки

Ошибка: ошибка шаблона при шаблонной строке: ожидаемый токен ',', got ':'

PFB код

- set_fact:
    lb_lstnr_map: []

- name: "Build listeners map"
  set_fact:
    lb_lstnr_map: >-
      {%- if item == 443 and cert_arn -%}
        {{  lb_lstrn_map.extend({
          'Protocol': 'HTTPS',
          'Port': 443,
          'DefaultActions': [ { 'Type': 'forward', 'TargetGroupName': tg_name } ],
          'SslPolicy': ssl_policy,
          'Certificates': [ { 'CertificateArn': cert_arn } ] })
         }}
        {%- else -%}
        {{  lb_lstrn_map.extend({
          'Protocol': 'TCP' if lb_type = 'network' else 'HTTP',
          'Port': item,
          'DefaultActions': [ {'Type': 'forward', 'TargetGroupName': tg_name } ]
          }
          })
        }}
      {% endif %}
  with_items: lb_listeners

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Брекеты не сбалансированы

        {{  lb_lstrn_map.extend({
          'Protocol': 'TCP' if lb_type = 'network' else 'HTTP',
          'Port': item,
          'DefaultActions': [ {'Type': 'forward', 'TargetGroupName': tg_name } ]
          }
          })
        }}

Правильный синтаксис

        {{  lb_lstrn_map.extend({
          'Protocol': 'TCP' if lb_type = 'network' else 'HTTP',
          'Port': item,
          'DefaultActions': [ {'Type': 'forward', 'TargetGroupName': tg_name } ]
          })
        }}
0 голосов
/ 11 марта 2020

Вы смешали синтаксис для списков и диктов при расширении lb_lstrn_map. А для диктовок вы должны использовать обновление, а не расширение. Это должно быть что-то вроде:

lb_lstrn_map.update({'Protocol': 'HTTPS', 'Port': 443,
                       'DefaultActions': {
                       ['Type': 'forward', 'TargetGroupName': tg_name ]
                       },
                      'SslPolicy': ssl_policy,
                      'Certificates': ['CertificateArn': cert_arn],
                    })
...