I'm having real trouble adding additional routes to a newly created VPC's default Route Table in a NAT scenario using Ansible and the ec2\_vpc\_route\_table module. The related excerpts from my Playbook are...

**Creating the VPC**

```
- name: Create Production VPC
  ec2_vpc:
    region: "{{ aws.region }}"
    aws_access_key: "{{ aws.access_key }}"
    aws_secret_key: "{{ aws.secret_key }}"
    state: present
    cidr_block: 10.0.0.0/16
    resource_tags: { "Name":"Production" }
    internet_gateway: yes
    dns_hostnames: yes
    dns_support: yes
    subnets: 
      - cidr: 10.0.10.0/24
        resource_tags: { "Name":"A - NAT" }
      - cidr: 10.0.20.0/24
        resource_tags: { "Name":"B - Public" }
      - cidr: 10.0.30.0/24
        resource_tags: { "Name":"C - Private" }
    wait: yes
  register: prod_vpc

```

**Gather facts and append new routes**

```
- name: Gather default Route Table facts
  ec2_vpc_route_table_facts:
    region: "{{ aws.region }}"
    filters:
      vpc-id: "{{ prod_vpc.vpc.id }}"
  register: vpc_default_route

- name: Add NAT routes
  ec2_vpc_route_table:
    aws_access_key: "{{ aws.access_key }}"
    aws_secret_key: "{{ aws.secret_key }}"
    vpc_id: "{{ prod_vpc.vpc.id }}"
    region: "{{ aws.region }}"
    route_table_id: "{{ vpc_default_route.route_tables[0].id }}"
    lookup: id
    tags:
      Name: NAT
    subnets: 
      - '10.0.10.0/24'
    routes:
      - dest: 0.0.0.0/0
        gateway_id: igw

```

So first off, I tried to include the creation of the routes within the `ec2_vpc` task, but that actually ended up creating a second Route Table rather than including the routes in the default table. 

So first off, **why does a second table get created instead of adding the routes to the default?**

Because including it in the vpc creation wasn't working I fell back on the above, which just identifies the default, or `main` Route Table. The problem now is that when I try to use `ec2_vpc_route_table` to add the NAT route, Ansible fails with the following error...

```
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to associate subnets for route table RouteTable:rtb-..., error: EC2ResponseError: 400 Bad Request\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response><Errors><Error><Code>InvalidParameterValue</Code><Message>cannot disassociate the main route table association rtbassoc-...</Message></Error></Errors><RequestID>...</RequestID></Response>"}

```

That error makes it sound like, dispite the fact I'm explicitly providing `route_table_id`, and `lookup: id`, that it's not updating the existing table, but it's basically recreating it, trying to delete the original (which is the `main` route table) in the process.

**How can I append additional routes to an existing `main` route table?**

So far the only workaround I've been able to use is to call the EC2 CLI via the `command: ...` method, but that's obviously not ideal.

We're on `Ansible 2.3.0 (devel 14a2757116)`

Any help would be greatly appreciated!