Ansible ใช้ไวยากรณ์ YAML ใน Playbooks 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 }}"
มีข้อแม้อย่างหนึ่ง: Ansible ทำการจัดการกับอาร์กิวเมนต์ที่ไม่ดีต่อshell
คำสั่งดังนั้นแม้ว่าโดยทั่วไปจะทำงานตามที่คาดไว้ แต่สิ่งต่อไปนี้จะไม่:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible จะแสดงข้อความนั้นด้วยช่องว่างนำหน้าซึ่งหมายความว่าเชลล์จะไม่พบสตริงEOF
ที่จุดเริ่มต้นของบรรทัด คุณสามารถหลีกเลี่ยงการวิเคราะห์พฤติกรรมที่ไม่เป็นประโยชน์ของ Ansible ได้โดยใช้cmd
พารามิเตอร์ดังนี้:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF