Ansible ใช้ไวยากรณ์ YAML ใน Playbooks YAML มีตัวดำเนินการบล็อกจำนวนมาก:
>เป็นผู้ประกอบการพับบล็อก นั่นคือมันรวมหลายบรรทัดเข้าด้วยกันโดยเว้นวรรค ไวยากรณ์ต่อไปนี้:
key: >
This text
has multiple
lines
จะกำหนดค่าการThis text has multiple lines\nkey
|ตัวละครที่เป็นผู้ประกอบการบล็อกตัวอักษร นี่อาจเป็นสิ่งที่คุณต้องการสำหรับเชลล์สคริปต์แบบหลายบรรทัด ไวยากรณ์ต่อไปนี้:
key: |
This text
has multiple
lines
จะกำหนดค่าการThis text\nhas multiple\nlines\nkey
คุณสามารถใช้สิ่งนี้สำหรับสคริปต์เชลล์หลายบรรทัดเช่นนี้:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
มีข้อแม้อย่างหนึ่ง: Ansible ทำการจัดการกับอาร์กิวเมนต์ที่ไม่ดีต่อshellคำสั่งดังนั้นแม้ว่าโดยทั่วไปจะทำงานตามที่คาดไว้ แต่สิ่งต่อไปนี้จะไม่:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible จะแสดงข้อความนั้นด้วยช่องว่างนำหน้าซึ่งหมายความว่าเชลล์จะไม่พบสตริงEOFที่จุดเริ่มต้นของบรรทัด คุณสามารถหลีกเลี่ยงการวิเคราะห์พฤติกรรมที่ไม่เป็นประโยชน์ของ Ansible ได้โดยใช้cmdพารามิเตอร์ดังนี้:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF