【问题标题】:Rearrange ansible output重新排列ansible输出
【发布时间】:2023-03-20 00:44:01
【问题描述】:

我正在调试一个 var

- debug:
    msg: "{{ result }}"

并获得以下输出。

ok: [localhost] => {
    "msg": [
        {
            "City": "LosAngeles"
        }, 
        {
            "Sate": "California"
        }, 
        {
            "region": "west-coast"
        }
     ]
}

我想去掉上述输出中的所有括号,并希望输出类似这样的内容。

ok: [localhost] => {
    "msg": [
            "City": "LosAngeles"
            "Sate": "California"
            "region": "west-coast"
     ]
}

【问题讨论】:

  • 你好,那你去掉括号的目的是什么
  • 输出真的很大,有时塔中多余的括号会被切断。

标签: python json ansible jinja2


【解决方案1】:

可以使用 Jinja2 格式并拆分行。例如

    - debug:
        msg: "{{ msg.split('\n') }}"
      vars:
        msg: |
          {% for item in result %}
          {% for k,v in item.items() %}
          {{ k }}: {{ v }}
          {% endfor %}
          {% endfor %}

给予

    "msg": [
        "City: LosAngeles", 
        "Sate: California", 
        "region: west-coast", 
        ""
    ]


使用过滤器 to_yaml 可以实现类似的输出。更简单的任务
    - debug:
        msg: "{{ msg.split('\n') }}"
      vars:
        msg: "{{ result|to_yaml }}"

给予

    "msg": [
        "- {City: LosAngeles}", 
        "- {Sate: California}", 
        "- {region: west-coast}", 
        ""
    ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多