Заменить пустые индексы списка Ansible на строку

У меня есть список под названием '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-7] - 02/23/2021 07:23:30 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables"
        ],
        [STARTED JOB],
        [
            "[dataLoaderJobTaskExecutor-5] - 02/23/2021 07:23:33 ES30CLIENT21  [EventHelperServiceImpl] INFO: Sending event notification [STARTED JOB] for tenant [ES30CLIENT21] with variables"
        ],
        [STARTED JOB],
        [
            "[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 "
        ]
    ]

Ниже мой код, но он не дает ожидаемого результата:

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

Есть ли способ добиться этого в Ansible playbook? Заранее спасибо!


person Anushah Khawaja    schedule 23.02.2021    source источник


Ответы (1)


Давайте упростим данные, например.

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

В: Замените пустые индексы в приведенном выше списке строкой "НАЧАЛО ЗАДАНИЯ"

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
person Vladimir Botka    schedule 23.02.2021
comment
Благодарю вас! Это сработало отлично для меня. - person Anushah Khawaja; 24.02.2021