我找不到添加 ip 路由的 ansible 模块。
基本上我正在寻找的命令应该允许类似的命令:
sudo ip route add 12.3.4.0/24 via 123.456.78.90
我发现 net_static_route_module 似乎相关,但自 2022 年 6 月 1 日起已弃用。
一个简单的解决方案是:
- name: Add a route
ansible.builtin.shell:
cmd: sudo ip route add 12.3.4.0/24 via 123.456.78.90
当然,但内置模块通常更好。
其他信息
此任务将在所有节点的子集上执行(ubuntu 22.04 机器都是使用 openstack 的云集群的一部分)(由组指定)。具体子网和 IP 将使用变量定义。
示例主机文件可能如下所示:
master:
hosts:
localhost:
ansible_connection: local
ansible_python_interpreter: /usr/bin/python3
ansible_user: ubuntu
ip: localhost
workers:
children:
ephemeral:
hosts: {}
hosts:
someworker:
ansible_connection: ssh
ansible_python_interpreter: /usr/bin/python3
ansible_user: ubuntu
此剧本将用于设置 wireguard。每个VPN节点(这些节点将通过wireguard相互连接)都在其自己的子网中与多个工作节点连接。这些工作人员需要添加 ip 路由才能返回到位于不同子网中的主节点,但位于由wireguard 和 vpn 节点创建的同一虚拟子网中)。我认为这与我的问题无关,但我可能会忽略这如何影响正确的答案。
由于投反对票,答案计划删除...
从您的描述中,我了解到您喜欢在基于 Linux 的操作系统(Debian/GNU Linux、Ubuntu 22.04)上配置网络路由设置,而不是在专用路由器或交换机上。
net_static_route
用于提供
...网络设备(路由器、交换机等)上静态 IP 路由的声明式管理。
并已被弃用
删除于: 2022-06-01 之后的主要版本
原因:发布了具有更多功能的更新模块
替代方案:使用特定于平台的模块[netos]_static_route
它进一步建议使用供应商和平台特定的模块。
某些 Linux 发行版倾向于集成和使用 NetworkManager 来创建和管理网络连接。
文档
nmcli
模块 – 管理网络。您可以查看参数和示例,尤其是route*
的参数。
进一步阅读
有关更多示例,请查看