अपनी प्लेबुक में Ansible YAML सिंटैक्स का उपयोग करता है। YAML में कई ब्लॉक ऑपरेटर हैं:
>
एक तह ब्लॉक ऑपरेटर है। यही है, यह रिक्त स्थान द्वारा एक साथ कई लाइनों को जोड़ता है। निम्नलिखित सिंटैक्स:
key: >
This text
has multiple
lines
मूल्य निर्दिष्ट हैं This text has multiple lines\n
करने के लिए key
।
|
चरित्र एक शाब्दिक ब्लॉक ऑपरेटर है। यह संभवतः वही है जो आप बहु-पंक्ति शेल स्क्रिप्ट के लिए चाहते हैं। निम्नलिखित सिंटैक्स:
key: |
This text
has multiple
lines
मूल्य निर्दिष्ट हैं This text\nhas multiple\nlines\n
करने के लिए key
।
आप इस तरह के बहुस्तरीय खोल स्क्रिप्ट के लिए इसका उपयोग कर सकते हैं:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
एक चेतावनी है: उत्तर देने योग्य shell
आदेश के लिए कुछ जानदार हेरफेर करता है , इसलिए जबकि ऊपर आम तौर पर उम्मीद के मुताबिक काम करेगा, निम्नलिखित नहीं होगा:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible वास्तव में उस पाठ को प्रमुख स्थानों के साथ प्रस्तुत करेगा, जिसका अर्थ है कि शेल कभी भी EOF
पंक्ति की शुरुआत में स्ट्रिंग नहीं ढूंढेगा । आप cmd
इस तरह के पैरामीटर का उपयोग करके Ansible के अनपेक्षित उत्तराधिकार से बच सकते हैं :
- shell:
cmd: |
cat <<EOF
This is a test.
EOF