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\n
untuk 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\n
untuk 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 shell
perintah, 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 EOF
di awal baris. Anda dapat menghindari heuristik Ansible yang tidak membantu dengan menggunakan cmd
parameter seperti ini:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF