Amazon web services 如何创建所有可用aws区域的ansible数组?
在ansible playbook中,我希望能够动态地拉取所有可用aws区域的列表,并迭代它们以在任何地方执行相同的aws任务。此信息可通过aws cli命令Amazon web services 如何创建所有可用aws区域的ansible数组?,amazon-web-services,amazon-ec2,ansible,Amazon Web Services,Amazon Ec2,Ansible,在ansible playbook中,我希望能够动态地拉取所有可用aws区域的列表,并迭代它们以在任何地方执行相同的aws任务。此信息可通过aws cli命令aws ec2 descripe regions获得。我正在寻找一个可以生成列表的ansible任务,或者一种将此json转换为列表的方法,该列表可以使用和\u项轻松循环 $ aws ec2 describe-regions { "Regions": [ { "Endpoint": "ec2
aws ec2 descripe regions
获得。我正在寻找一个可以生成列表的ansible任务,或者一种将此json转换为列表的方法,该列表可以使用和\u项轻松循环
$ aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.ap-south-1.amazonaws.com",
"RegionName": "ap-south-1"
},
{
"Endpoint": "ec2.eu-west-2.amazonaws.com",
"RegionName": "eu-west-2"
},
{
"Endpoint": "ec2.eu-west-1.amazonaws.com",
"RegionName": "eu-west-1"
},
{
"Endpoint": "ec2.ap-northeast-2.amazonaws.com",
"RegionName": "ap-northeast-2"
},
{
"Endpoint": "ec2.ap-northeast-1.amazonaws.com",
"RegionName": "ap-northeast-1"
},
{
"Endpoint": "ec2.sa-east-1.amazonaws.com",
"RegionName": "sa-east-1"
},
{
"Endpoint": "ec2.ca-central-1.amazonaws.com",
"RegionName": "ca-central-1"
},
{
"Endpoint": "ec2.ap-southeast-1.amazonaws.com",
"RegionName": "ap-southeast-1"
},
{
"Endpoint": "ec2.ap-southeast-2.amazonaws.com",
"RegionName": "ap-southeast-2"
},
{
"Endpoint": "ec2.eu-central-1.amazonaws.com",
"RegionName": "eu-central-1"
},
{
"Endpoint": "ec2.us-east-1.amazonaws.com",
"RegionName": "us-east-1"
},
{
"Endpoint": "ec2.us-east-2.amazonaws.com",
"RegionName": "us-east-2"
},
{
"Endpoint": "ec2.us-west-1.amazonaws.com",
"RegionName": "us-west-1"
},
{
"Endpoint": "ec2.us-west-2.amazonaws.com",
"RegionName": "us-west-2"
}
]
}
您可以使用命令模块执行该命令并注册输出
然后,变量的输出将具有.stdout属性。输出是一个JSON对象。可以通过jinja过滤器从_json(检查)
关于您可以使用命令模块执行命令并注册输出
然后,变量的输出将具有.stdout属性。输出是一个JSON对象。可以通过jinja过滤器从_json(检查)
关于使用解决方案,我可以使用类似于以下示例的内容转换aws命令输出的json:
---
- hosts: localhost
gather_facts: no
tasks:
- command: "aws ec2 describe-regions"
register: json_out
- set_fact:
region_json: "{{json_out.stdout | from_json}}"
region_list: []
# example of itteration over the converted json
- debug:
msg: "{{item.RegionName}}"
with_items: "{{region_json.Regions|default([], true)|list}}"
# Creates actual list of only region names
- set_fact:
region_list: "{{region_list + [item.RegionName] }}"
with_items: "{{region_json.Regions|default([], true)|list}}"
- debug:
var: region_list
使用解决方案,我可以使用类似于以下示例的内容转换aws命令输出的json:
---
- hosts: localhost
gather_facts: no
tasks:
- command: "aws ec2 describe-regions"
register: json_out
- set_fact:
region_json: "{{json_out.stdout | from_json}}"
region_list: []
# example of itteration over the converted json
- debug:
msg: "{{item.RegionName}}"
with_items: "{{region_json.Regions|default([], true)|list}}"
# Creates actual list of only region names
- set_fact:
region_list: "{{region_list + [item.RegionName] }}"
with_items: "{{region_json.Regions|default([], true)|list}}"
- debug:
var: region_list