কঠোরভাবে বলা হয়েছে আপনাকে নিম্নলিখিত সমস্ত পরীক্ষা করতে হবে: সংজ্ঞায়িত, খালি নয় এবং কোনওটি নয় AND
"সাধারণ" ভেরিয়েবলগুলির জন্য এটি নির্ধারণ করা এবং সেট করা না থাকলে সেট করে একটি পার্থক্য করে। নীচে দেখুন foo
এবং দেখুন bar
। উভয়ই কেবল সংজ্ঞায়িত হয়foo
সেট করা আছে।
অন্যদিকে নিবন্ধিত ভেরিয়েবলগুলি চলমান কমান্ডের ফলাফলের জন্য সেট করা হয় এবং মডিউল থেকে মডিউল পরিবর্তিত হয়। এগুলি বেশিরভাগ জেসন স্ট্রাকচার। আপনার সম্ভবত আগ্রহী সাবলেটমেন্টটি অবশ্যই পরীক্ষা করতে হবে below নীচের উদাহরণটি দেখুন xyz
এবং দেখুন xyz.msg
:
cat > test.yml <<EOF
- hosts: 127.0.0.1
vars:
foo: "" # foo is defined and foo == '' and foo != None
bar: # bar is defined and bar != '' and bar == None
tasks:
- debug:
msg : ""
register: xyz # xyz is defined and xyz != '' and xyz != None
# xyz.msg is defined and xyz.msg == '' and xyz.msg != None
- debug:
msg: "foo is defined and foo == '' and foo != None"
when: foo is defined and foo == '' and foo != None
- debug:
msg: "bar is defined and bar != '' and bar == None"
when: bar is defined and bar != '' and bar == None
- debug:
msg: "xyz is defined and xyz != '' and xyz != None"
when: xyz is defined and xyz != '' and xyz != None
- debug:
msg: "{{ xyz }}"
- debug:
msg: "xyz.msg is defined and xyz.msg == '' and xyz.msg != None"
when: xyz.msg is defined and xyz.msg == '' and xyz.msg != None
- debug:
msg: "{{ xyz.msg }}"
EOF
ansible-playbook -v test.yml
when: deployed_revision is not defined or deployed_revision.stdout is not defined or deployed_revision.stdout == ''