tag使ったほうが100倍簡単だったことに書き終わってから気づいたのですが供養のため
---
- name: hogehoge
hosts: 127.0.0.1
connection: local
sudo: false
tasks:
- name: get autoscaling group name
shell: aws elasticbeanstalk describe-environment-resources --environment-name environmentname \
| python -c "exec(\"import json,sys\\nobj=json.load(sys.stdin)\\nfor group in obj['EnvironmentResources']['AutoScalingGroups']:\\n print group['Name']\")"
register: asg
- name: debug asg
debug: var=asg
- name: get instance ids
shell: aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names {{ asg.stdout }} \
| python -c "exec(\"import json,sys\\nobj=json.load(sys.stdin)\\ndef instanceId(i):\\n return i['InstanceId']\\nprint ' '.join(map(instanceId, obj['AutoScalingGroups'][0]['Instances']))\")"
register: group
- name: debug group
debug: var=group.stdout
- name: get instances
shell: aws ec2 describe-instances --instance-ids {{ group.stdout }} \
| python -c "exec(\"import json,sys\\nobj=json.load(sys.stdin)\\ndef extractInstances(i):\\n return i['Instances']\\ndef publicDnsName(i):\\n print i['PublicDnsName']\\nmap(publicDnsName, sum(map(extractInstances, obj['Reservations']), []))\")"
register: instances
- name: debug instances
debug: var=item
with_items:
- "{{ instances.stdout_lines }}"