Невозможно установить значение по умолчанию для set_fact в Ansible - PullRequest
0 голосов
/ 20 января 2020

Предположим, что пользователь передает параметр 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"
}

1 Ответ

0 голосов
/ 20 января 2020

Задача ниже делает работу

    - set_fact:
        Number_New: "{{ nsplit.0 }}"
        Status: "{{ nsplit.1|default('%') }}"
      vars:
        nsplit: "{{ Number.split('_', 1) }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...