The fail
directive has to be used at the task level.
This means that to get your desired effect, you would have to do something like
---
vars_prompt:
- name: "var1"
prompt: "Please pass variable"
private: no
tasks:
- fail: msg="var1 is not passed or blank"
when: var1 is undefined or ( var1 is defined and storeid == "" )
And you would simply place the rest of your tasks after that declaration. The "ERROR! 'fail' is not a valid attribute for a Play" message is because you're currently declaring it at a nesting level that Ansible is expecting to be a play.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…