LINUX.ORG.RU
решено ФорумAdmin

with_items не понимает массив

 


0

3
- name: Starting services
  command: /usr/sbin/service {{ service_item }} start
  ignore_errors: yes
  with_items: "{{ services.split(' ') }}"
  loop_control:
    loop_var: service_item
  when: service_item | trim | length > 0

вот этот цикл выполняется ровно один раз и service_item при этом равно следующему:

"[u'fail2ban', u'newsyslog']"

то есть это массив сериализированный в строку и есть. там нет никаких левых пробелов и ничего подобного, но with_items не понимает, что ему двли массив, а не строку.

что тут не так?

PS все это происходит на втором уровне инклюда и цикла, может поэтому. ансибл 2.2.

★★★★

А зачем здесь loop_control? Вот такой вариант разве делает не то, что вы хотите получить?

- name: Starting services
  command: /usr/sbin/service {{ item }} start
  ignore_errors: yes
  with_items: "{{ services.split() }}"
  when: item | length > 0 # А эта проверка зачем?
alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от alozovskoy

это только кусок. на самом деле сам этот файл инклюдится в цикле со своим with_items, так что item уже занята

проверку добавил на тот случай если в строке с именами сервисов будет много пробелов между элементами, а не один

moot ★★★★
() автор топика

ансибл обновился до 2.2.1 и все просто заработало

стало быть, это был баг

moot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.