diff --git a/changelogs/fragments/ec2_vpc_route_table_replace_route_fix.yaml b/changelogs/fragments/ec2_vpc_route_table_replace_route_fix.yaml new file mode 100644 index 00000000000..143a9e86fb1 --- /dev/null +++ b/changelogs/fragments/ec2_vpc_route_table_replace_route_fix.yaml @@ -0,0 +1,4 @@ +--- +bugfixes: +- ec2_vpc_route_table - check the origin before replacing routes. + Routes with the origin 'EnableVgwRoutePropagation' may not be replaced. diff --git a/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py b/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py index 64657eac08c..1567aef29a7 100644 --- a/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py +++ b/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py @@ -432,8 +432,9 @@ def index_of_matching_route(route_spec, routes_to_match): for i, route in enumerate(routes_to_match): if route_spec_matches_route(route_spec, route): return "exact", i - elif route_spec_matches_route_cidr(route_spec, route): - return "replace", i + elif 'Origin' in route_spec and route_spec['Origin'] != 'EnableVgwRoutePropagation': + if route_spec_matches_route_cidr(route_spec, route): + return "replace", i def ensure_routes(connection=None, module=None, route_table=None, route_specs=None,