如何从ansible注册变量的stdout中检索值?
我的ansible游戏之一是使用shell模块创建vault令牌。该命令返回一些我希望在下一个游戏中使用的值。 我在vault_输出参数中注册了命令输出。这里我从该变量获取标准输出如何从ansible注册变量的stdout中检索值?,ansible,jinja2,Ansible,Jinja2,我的ansible游戏之一是使用shell模块创建vault令牌。该命令返回一些我希望在下一个游戏中使用的值。 我在vault_输出参数中注册了命令输出。这里我从该变量获取标准输出 "vault_output.stdout": { "auth": { "accessor": "XXXXXXXXXXXXXXXXXXX", "client_token": "abcdefghijkl", "entity_i
"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。有人能帮我得到那个值吗?它可以在下一场比赛中使用
我尝试过使用vault\u output.stdout[num]、vault\u output.stdout\u行、vault\u output.stdout.auth、vault\u output.stdout。['auth']但没有成功
预期结果:
“客户端令牌”:“abcdefghijkl”调试:var=vault\u output.stdout的输出实际上有点误导。变量不包含dict对象Ansible can索引。您需要首先使用来自_json的
过滤器对其进行解析:
- set_fact:
result: "{{ vault_output.stdout | from_json }}"
- debug:
var: result.auth.client_token
终于找到了答案
- set_fact:
result: "{{ (vault_output.stdout | from_json).auth.client_token }}"
- debug:
var: result
结果:9fa7fdd6-c8da-ac8c-b5d8-df18b17eb3f0
请尝试vault\u输出.stdout['auth']['client\u token']
。这不起作用:(vault\u输出.stdout['auth']['client\u token']:”变量没有定义!
我不知道为什么,但是注册一个shell
任务的结果,并没有给我像你一样的json。你有一些特殊的字段,比如auth
,data
,lease\u duration
等等,它们似乎不是来自shell模块。如果你能添加导致这个注册输出的代码,也许会help@MilindDhoke;如果您看到“变量未定义!”则说明您的代码有问题。请仔细检查语法或发布代码。@ilias sp`-name:Generating Vault Auth Token shell:| curl-sSfL--request post--data“{\”password\:\“{ansible\u ssh\u pass}}\”\:{{Vault\u server\u port}/v1/auth/ldap/login/{ansible\u ssh\u user}register:vault\u output`这个解决方案也不走运。我在结果变量中得到了标准输出,但在调用result.auth.client\u令牌时,ansible错误作为未定义的变量输出。结果变量的赋值如下:``ok:[xyz.com]=>{“result”:{u'lease_id':u'',u'warning':无,u'wrap_info':无,u'auth':{u'token_policies':[u'default',u'sec-development'],u'entity_id':u'a31cbee0-aee2-f021-b908-42191dffc8f4',u'lease_-duration':600,u'policies':[u'default',',u'sec-development'],u'client_token':u'eda50b75-529b-ecb9-9180-1beb1ea13f97',u'accessor':u'9191b082-c5f6-55c0-a759-c84be285ffe7',u'renewable':True,u'request_id':u'40f65b3f-cc17-f090-444e-2a9dfab158af',u'data':{},u'renewable':False}}}` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `“未定义变量!”:“ansible.utils.unsafe\u proxy.AnsibleUnsafeText对象”没有属性“client\u token”