ansibl wykorzystuje składni YAML w jej playbooks. YAML ma pewną liczbę sterowników do bloku:
>
jest składany operatora bloku. Oznacza to, że łączy wiele linii razem spacjami. Następującą składnię:
key: >
This text
has multiple
lines
przypisze wartość This text has multiple lines\n
do key
.
Znak |
jest literalnym operatorem blokowym. Jest to prawdopodobnie to, czego oczekujesz od skryptów powłoki wieloliniowej. Następującą składnię:
key: |
This text
has multiple
lines
przypisze wartość This text\nhas multiple\nlines\n
do key
.
Można to wykorzystać do multilinii skryptów powłoki tak:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
Jest jedno zastrzeżenie: ansibl robi jakąś Janky manipulację argumenty do komendy shell
, więc podczas wyżej generalnie będzie działał jako Oczekuje się, co następuje nie będzie:
- shell: |
cat <<EOF
This is a test.
EOF
ansibl rzeczywiście czynią ten tekst z czołowych miejsc, co oznacza powłokę nie znajdzie ciąg EOF
na początku linii. Można uniknąć nieprzydatnych heurystyki ansibl za pomocą parametru cmd
tak:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF
również rozważyć użycie polecenia ansibl „script” i używać zewnętrznego pliku – Jason