【问题标题】:Append/Edit aws route table entry追加/编辑 aws 路由表条目
【发布时间】:2016-07-14 05:46:57
【问题描述】:

我通过 Ansible playbook 创建了一个 VPC B。现在我想做 VPC B 和 VPC A 之间的 VPC 对等。我可以创建 VPC 对等并激活 VPC 对等连接。

但我正在努力解决如何使用新的 vpc_peering_id 附加/编辑 VPC A 的现有路由表条目。

【问题讨论】:

  • AWS 在您对等 VPC 时自动添加路由。检查你的路由表。
  • @KarenB 我很确定它没有。这可能是一个疯狂的默认设置,因为您可能只想将一个子网路由到一个子网,而不是将整个 VPC 路由到整个 VPC,那么他们怎么可能知道您想要做什么?
  • @KarenB 不。

标签: amazon-web-services ansible aws-cli routetable


【解决方案1】:

一种通过 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 更新为现有路由表 -rtb-d0e3dsb7 中 CIDR 10.101.0.0/16 的网关。

现在我可以在 Ansible play 中使用这个命令,它会更新 VPC A 现有路由表中的 vpc_peering_id 以在 VPC A 和 VPC B 之间进行通信。

【讨论】:

    【解决方案2】:

    虽然您总是可以使用 Ansible 来解决问题,但如果可能的话,通常最好还是使用模块,因为它应该带来幂等性以及更好地控制流程和输出。

    所以在这种情况下,您应该使用 Ansible 2 中发布的 ec2_vpc_route_table 模块。

    一个基本的例子可能看起来像这样:

    - 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 的该 VPC 的 CIDR 范围,另一个是默认路由,它将进入互联网通过 NAT 实例/网关。

    【讨论】:

      【解决方案3】:

      感谢@PrashantB

      我想添加新路由而不是替换当前路由,所以只是更改为创建路由,还需要在对等连接设置之前/之后更改区域

      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
      

      【讨论】:

        猜你喜欢
        • 2021-08-21
        • 2021-06-15
        • 2021-12-27
        • 2012-01-25
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多