从ansible命令模块结果创建列表

时间:2018-03-29 07:09:24

标签: ansible

我在一个包含多个项目的循环中使用'命令'ansible模块来执行返回JSON结果的命令,我正在注册它,从而创建多个结果。

- name: Create a target groups
  command: >
    aws elbv2 create-target-group --name {{ item.key }} --protocol TCP --port {{ item.value.port }} --vpc-id {{ vpc_facts.vpc.id }}
  register: elbv2_target_groups
  with_dict: "{{ apis }}"

现在我不确定如何将结果映射到特定属性以创建列表。我可以从单个结果中提取此属性:

(elbv2_target_groups.results.0.stdout|from_json).TargetGroups.0.TargetGroupArn

但是如何在多个结果上创建列表,例如:

(elbv2_target_groups.results.stdout|from_json)|map(attribute='TargetGroups.0.TargetGroupArn')|list

'elbv2_target_groups'https://pastebin.com/u64fdesc

的完整输出

1 个答案:

答案 0 :(得分:0)

一步一步地做:

  1. 列出stdout的列表:elbv2_target_groups.results | map(attribute='stdout') ...
  2. from_json过滤器应用于每个元素:... | map('from_json') ...
  3. 提取所需值:... | map(attribute='TargetGroups.0.TargetGroupArn') ...
  4. 转换为列表:... | list
  5. 像这样:elbv2_target_groups.results | map(attribute='stdout') | map('from_json') | map(attribute='TargetGroups.0.TargetGroupArn') | list