amazon web services - Valores de pesquisa aneáveis da estrutura complexa?



amazon-web-services amazon-ec2 (1)

Eu estou trabalhando em um playbook Ansible onde eu uso o ec2_vpc_subnet_facts para registrar fatos sobre sub-redes em um VPC como:

- ec2_vpc_subnet_facts:
    region: "{{ ec2_region }}"
    filters:
      vpc-id: "{{ vpc.vpc.id }}"
  register: vpc_subnet_facts

retornando assim uma estrutura como (atributos irrelevantes removidos):

"vpc_subnet_facts": {
    "changed": false,
    "subnets": [
        {
            ...
            "id": "subnet-0bb50753",
            ...
            "tags": {
                "Name": "mytag1"
            },
            ...
        },
        {
            ...
            "id": "subnet-0bb50754",
            ...
            "tags": {
                "Name": "mytag2"
            },
            ...
        }
    ]
}

Posteriormente no playbook, ao criar as instâncias do EC2, a ideia é procurar um ID de sub-rede com base no valor da tag para o atributo vpc_subnet_id módulos ec2 , ou seja, com mytag1 procurando a subnet-0bb50753 ID de subnet-0bb50753 associada subnet-0bb50753 .

Minha abordagem atual é criar um dicionário tag => subnet-ID usando set_facts partir do resultado ec2_vpc_subnet_facts mas estou interessado em alternativas.

Atenciosamente, Ola


selectattr jinja filter é seu amigo aqui:

- debug: msg="{{ (vpc_subnet_facts.subnets | selectattr('tags.Name','equalto','mytag1') | first).id }}"

O que é feito aqui: crie um subconjunto de elementos a partir de vpc_subnet_facts.subnets que tags.Name=='mytag1' , pegue primeiro elemento, pegue o campo id .