#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