簡體   English   中英

如何從 ansible 注冊變量的標准輸出中檢索值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM