Как создать список динамических пар «ключ-значение» в допустимом формате JSON в пользовательских фактах Ansible?

Я пытаюсь создать действительный список ключей/значений JSON, используя «set_fact» в моей доступной книге воспроизведения.

По сути, я хочу, чтобы мой пользовательский факт выглядел так:

{
"containerports": [
    "10502" : "two",
    "11502" : "two",
    "10503" : "five", 
    "11503" : "five", 
], 
"numconnections": "2"
}

Я не могу понять 1. Как создать имена динамических переменных (номера портов в этом примере) и 2. Как добавить эту переменную в мой список «connectorports»

В настоящее время у меня есть это в моем файле фактов:

{
"containerports": [
    "10502 : two", 
    "11502 : two", 
    "10503 : five", 
    "11503 : five", 
], 
}

Я не могу понять, как получить сопоставление ключа JSON: значение, чтобы я мог выполнить выбор в моем файле. Каждый раз, когда я добавляю новый порт, я хочу добавить его в список. Мой файл test.yml выглядит так:

      - name: Adding container ports to facts
    tags:
      - setup
    set_fact:
        containerports: "{{ containerports | default([]) }} + [ '{{ container_port }} {{ ':' }} {{ container_name }}' ]"
        cacheable: true

person hotcheetos    schedule 06.02.2019    source источник


Ответы (1)


Почти :)

containerports: "{{ containerports | default([]) }} + [ { container_port: container_name } ]"

Точно так же, как «[]» расширяется в список, так и «{}» внутри расширяется в словарь.

person clockworknet    schedule 06.02.2019
comment
спасибо! потратил некоторое время, пытаясь понять синтаксис, также спасибо за дополнительное объяснение :) - person hotcheetos; 06.02.2019