Могу ли я использовать group_vars / all.yml в сборном модуле community.aws.ec2_vpc_route_table?

#amazon-web-services #ansible

#amazon-веб-сервисы #ansible

Вопрос:

Например, я хочу воспроизвести этот пример ниже.

 # demo_setup.yml
- hosts: localhost
  gather_facts: False
  tasks:
  - name: Set up NAT-protected route table
    community.aws.ec2_vpc_route_table:
      vpc_id: vpc-1245678
      region: us-west-1
      tags:
        Name: Internal
      subnets:
        - 'SMTP Subnet'
        - 'Database Subnet'
        - 'Bastion Subnet'
      routes:
        - dest: 0.0.0.0/0
          instance_id: "{{ nat.instance_id }}"
  

Затем используйте group_vars/all.yml для вызова моих переменных

 # group_vars/all.yml
vpc: vpc-1245678
region: us-west-1
igw: igw-036dde5c85EXAMPLE
subnet_list:
  -  name: 'SMTP Subnet'
  -  name: 'Database Subnet'
  -  name: 'Database Subnet' 
  
 # demo_setup.yml
- hosts: localhost
  gather_facts: False
  tasks:
  - name: Set up NAT-protected route table
    community.aws.ec2_vpc_route_table:
      vpc_id: {{ vpc }}
      region: {{ region }}
      tags:
        Name: Internal
      subnets:
        - "{{ subnet_list }}"
      routes:
        - dest: 0.0.0.0/0
          instance_id: "{{ igw }}"
  

Проблема, с которой я сталкиваюсь, заключается в том, как я могу ввести свой subnet_list и поместить его в модуль community.aws.ec2_vpc_route_table.

Комментарии:

1. => subnets: "{{ subnet_list | map(attribute='name') | list }}" . Ознакомьтесь с фильтрами . Между тем, если вам действительно не нужны эти элементы в качестве словарей, я предлагаю вам следовать ответу от @jellycsc .

Ответ №1:

Вместо того subnet_list , чтобы создавать список словарей, просто сделайте его списком строк. Это упростит вашу жизнь.

 subnet_list:
  -  SMTP Subnet
  -  Database Subnet
  -  Database Subnet2 
  
 # demo_setup.yml
- hosts: localhost
  gather_facts: False
  tasks:
  - name: Set up NAT-protected route table
    community.aws.ec2_vpc_route_table:
      vpc_id: "{{ vpc }}"
      region: "{{ region }}"
      tags:
        Name: Internal
      subnets: "{{ subnet_list }}"
      routes:
        - dest: 0.0.0.0/0
          instance_id: "{{ igw }}"
  

Комментарии:

1. Это было так, плюс "{{ subnet_list }}" в моей игре было не в том месте. Спасибо @jellycsc