Ansible sử dụng cú pháp YAML trong playbooks của nó. YAML có một số toán tử khối:
>
là toán tử khối gấp. Nghĩa là, nó nối nhiều đường với nhau bằng dấu cách. Cú pháp sau:
key: >
This text
has multiple
lines
Chỉ định giá trị This text has multiple lines\n
đến key
.
Ký tự |
là toán tử khối chữ. Đây có lẽ là những gì bạn muốn cho các kịch bản shell nhiều dòng. Cú pháp sau:
key: |
This text
has multiple
lines
sẽ gán giá trị This text\nhas multiple\nlines\n
-key
.
Bạn có thể sử dụng cho các kịch bản shell multiline như thế này:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
Có một caveat: Ansible hiện một số thao tác janky các đối số cho lệnh shell
, vì vậy trong khi ở trên thường sẽ làm việc như dự kiến, những điều sau sẽ không:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible sẽ thực sự hiển thị văn bản đó với không gian hàng đầu, có nghĩa là vỏ sẽ không bao giờ tìm thấy chuỗi EOF
ở đầu dòng. Bạn có thể tránh chẩn đoán vô ích Ansible bằng cách sử dụng tham số cmd
như thế này:
- shell:
cmd: |
cat <<EOF
This is a test.
EOF
Cũng xem xét sử dụng lệnh ansible 'kịch bản' và sử dụng một tập tin bên ngoài – Jason