Добавить / изменить запись таблицы маршрутов aws

Я создал VPC B через Ansible playbook. Теперь я хочу сделать пиринг VPC между VPC B и VPC A. Я могу создать пиринг VPC и активировать пиринговое соединение VPC.

Но я борюсь с тем, как добавить / отредактировать существующую запись таблицы маршрутов для VPC A с новым vpc_peering_id.

2 ответа

Решение

Один из способов обновить таблицу маршрутов с помощью команды AWS CLI replace-route.

Пример: aws ec2 replace-route --route-table-id rtb-d0e3dsb7 --destination-cidr-block 10.101.0.0/16 --vpc-peering-connection-id pcx-0ffa4766

Это обновит vpc_peering_connection_id -pcx-0ffa4766 в качестве шлюза для CIDR 10.101.0.0/16 в существующей таблице маршрутов -rtb-d0e3dsb7.

Теперь я могу использовать эту команду в Ansible play, которая обновит vpc_peering_id в существующей таблице маршрутов VPC A для связи между VPC A и VPC B.

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

Так что в этом случае вы должны использовать ec2_vpc_route_table модуль выпущен в Ansible 2.

Базовый пример может выглядеть примерно так:

- name: private route table
  ec2_vpc_route_table:
    vpc_id: "{{ vpc_a_id }}"
    region: "{{ ec2_region }}"
    tags:
      Name: private
    subnets:
      - "{{ private_subnet_a.id }}"
      - "{{ private_subnet_b.id }}"
      - "{{ private_subnet_c.id }}"
    routes:
      - dest: 0.0.0.0/0
        gateway_id: "{{ nat_instance }}"
      - dest: "{{ vpc_b_cidr }}"
        gateway_id: "{{ vpc_a_to_b_pcx_id }}"
  register: private_route_table

Это создаст таблицу маршрутов, которая связана с 3 частными подсетями и имеет 2 маршрута: один - это пиринг-маршрут VPC к VPC B для диапазона CIDR этого VPC, а другой - маршрут по умолчанию, который будет идти в Интернет через NAT. экземпляр / шлюз.

Спасибо @PrashantB

Я хочу добавить новый маршрут вместо замены текущего, поэтому просто изменил на create-route, также нужно изменить регион до / после для настройки пирингового соединения

aws configure set default.region us-east-1
aws ec2 create-route --route-table-id rtb-09ddaxxxxxxxxxxxx -destination-cidr-block 10.5.5.0/24 --vpc-peering-connection-id pcx-063xxxxxxxxxx8a1a
aws configure set default.region us-east-2

Код внутри Ansible playbook

- name: change region for adding peer connection route to peer route table for peer connection bi-directional
  local_action: command aws configure set default.region us-east-1

- name: add peer connection route to peer route table for peer connection bi-directional
  local_action: command aws ec2 create-route --route-table-id {{ peer_route_table_id_edge_private }} --destination-cidr-block 10.255.251.0/24 --vpc-peering-connection-id {{ peer_id }}
  ignore_errors: yes
  register: peer_route

- debug: var=peer_route

- name: change region for adding peer connection route to peer route table for peer connection bi-directional
  local_action: command aws configure set default.region us-east-2

Код внутри Ansible playbook с результатами цикла

    - name: add peer connection route to peer route table for peer connection bi-directional
      local_action: command aws ec2 create-route --route-table-id {{ item.route_table.id }} --destination-cidr-block {{ vpc_cidr_block }} --vpc-peering-connection-id {{ peer_id_edge }}
      ignore_errors: yes
      loop: "{{ private_rtbs_edge.results }}"
      register: peer_route

    - debug: var=peer_route
Другие вопросы по тегам