循环浏览字典列表并返回另一个表ansible

For*_*est 3 ansible

假设我有以下列表:

myList
- name: Bob
  age: 25
- name: Alice
  age: 18
- name: Bryan
  age: 20
Run Code Online (Sandbox Code Playgroud)

我想要的是遍历myList并获取名称列表并将其设置为变量nameList

nameList
- name: Bob
- name: Alice
- name: Bryan
Run Code Online (Sandbox Code Playgroud)

是否在ansible中有一个简短的语法?

Kon*_*rov 5

如果您需要带有单键的字典列表name(如您的示例中所示),则:

{{ myList | map('json_query','{name:name}') | list }}
Run Code Online (Sandbox Code Playgroud)

结果是:

[
  { "name": "Bob" },
  { "name": "Alice" },
  { "name": "Bryan" }
]
Run Code Online (Sandbox Code Playgroud)

如果您需要简单的名称列表:

{{ myList | map(attribute='name') | list }}
Run Code Online (Sandbox Code Playgroud)

结果是:

[ "Bob", "Alice", "Bryan" ]
Run Code Online (Sandbox Code Playgroud)

  • 对于任何努力测试这一点的人来说,专业提示是:使用调试模块的“msg”参数而不是“var”。例如 `- debug: msg="{{ myList | map(attribute='name') | list }}"`。 (2认同)