diff --git a/ansible/filter_plugins/networks.py b/ansible/filter_plugins/networks.py
index 3c3650e07..6812aa181 100644
--- a/ansible/filter_plugins/networks.py
+++ b/ansible/filter_plugins/networks.py
@@ -178,6 +178,7 @@ def _route_obj(route):
     optional = {
         'gateway',
         'table',
+        'options',
     }
     for option in optional:
         if option in route:
diff --git a/doc/source/configuration/network.rst b/doc/source/configuration/network.rst
index 1a3ec95ea..18e536c11 100644
--- a/doc/source/configuration/network.rst
+++ b/doc/source/configuration/network.rst
@@ -47,10 +47,11 @@ supported:
     Fully Qualified Domain Name (FQDN) used by API services on this network.
 ``routes``
     List of static IP routes. Each item should be a dict containing the
-    item ``cidr``, and optionally ``gateway`` and ``table``. ``cidr`` is the CIDR
-    representation of the route's destination. ``gateway`` is the IP address of
-    the next hop. ``table`` is the name or ID of a routing table to which the
-    route will be added.
+    item ``cidr``, and optionally ``gateway``, ``table`` and ``options``.
+    ``cidr`` is the CIDR representation of the route's destination. ``gateway``
+    is the IP address of the next hop. ``table`` is the name or ID of a routing
+    table to which the route will be added. ``options`` is a list of option
+    strings to add to the route.
 ``rules``
     List of IP routing rules. Each item should be an ``iproute2`` IP routing
     rule.
@@ -139,6 +140,18 @@ To configure a network called ``example`` with a single IP route to the
 
 These routes will be configured on all hosts to which the network is mapped.
 
+If necessary, custom options may be added to the route:
+
+.. code-block:: yaml
+   :caption: ``networks.yml``
+
+   example_routes:
+     - cidr: 10.1.0.0/24
+       gateway: 10.0.0.1
+       options:
+         - onlink
+         - metric 400
+
 Configuring a VLAN
 ------------------
 
diff --git a/releasenotes/notes/custom-route-options-2ed446961262a34a.yaml b/releasenotes/notes/custom-route-options-2ed446961262a34a.yaml
new file mode 100644
index 000000000..4295650ad
--- /dev/null
+++ b/releasenotes/notes/custom-route-options-2ed446961262a34a.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for custom options in static routes. See `story 2007835
+    <https://storyboard.openstack.org/#!/story/2007835>`__ for details.