Итак, я предполагаю несколько вещей, основанных на содержании и формате вашего вопроса.
- Список, предоставляемый для задачи построения переменной, будет в нужном вам порядке и не нуждается в сортировке.
- Вы всегда будете использовать все из них
- То, что вы делаете это, потому что количество элементов (и их содержимое), подаваемых в задачу set_fact, не будет составлять c
- Количество конечных слешей C отличается в зависимости от если оно само по себе или если оно сопровождается другими частями пути.
Кроме того, поскольку вы устанавливаете факт, вам не нужно сохранять его в регистре, если вам не нужны другие метаданные о создании переменной, отличной от ее вывода.
- name: Build Variable
hosts:
- all
gather_facts: no
vars:
- path_list:
- "C:"
- "temp"
- "temp1"
tasks:
- set_fact:
temp_var: "{{ temp_var|default([]) + [ item + ('//' if my_idx == 0 else '' if my_idx == path_list|length - 1 else '////') ] }}"
loop: "{{ path_list }}"
loop_control:
index_var: my_idx
- set_fact:
folder_check: "{{ folder_check|default([]) + [ item if my_idx|int-1 < 0 else folder_check[my_idx|int-1] + '//' + item if my_idx|int-1 == 0 else folder_check[my_idx|int-1] + item ] }}"
loop: "{{ temp_var }}"
loop_control:
index_var: my_idx
- debug: var=folder_check
Что даст вам следующий вывод:
PLAY [Build Variable] ********************************************************************************************************
TASK [set_fact] **************************************************************************************************************
ok: [host1] => (item=C:) => {"ansible_facts": {"temp_var": ["C://"]}, "changed": false, "item": "C:", "my_idx": 0}
ok: [host1] => (item=temp) => {"ansible_facts": {"temp_var": ["C://", "temp////"]}, "changed": false, "item": "temp", "my_idx": 1}
ok: [host1] => (item=temp1) => {"ansible_facts": {"temp_var": ["C://", "temp////", "temp1"]}, "changed": false, "item": "temp1", "my_idx": 2}
TASK [set_fact] **************************************************************************************************************
ok: [host1] => (item=C://) => {"ansible_facts": {"folder_check": ["C://"]}, "changed": false, "item": "C://", "my_idx": 0}
ok: [host1] => (item=temp////) => {"ansible_facts": {"folder_check": ["C://", "C:////temp////"]}, "changed": false, "item": "temp////", "my_idx": 1}
ok: [host1] => (item=temp1) => {"ansible_facts": {"folder_check": ["C://", "C:////temp////", "C:////temp////temp1"]}, "changed": false, "item": "temp1", "my_idx": 2}
TASK [debug] *****************************************************************************************************************
ok: [host1] => {
"folder_check": [
"C://",
"C:////temp////",
"C:////temp////temp1"
]
}