Ansible menggunakan sintaks YAML dalam buku pedomannya. YAML memiliki sejumlah operator blok:
Ini >adalah operator blok lipat. Artinya, ini menggabungkan beberapa baris bersama-sama oleh spasi. Sintaks berikut:
key: >
This text
has multiple
lines
Akan menetapkan nilai This text has multiple lines\nuntuk key.
The |karakter adalah operator blok literal. Ini mungkin yang Anda inginkan untuk skrip shell multi-baris. Sintaks berikut:
key: |
This text
has multiple
lines
Akan menetapkan nilai This text\nhas multiple\nlines\nuntuk key.
Anda dapat menggunakan ini untuk skrip shell multiline seperti ini:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
Ada satu peringatan: Ansible melakukan manipulasi argumen yang tersendat-sendat pada shellperintah, jadi meskipun cara di atas umumnya akan berfungsi seperti yang diharapkan, berikut ini tidak akan:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible sebenarnya akan membuat teks itu dengan spasi di depan, yang berarti shell tidak akan pernah menemukan string EOFdi awal baris. Anda dapat menghindari heuristik Ansible yang tidak membantu dengan menggunakan cmdparameter seperti ini:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF