Использование regex_replace для удаления символа из ansible playbook - PullRequest
0 голосов
/ 09 мая 2020

Я запускаю playbook в ansible, который принимает stdout_lines вывода модуля оболочки и дает мне следующий формат:

StackNames.stdout_lines:
- "["
- '    "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-119",'
- '    "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-118",'
- '    "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-117"'
- "]"

Я пытаюсь получить список этих значений, которые можно использовать в al oop, чтобы стеки можно было удалить, но сначала мне нужно избавиться от всех кавычек, кавычек dbl и пробелов, чтобы он был правильно отформатирован для модуля cloudformation ansible, чтобы он принимал значение параметра stack_name.

Я попытался установить новую переменную с правильным форматированием, например:

     - set_fact:
         stack_list: "{{ StackNames.stdout_lines | replace('"','') |trim }}"

, но пока мне не повезло.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 09 мая 2020

Из вашего примера, ваша команда оболочки возвращает анализируемый результат json. Просто проанализируйте глобальный вывод (stdout) внутри переменной с помощью фильтра from_json , и все готово:

- set_fact:
    stack_list: "{{ StackNames.stdout | from_json }}"

- name: Make sure the above is working with your specific output
  debug:
    var: item
  loop: "{{ stack_list }}"
...