我在一个包含多个项目的循环中使用'命令'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
的完整输出答案 0 :(得分:0)
一步一步地做:
stdout
的列表:elbv2_target_groups.results | map(attribute='stdout') ...
from_json
过滤器应用于每个元素:... | map('from_json') ...
... | map(attribute='TargetGroups.0.TargetGroupArn') ...
... | list
。像这样:elbv2_target_groups.results | map(attribute='stdout') | map('from_json') | map(attribute='TargetGroups.0.TargetGroupArn') | list
。