小技巧-檢查變數型態
使用模組常遇到的情況是不知道傳回來的變數是什麼型態,後續使用就不知道怎麼用。
在這個時候可以怎麼做呢?
在這個時候可以使用 type_debug 這個 filter 來顯示。
- debug:
msg: "{{ item|type_debug }}"
loop:
- "Foo"
- 123
- []
- name: foo
結果會是
TASK [debug] ************************************************************************************
ok: [localhost] => (item=Foo) => {
"msg": "AnsibleUnicode"
}
ok: [localhost] => (item=123) => {
"msg": "int"
}
ok: [localhost] => (item=[]) => {
"msg": "list"
}
ok: [localhost] => (item={'name': 'foo'}) => {
"msg": "dict"
}
額外分享一個技巧,若需要依據變數型態來顯示的話,可以用
- set_fact:
case:
int: "tasks-int"
AnsibleUnicode: "tasks-str"
list: "tasks-list"
dict: "tasks-dict"
default: "tasks-default"
- set_fact:
v: "foo"
- debug:
msg: "{{ case[v|type_debug] }}"