Предположим, что пользователь передает параметр Number в мою ansible -игроку как
ansible-playbook /app/test.yml
-e "Number=22235_ReDep_292001105550"
Я хочу, чтобы set_fact "Number_New" был строкой перед первым подчеркиванием "_", то есть 22235 и "Status" «быть всем после первого подчеркивания» _, то есть
Expectation:
Number_New should be "22235"
Status should be "ReDep_292001105550"
Второй сценарий; пользователь может передать -e "Number = 22235". В этом случае я хочу, чтобы set_fact "Number_New" было таким же, как переданное "Number = 22235", в то время как Status должно быть символом% "." передан параметр "Number = 22235_ReDep_292001105550", но происходит сбой при -e "Number = 22235"
tasks:
- name: Populate number and status from user input
set_fact:
Number_New: "{{ Number.split('_')[0] | default(Number) }}"
Status: "{{ Number.split('_')[1] }}_{{ Number.split('_')[2] | default('%') }}"
Ошибка при сбое:
fatal: [localhost]: FAILED! => {
"msg": "The task includes an option with an undefined variable. The error was: list object has no element 1\n\nThe error appears to be in '/app/test.yml': line 32, column 6, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Populate number and status from user input\n ^ here\n"
}