TXT записей. Бывает, что надо за один раз добавить несколько TXT записей для одного домена. Для выполнения этой операции PowerDNS имеет метод REPLACE (удаляет существующую запись, если она существует, и добавляют новую). Метода, который бы просто добавлял запись к уже существующим нет. Тело запроса оформлено при помощи Jinja2 шаблона.
Учитывая специфику работы метода REPLACE, я пытаюсь в одном запросе указать несколько записей сразу. PowerDNS такое позволяет, но есть проблема в оформлении и обработке Jinja2 шаблона. При помощи цикла я перебираю ключи в словаре, и для каждого ключа я извлекаю переменную, которую хочу подставить в блок метода REPLACE, чтобы в итоге получить запрос, содержащий несколько TXT записей. В предоставленном шаблоне всё работает, метод обрабатывается штатно, за исключением вывода переменной для ключа. Получается, что надо поставить "переменную в переменную". Как такое провернуть?
В переменную record, в поле content надо добавить значение i[1]['dns-01'].resource_value
{ "rrsets":
[
{
"name": "{{ sample_com_challenge.challenge_data[item]['dns-01'].record }}.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records": [
{% set record = [] %}
{% for i in sample_com_challenge.challenge_data.items() %}
{{ record.append( {
"content": '{{ i[1]['dns-01'].resource_value }}',
"disabled": false,
"set-ptr": false
} ) }}
{% endfor %}
{{ record | join(", ") }}
]
}
]
}
На выходе я получаю:
{ "rrsets":
[
{
"name": "example.com.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records":
[
{
"content": "i[1]['dns-01'].resource_value",
"disabled": false,
"set-ptr": false
},
{
"content": "i[1]['dns-01'].resource_value",
"disabled": false,
"set-ptr": false
}
]
}
]
}
Что хочу получить:
{ "rrsets":
[
{
"name": "example.com.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records":
[
{
"content": "TXT RECORD 1",
"disabled": false,
"set-ptr": false
},
{
"content": "TXT RECORD 2",
"disabled": false,
"set-ptr": false
}
]
}
]
}
Отвечаю на свой же запрос. Вот такая конструкция правильно отрабатывает: { "rrsets": [ { "name": "{{ sample_com_challenge.challenge_data[item]['dns-01'].record }}.", "type": "TXT", "ttl": 120, "changetype": "REPLACE", "records": [ {% set record = [] %} {% for i in sample_com_challenge.challenge_data.items() %} {{ record.append( { "content": "\""+i[1]['dns-01'].resource_value+"\"", "disabled": false, "set-ptr": false } ) }} {% endfor %} {{ record | join(", ") }} ] } ] }
Обсуждают сегодня