[英]How to retrieve a value from stdout of ansible registered variable?
我的一個操作是使用 shell 模塊來創建一個保險庫令牌。該命令返回一些我想在下一個游戲中使用的值。 我在 vault_output 參數中注冊了命令輸出。在這里我從該變量中獲取標准輸出。
"vault_output.stdout": {
"auth": {
"accessor": "XXXXXXXXXXXXXXXXXXX",
"client_token": "abcdefghijkl",
"entity_id": "XXXXXXXXXXXXXXXXXXX",
"lease_duration": 600,
"metadata": {
"username": "vault"
},
"policies": [
"default",
],
"renewable": true,
"token_policies": [
"default",
]
},
"data": {},
"lease_duration": 0,
"lease_id": "",
"renewable": false,
"request_id": "3470a160-3ed5-ceaa-f57b-4f3d74f6a269",
"warnings": null,
"wrap_info": null
}
}
我正在尋找應該是 abcdefghijkl 的 client_token 的價值。 任何人都可以幫助我獲得可以在下一場比賽中使用的價值。
我試過使用 vault_output.stdout[num], vault_output.stdout_lines, vault_output.stdout.auth , vault_output.stdout.['auth'] 但沒有運氣。
預期結果:“client_token”:“abcdefghijkl”
終於找到了這個問題的答案。
- set_fact:
result: "{{ (vault_output.stdout | from_json).auth.client_token }}"
- debug:
var: result
result: 9fa7fdd6-c8da-ac8c-b5d8-df18b17eb3f0
debug: var=vault_output.stdout
的輸出在這里實際上有點誤導。 該變量不包含 Ansible 可以索引的 dict 對象。 您需要首先使用from_json
過濾器解析它:
- set_fact:
result: "{{ vault_output.stdout | from_json }}"
- debug:
var: result.auth.client_token
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.