You are setting test_err to the *string* yes, but ingore_errors is
looking for a boolean expression. Also, you don't need to using the
"{{ }}" syntax in ignore_errors since it is already using jinja2. Try
using the "bool" filter:
- hosts: jump
remote_user: deploy
gather_facts: yes
tasks:
- set_fact: test_err=yes
- debug: var=test_err
ignore_errors: test_err | bool
On Tue, Oct 7, 2014 at 10:51 AM, Yasir Saleem <[email protected]> wrote:
> I am setting test_err to 'yes' via set_fact:
>
> below is playbook details:
>
> ######
> - hosts: jump
> remote_user: deploy
> gather_facts: yes
> tasks:
> - set_fact: test_err=yes
> - debug: var=test_err
> - debug: var=test_err
> ignore_errors: "{{ test_err }}"
>
> ####
>
> output of above playbook:
>
> ######
> PLAY [jump]
> *******************************************************************
>
> GATHERING FACTS
> ***************************************************************
> ok: [qactld1-jump]
>
> TASK: [set_fact test_err=yes]
> *************************************************
> ok: [qactld1-jump]
>
> TASK: [debug var=test_err]
> ****************************************************
> ok: [qactld1-jump] => {
> "test_err": "yes"
> }
>
> TASK: [debug var=test_err]
> ****************************************************
> Traceback (most recent call last):
> File "/usr/local/bin/ansible-playbook", line 309, in <module>
> sys.exit(main(sys.argv[1:]))
> File "/usr/local/bin/ansible-playbook", line 249, in main
> pb.run()
> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
> line 339, in run
> if not self._run_play(play):
> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
> line 695, in _run_play
> if not self._run_task(play, task, False):
> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
> line 468, in _run_task
> task.ignore_errors = utils.check_conditional(cond , play.basedir,
> task.module_vars, fail_on_undefined=C.DEFAULT_UNDEFINED_VAR_BEHAVIOR)
> File "/Library/Python/2.7/site-packages/ansible/utils/__init__.py", line
> 254, in check_conditional
> conditional = template.template(basedir, conditional, inject,
> fail_on_undefined=fail_on_undefined)
> File "/Library/Python/2.7/site-packages/ansible/utils/template.py", line
> 115, in template
> varname = template_from_string(basedir, varname, vars,
> fail_on_undefined)
> File "/Library/Python/2.7/site-packages/ansible/utils/template.py", line
> 357, in template_from_string
> res = jinja2.utils.concat(rf)
> File "<template>", line 8, in root
> File "/Library/Python/2.7/site-packages/jinja2/runtime.py", line 485, in
> _fail_with_undefined_error
> raise self._undefined_exception(hint)
> jinja2.exceptions.UndefinedError: 'test_err' is undefined
>
> ########
>
> Reason we are trying to use ignore_errors via variable is because we are
> using our own module to run 'cucumber' tests in a role, we want to give
> control via variable weather to stop execution upon failures to the role
> user. Because in case tests are run in CI ( via jenkins) we want jenkins
> plugin to compile results, for command line users, ansible console we will
> have control.
>
> I hope this clarifies.
>
> Thanks,
> Yasir.
>
> On Tuesday, October 7, 2014 10:10:11 AM UTC-4, Mark wrote:
>>
>> Hi Yasir,
>>
>> Have you read through:
>> http://docs.ansible.com/playbooks_error_handling.html ?
>>
>> Ignore_errors is taking yes or no, because simply put there isn't any
>> other answer possible to "Do you want me to ignore the errors?" yes/no. You
>> are answering with "Mooo" and the system doesnt speak cowish, yet
>> I'm interested in knowing why do you want to let ignore_errors take a
>> variable?
>>
>> Regards,
>> Mark
>>
>>
>>
>>
>> On Monday, October 6, 2014 7:22:18 PM UTC+2, Yasir Saleem wrote:
>>>
>>> Hi,
>>> I was trying to use ignore_errors to take a variable, but it fails.
>>>
>>> Here is example play for ignore error not working:
>>>
>>> - hosts: jump
>>> remote_user: deploy
>>> gather_facts: yes
>>> tasks:
>>> - set_fact: test_err=yes
>>> - debug: var=test_err
>>> ignore_errors: "{{ test_err }}"
>>>
>>> output was:
>>>
>>> #############
>>> PLAY [jump]
>>> *******************************************************************
>>>
>>> GATHERING FACTS
>>> ***************************************************************
>>> ok: [qa10-jump1]
>>>
>>> TASK: [set_fact test_err=yes]
>>> *************************************************
>>> ok: [qa10-jump1]
>>>
>>> TASK: [debug var=test_err]
>>> ****************************************************
>>> Traceback (most recent call last):
>>> File "/usr/local/bin/ansible-playbook", line 309, in <module>
>>> sys.exit(main(sys.argv[1:]))
>>> File "/usr/local/bin/ansible-playbook", line 249, in main
>>> pb.run()
>>> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
>>> line 339, in run
>>> if not self._run_play(play):
>>> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
>>> line 695, in _run_play
>>> if not self._run_task(play, task, False):
>>> File "/Library/Python/2.7/site-packages/ansible/playbook/__init__.py",
>>> line 468, in _run_task
>>> task.ignore_errors = utils.check_conditional(cond , play.basedir,
>>> task.module_vars, fail_on_undefined=C.DEFAULT_UNDEFINED_VAR_BEHAVIOR)
>>> File "/Library/Python/2.7/site-packages/ansible/utils/__init__.py",
>>> line 254, in check_conditional
>>> conditional = template.template(basedir, conditional, inject,
>>> fail_on_undefined=fail_on_undefined)
>>> File "/Library/Python/2.7/site-packages/ansible/utils/template.py",
>>> line 115, in template
>>> varname = template_from_string(basedir, varname, vars,
>>> fail_on_undefined)
>>> File "/Library/Python/2.7/site-packages/ansible/utils/template.py",
>>> line 357, in template_from_string
>>> res = jinja2.utils.concat(rf)
>>> File "<template>", line 8, in root
>>> File "/Library/Python/2.7/site-packages/jinja2/runtime.py", line 485,
>>> in _fail_with_undefined_error
>>> raise self._undefined_exception(hint)
>>> jinja2.exceptions.UndefinedError: 'test_err' is undefined
>>>
>>> ##################
>>>
>>> When I use a static value, 'yes' it works:
>>>
>>> - hosts: jump
>>> remote_user: deploy
>>> gather_facts: yes
>>> tasks:
>>> - set_fact: test_err=yes
>>> - debug: var=test_err
>>> ignore_errors: yes
>>>
>>> output was:
>>>
>>> ###########
>>> PLAY [jump]
>>> *******************************************************************
>>>
>>> GATHERING FACTS
>>> ***************************************************************
>>> ok: [qa10-jump1]
>>>
>>> TASK: [set_fact test_err=yes]
>>> *************************************************
>>> ok: [qa10-jump1]
>>>
>>> TASK: [debug var=test_err]
>>> ****************************************************
>>> ok: [qa10-jump1] => {
>>> "test_err": "yes"
>>> }
>>>
>>> PLAY RECAP
>>> ********************************************************************
>>> qa10-jump1 : ok=3 changed=0 unreachable=0
>>> failed=0
>>> ######
>>>
>>> Isn't this a bug?
>>>
>>> I am using ansible 1.7.1 release
>>>
>>> Thanks,
>>> Yasir.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/92b3dfa2-5ad9-414e-be28-e1496ac97a60%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CAJQqANfW%3DnZM19jEsGEXMmq5ThBa1aCTojpNHKytbCJdxDXBAw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.