From bea79f19a96d59bbf07d42a37f8de71c3aa626c7 Mon Sep 17 00:00:00 2001 From: Ajith Date: Mon, 16 Mar 2026 11:47:34 +0530 Subject: [PATCH 1/2] Docs: Added routing table example and Fixes #536 --- README.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cc54ae3b..c48ab9ac7 100644 --- a/README.md +++ b/README.md @@ -632,7 +632,21 @@ The IP configuration supports the following options: source IP address for a route. `table` supports both the numeric table and named table. In order to specify the named table, the users have to ensure the named table is properly defined in `/etc/iproute2/rt_tables` or - `/etc/iproute2/rt_tables.d/*.conf`. The optional `type` key supports the values + `/etc/iproute2/rt_tables.d/*.conf`.The network role does not create these routing table entries automatically. + You can use the `ansible.builtin.lineinfile` module in your playbook to + define the named tables before applying the network role: + ```yaml + - name: Ensure custom routing tables are defined + ansible.builtin.lineinfile: + path: /etc/iproute2/rt_tables + regexp: '^{{ item.table_id }}\s' + line: "{{ item.table_id }}\t{{ item.name }}" + loop: + - { table_id: 100, name: mytable1 } + - { table_id: 101, name: mytable2 } + become: true + ``` + The optional `type` key supports the values `blackhole`, `prohibit`, and `unreachable`. See [man 8 ip-route](https://man7.org/linux/man-pages/man8/ip-route.8.html#DESCRIPTION) for their definition. Routes with these types do not support a gateway. If the type @@ -685,6 +699,20 @@ The IP configuration supports the following options: numeric table and named table. In order to specify the named table, the users have to ensure the named table is properly defined in `/etc/iproute2/rt_tables` or `/etc/iproute2/rt_tables.d/*.conf`. + The network role does not create these routing table entries automatically. + You can use the `ansible.builtin.lineinfile` module in your playbook to + define the named tables before applying the network role: + ```yaml + - name: Ensure custom routing tables are defined + ansible.builtin.lineinfile: + path: /etc/iproute2/rt_tables + regexp: '^{{ item.table_id }}\s' + line: "{{ item.table_id }}\t{{ item.name }}" + loop: + - { table_id: 100, name: mytable1 } + - { table_id: 101, name: mytable2 } + become: true + ``` - `to` - The destination address of the packet to match (e.g. `192.168.100.58/24`). - `tos` - @@ -1504,6 +1532,12 @@ In general, to successfully run the play, determine which configuration is active in the first place, and then carefully configure a sequence of steps to change to the new configuration. The actual solution depends strongly on your environment. +Routing rules and named routing tables are not supported when using the +`initscripts` provider. If `network_provider: initscripts` is set, any +`routing_rule` entries and named `table` references in `route` will be +silently ignored. Use `network_provider: nm` (NetworkManager) for routing +rule support. + ### Handling potential problems When something goes wrong while configuring networking remotely, you might need From 4379f067330e81b06889e1952ea99ccc7ddb7866 Mon Sep 17 00:00:00 2001 From: Ajith Date: Sat, 21 Mar 2026 22:05:27 +0530 Subject: [PATCH 2/2] fixed address review feedback --- README.md | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c48ab9ac7..78db8522d 100644 --- a/README.md +++ b/README.md @@ -632,19 +632,18 @@ The IP configuration supports the following options: source IP address for a route. `table` supports both the numeric table and named table. In order to specify the named table, the users have to ensure the named table is properly defined in `/etc/iproute2/rt_tables` or - `/etc/iproute2/rt_tables.d/*.conf`.The network role does not create these routing table entries automatically. + `/etc/iproute2/rt_tables.d/*.conf` .The network role does not create these routing table entries automatically. You can use the `ansible.builtin.lineinfile` module in your playbook to define the named tables before applying the network role: ```yaml - name: Ensure custom routing tables are defined - ansible.builtin.lineinfile: - path: /etc/iproute2/rt_tables - regexp: '^{{ item.table_id }}\s' - line: "{{ item.table_id }}\t{{ item.name }}" - loop: - - { table_id: 100, name: mytable1 } - - { table_id: 101, name: mytable2 } - become: true + ansible.builtin.copy: + dest: /etc/iproute2/rt_tables.d/{{ item.name }}.conf + content: "{{ item.table_id }}\t{{ item.name }}\n" + loop: + - { table_id: 100, name: mytable1 } + - { table_id: 101, name: mytable2 } + become: true ``` The optional `type` key supports the values `blackhole`, `prohibit`, and `unreachable`. @@ -698,20 +697,19 @@ The IP configuration supports the following options: The route table to look up for the `to-table` action. `table` supports both the numeric table and named table. In order to specify the named table, the users have to ensure the named table is properly defined in `/etc/iproute2/rt_tables` - or `/etc/iproute2/rt_tables.d/*.conf`. + or `/etc/iproute2/rt_tables.d/*.conf` . The network role does not create these routing table entries automatically. You can use the `ansible.builtin.lineinfile` module in your playbook to define the named tables before applying the network role: ```yaml - - name: Ensure custom routing tables are defined - ansible.builtin.lineinfile: - path: /etc/iproute2/rt_tables - regexp: '^{{ item.table_id }}\s' - line: "{{ item.table_id }}\t{{ item.name }}" - loop: - - { table_id: 100, name: mytable1 } - - { table_id: 101, name: mytable2 } - become: true + - name: Ensure custom routing tables are defined + ansible.builtin.copy: + dest: /etc/iproute2/rt_tables.d/{{ item.name }}.conf + content: "{{ item.table_id }}\t{{ item.name }}\n" + loop: + - { table_id: 100, name: mytable1 } + - { table_id: 101, name: mytable2 } + become: true ``` - `to` - The destination address of the packet to match (e.g. `192.168.100.58/24`).