Какой атрибут должен быть проверен для зарегистрированной переменной в двух Ansible, когда условия - PullRequest
1 голос
/ 24 февраля 2020

Как мы проверяем зарегистрированную переменную, если только одно из двух условий оказывается истинным, имея одну и ту же зарегистрированную переменную?

Ниже мой playbook, который выполняет только один из двух модулей оболочки.

- name: Check file
    shell: cat /tmp/front.txt
    register: myresult
  when: Layer == 'front'

- name: Check file
    shell: cat /tmp/back.txt
    register: myresult
  when: Layer == 'back'

- debug:
    msg: data was read from back.txt and print whatever
  when: Layer == 'back' and myresult.rc != 0

- debug:
    msg: data was read from front.txt and print whatever
  when: Layer == 'front' and myresult.rc != 0

Запустите указанную выше книгу воспроизведения как

ansible-playbook test.yml -e Layer="front"

Я получаю сообщение об ошибке, в котором говорится, что myresult не имеет атрибута rc. Каков наилучший способ печати операторов debug one на основе выполненного условия?

Я пробовал myresult is changed, но это тоже не помогает. Можете ли вы предложить.

1 Ответ

1 голос
/ 24 февраля 2020

Используйте ignore_errors: true и измените порядок задач. Попробуйте, как показано ниже.

  - name: Check file
    shell: cat /tmp/front.txt
    register: myresult
    when: Layer == 'front'
  - debug:
     msg: data was read from front.txt and print whatever
    when: not myresult.rc
    ignore_errors: true


  - name: Check file
    shell: cat /tmp/back.txt
    register: myresult
    when: Layer == 'back'
  - debug:
     msg: data was read from back.txt and print whatever
    when: not myresult.rc
    ignore_errors: true
...