用 String

问题描述

我的 ansible playbook 中有一个名为“inf_list_tmp”的列表,它看起来像:

{
"changed": false,"ansible_facts": {
    "inf_list_tmp": [
        [],[],[
            "[dataLoaderJobTaskExecutor-7] - 02/23/2021 07:23:30 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables"
        ],[
            "[dataLoaderJobTaskExecutor-5] - 02/23/2021 07:23:33 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables"
        ],[
            "[dataLoaderJobTaskExecutor-8] - 02/23/2021 07:40:49 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables"
        ],[
            "[dataLoaderJobTaskExecutor-1] - 02/23/2021 07:41:21 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables "
        ]
    ]
},"_ansible_no_log": false

}

现在我想用字符串 'STARTED JOB' 替换上面列表中的空索引

预期输出:

"inf_list_tmp": [
        [STARTED JOB],[STARTED JOB],[
            "[dataLoaderJobTaskExecutor-1] - 02/23/2021 07:41:21 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables "
        ]
    ]

下面是我的代码,但它没有给我预期的输出:

- set_fact: my_list="{{ item.replace(item,'STARTED JOB') if item|length == 0 else item }}"
  with_items: "{{ inf_list_tmp }}"

有没有办法在 Ansible 剧本中实现这一目标?提前致谢!

解决方法

让我们简化数据,例如

inf_list_tmp: [[],[],[a],[b],[c],[d]]

问:"用字符串'STARTED JOB'替换上面列表中的空索引"

A:下面的任务

    - set_fact:
        inf_list: "{{ inf_list|default([]) + [_item] }}"
      loop: "{{ inf_list_tmp }}"
      vars:
        _item: "{{ (item|length > 0)|ternary(item,'STARTED JOB') }}"

给予

  inf_list:
  - STARTED JOB
  - STARTED JOB
  - - a
  - STARTED JOB
  - - b
  - STARTED JOB
  - - c
  - - d

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...