Ansible
不帶引號的 Ansible 變數
要使用從 json 收集的變數,我需要它是原始的,不帶引號:
我有
ok: [device] => { "fact": { "int": "7" }, }
我想
ok: [device] => { "fact": { "int": 7 }, }
問題是引號不是變數的一部分,所以我不能使用
| int
或| replace
刪除引號。有辦法嗎?
Jinja表達式的結果總是一個字元串。你不能得到一個整數。我猜你真正想要的是字典中屬性int的值**fact是一個整數。測試目前值,例如
- debug: var: fact.int - debug: var: fact.int|type_debug
如果屬性int的值是一個字元串,你會得到(刪節)
fact.int: '7' fact.int|type_debug: AnsibleUnicode
您可以將字元串轉換為整數,例如
- set_fact: fact: "{{ fact|combine({'int': _int|int}) }}" vars: _int: "{{ fact.int }}" - debug: var: fact.int - debug: var: fact.int|type_debug
你會得到(刪節)
fact.int: '7' fact.int|type_debug: int
現在,屬性int的值是一個整數。但是,Jinja 表達式的結果
var: fact.int
仍然是一個字元串fact.int: '7'
。筆記