This shows what I am trying to do
---
- hosts: localhost
gather_facts: false
vars:
str: "abcdefg"
str_parts: []
tasks:
- name: Break string into list of max 3 character parts
set_fact:
str_parts: "{{ str_parts + [ str[:3] ] }}"
str: "{{ str[3:] }}"
until: str == ""
Running it with -vvv shows the loop code is executed only once. str_parts gains single member "abc", str is changed to "defg" and the log shows "FAILED - RETRYING: Break string into list of max 3 character parts" messages until it times out
Why doesn't the loop, er, loop?
I could solve it by using a command or shell module to insert commas at the break points and then using {{ str | split(",") }} but a pure Ansible solution would be nicer
Edit: the behavior the subject of bug set_fact won't update a fact while looping (breaking change)