Как мы проверяем зарегистрированную переменную, если только одно из двух условий оказывается истинным, имея одну и ту же зарегистрированную переменную?
Ниже мой playbook, который выполняет только один из двух модулей оболочки.
- name: Check file
shell: cat /tmp/front.txt
register: myresult
when: Layer == 'front'
- fail:
msg: data was read from front.txt and print whatever
when: myresult.rc != 0
- name: Check file
shell: cat /tmp/back.txt
register: myresult
when: Layer == 'back'
- fail:
msg: data was read from back.txt and print whatever
when: myresult.rc != 0
Запустите вышеприведенный playbook как
ansible-playbook test.yml -e Layer="front"
Я получаю сообщение об ошибке, в котором говорится, что myresult не имеет атрибута r c. Каков наилучший способ распечатать операторы debug one на основе выполненного условия?
Примечание: я sh не могу завершить выполнение воспроизведения, как только условие выполнено, следовательно, я верю ignore_errors
с ошибкой не поможет.
Примечание: Модули оболочки могут быть любой Unix командой.
Я пытался изменить myresult, но это тоже не помогает. Можете ли вы предложить.