ansible 不能直接管理物理网络连接,但可通过模块配置网络接口、路由、防火墙及服务实现自动化管控;支持 netplan、networkmanager、ifcfg 等多种系统配置方式,并提供验证与故障排查手段。

Ansible 本身不直接“管理”物理网络连接(比如网线插拔、交换机端口配置),但它能可靠地配置服务器的网络接口、路由规则、防火墙策略和网络服务,从而实现对服务器网络连接状态的自动化管控。
配置网络接口与 IP 地址
通过 community.general.network_interface 或 ansible.builtin.lineinfile + 系统网络脚本(如 netplan、NetworkManager、ifconfig 脚本),可统一设置静态 IP、子网掩码、网关和 DNS。
- Ubuntu/Debian(Netplan):用 community.general.netplan_config 模块写入 YAML 配置,再执行
netplan apply - RHEL/CentOS(NetworkManager):推荐使用 ansible.posix.network_manager 模块(需安装
python3-networkmanager) - 通用方式:用 ansible.builtin.template 渲染
/etc/sysconfig/network-scripts/ifcfg-eth0或/etc/network/interfaces,再重启网络服务
管理路由与默认网关
确保服务器能正确转发流量,尤其在多网卡或跨网段场景中。
- 添加静态路由:ansible.builtin.command 执行
ip route add 10.20.0.0/16 via 192.168.1.1 dev eth1 - 持久化路由:写入
/etc/sysconfig/static-routes(RHEL)或/etc/network/interfaces的post-up段(Debian) - 验证连通性:在 playbook 中加入 ansible.builtin.ping 或 ansible.builtin.uri 检查目标地址是否可达
控制防火墙与端口访问
网络连接是否生效,常取决于防火墙是否放行对应端口和服务。
- UFW(Ubuntu):community.general.ufw 模块启用/禁用规则,例如允许 SSH、HTTP
- firewalld(RHEL):ansible.posix.firewalld 设置区域、富规则、端口开放
- iptables(通用):用 ansible.builtin.iptables 模块追加链规则,注意保存(
iptables-save > /etc/sysconfig/iptables)
验证与故障排查集成
部署后自动确认网络配置是否按预期生效,避免“看似成功实则不通”。
- 收集网络事实:ansible.builtin.setup 获取
ansible_all_ipv4_addresses、ansible_default_ipv4等变量 - 检查服务监听:community.general.portable 或 ansible.builtin.command 运行
ss -tlnp | grep :22 - 跨网段连通测试:在 playbook 中用 ansible.builtin.shell 执行
timeout 5 ping -c 1 10.10.1.1 && echo ok || echo fail,配合 failed_when 控制流程










