Ansible, oyun kitaplarında YAML sözdizimini kullanıyor. YAML'nin birkaç blok operatörü vardır:
>
Bir katlama bloğu operatördür. Yani, birden çok satırı boşluklarla birleştirir. Aşağıdaki sözdizimi:
key: >
This text
has multiple
lines
Değeri atamak istiyorum This text has multiple lines\n
için key
.
|
Karakteri değişmez blok operatörüdür. Muhtemelen çok satırlı kabuk komut dosyaları için istediğiniz şey budur. Aşağıdaki sözdizimi:
key: |
This text
has multiple
lines
Değeri atamak istiyorum This text\nhas multiple\nlines\n
için key
.
Bunu, aşağıdaki gibi çok satırlı kabuk komut dosyaları için kullanabilirsiniz:
- name: iterate user groups
shell: |
groupmod -o -g {{ item['guid'] }} {{ item['username'] }}
do_some_stuff_here
and_some_other_stuff
with_items: "{{ users }}"
Bir uyarı var: Ansible, shell
komuta argümanlar üzerinde biraz beceriksizce manipülasyon yapıyor , bu nedenle yukarıdakiler genellikle beklendiği gibi çalışsa da , aşağıdakiler olmayacak:
- shell: |
cat <<EOF
This is a test.
EOF
Ansible aslında bu metni EOF
baştaki boşluklarla çevirecektir, bu da kabuğun dizeyi asla satırın başında bulamayacağı anlamına gelir . Ansible'ın yardımcı olmayan buluşsal yöntemlerinden şu cmd
parametreyi kullanarak kaçınabilirsiniz :
- shell:
cmd: |
cat <<EOF
This is a test.
EOF