gpt4 book ai didi

json - 从ansible中的json中提取数据

转载 作者:行者123 更新时间:2023-12-02 01:25:29 24 4
gpt4 key购买 nike

我有一个在 AWS 中创建一些 IAM 用户的 ansible 剧本。我希望剧本返回每个创建帐户的用户名和访问 key 详细信息。

注册任务的输出非常简单:

  - name: Create IAM users
iam:
iam_type: user
name: "{{ item }}"
state: present
access_key_state: create
with_items:
- "user1"
- "someotheruser"
- "user3"
register: users

我发现使用该输出做一些棘手的事情。其产生的Json如下:(此处略有截断以减少长度)

ok: [localhost] => {
"users": {
"changed": true,
"msg": "All items completed",
"results": [
"user_meta": {
"access_keys": [
{
"access_key_id": "key1",
"access_key_selector": "HMAC",
"create_date": "2016-05-19T08:37:11.007Z",
"secret_access_key": "secretkey1",
"status": "Active",
"user_name": "user1"
}
],
}
},
{
"user_meta": {
"access_keys": [
{
"access_key_id": "key2",
"access_key_selector": "HMAC",
"create_date": "2016-05-19T08:37:13.391Z",
"secret_access_key": "secretkey2",
"status": "Active",
"user_name": "someotheruser"
}
],
}
},
{
"user_meta": {
"access_keys": [
{
"access_key_id": "key3",
"access_key_selector": "HMAC",
"create_date": "2016-05-19T08:37:16.243Z",
"secret_access_key": "secretkey3",
"status": "Active",
"user_name": "user3"
}
],
}
}
]
}
}

我想在剧本完成时整齐地显示它,我最接近得到我所追求的是使用调试如下:

  - debug: var="users.results[0].user_meta.access_keys"
- debug: var="users.results[1].user_meta.access_keys"
- debug: var="users.results[2].user_meta.access_keys"

然而,这感觉很蹩脚。如果我添加用户 4 和 5 会怎样?我希望能够引用整个结果数组,这样无论我向剧本中添加多少用户,它都能正常工作。

有什么办法可以实现吗?

作为旁注,我还尝试使用 from_json,例如

- debug: msg="{{ (users.stdout|from_json).results }}"

但我不知道我是否遇到了 ansible 2.0.1.0 的错误,或者我是否使用错误但我只能得到“类型错误。预期的字符串或缓冲区”

很高兴收到任何想法。

最佳答案

您也可以遍历已注册的变量。

像这样的东西应该可以工作:

 - name      : debug access keys
debug : var="{{ item.user_meta.access_keys }}"
with_items: users.results

关于json - 从ansible中的json中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37318944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com