Ansible використовує синтаксис YAML у своїх програмах. 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