2017-01-02 3 views
1

Я использую with_items итератор для выполнения команды: brew services stop {{ item }}.Ansible: Использование элемента (with_items) в файле change_when

Чтобы обрабатывать ошибки, я хотел бы использовать changed_when и использовать значение item.

command: brew services stop {{ item }} 
    register: stop_services 
    changed_when: 
    - "'Error: Service `{{ item }}` is not started.' not in stop_services.stderr" 
    with_items: 
    - memcached 
    - kafka 

Если служба не запущена, я получаю следующее сообщение об ошибке

failed: [127.0.0.1] (item=memcached) => {"changed": false, "cmd": ["brew", "services", "stop", "memcached"], "delta": "0:00:00.464519", "end": "2016-12-29 18:02:37.795973", "failed": true, "item": "memcached", "rc": 1, "start": "2016-12-29 18:02:37.331454", "stderr": "Error: Service memcached is not started.", "stdout": "", "stdout_lines": [], "warnings": []}

Но changed_when заявление игнорируется.

Можно ли ввести item в changed_when заявление?

версия анзибль: 2,2

ответ

1

Вы получили неудовлетворительную задачу в первую очередь. Модуль command сообщает об ошибке, если код возврата из команды был отличным от нуля (в вашем случае "rc": 1), и поэтому ваше условие changed_when не принимается во внимание.

Добавьте следующие prevent failing:

failed_when: false 
+0

Вы также можете использовать 'ignore_errors: yes', который расскажет вам, если что-то не удалось, но игнорировать его. –

Смежные вопросы