如何在 Ansible 自定义事实中创建有效 JSON 中的动态 Key/Value 对列表?

How do I create a list of dynamic Key/Value pairs in valid JSON in Ansible custom facts?

我正在尝试在我的 ansible 剧本中使用 "set_fact" 创建一个有效的 JSON key/values 列表。

基本上我希望我的自定义事实看起来像这样:

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

我想不通 1. 如何创建动态变量名称(本例中的端口号)和 2. 如何将此变量添加到我的列表 "connectorports"

目前我的事实文件中有这个:

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

我不知道如何获得 JSON key:value 映射以便我可以对我的文件执行 select。每次我添加一个新端口时,我都希望能够附加到列表中。我的 test.yml 文件如下所示:

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

差不多:)

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

就像'[]'被扩展成列表一样,里面的'{}'也被扩展成字典。