在传统网络运维中,工程师需要逐台登录交换机、路由器进行配置与排错。这种方式不仅效率低下,还容易因手工操作导致配置不一致。随着网络规模的扩大,网络自动化成为必然趋势。 本文将聚焦两种常见工具:Ansible 与 Netmiko,探讨如何实现网络设备的批量配置与管理。
场景 | Ansible 适用 | Netmiko 适用 |
|---|---|---|
大规模批量配置 | ✅ | ⚠️(需自行写循环) |
配置一致性检查 | ✅ | ⚠️ |
临时性脚本/调试 | ⚠️ | ✅ |
与CI/CD集成 | ✅ | ⚠️ |
学习成本 | 中等(YAML/Playbook) | 低(Python脚本) |
目录结构示例:
inventory/
hosts.ini
playbooks/
config.ymlhosts.ini:
[routers]
R1 ansible_host=192.168.1.1 ansible_user=admin ansible_password=123456
R2 ansible_host=192.168.1.2 ansible_user=admin ansible_password=123456config.yml:
- name: 批量配置路由器
hosts: routers
gather_facts: no
tasks:
- name: 下发接口描述
ios_config:
lines:
- description Configured by Ansible
parents: interface GigabitEthernet0/0执行命令:
ansible-playbook -i inventory/hosts.ini playbooks/config.ymlPython 示例:
from netmiko import ConnectHandler
devices = [
{"device_type": "cisco_ios", "ip": "192.168.1.1", "username": "admin", "password": "123456"},
{"device_type": "cisco_ios", "ip": "192.168.1.2", "username": "admin", "password": "123456"},
]
commands = ["interface GigabitEthernet0/0", "description Configured by Netmiko"]
for device in devices:
with ConnectHandler(**device) as conn:
output = conn.send_config_set(commands)
print(f"{device['ip']} 配置结果:\n{output}")网络自动化并非“一刀切”,而是根据场景选择合适的工具。
通过合理结合两者,网络工程师可以大幅提升效率,减少人为错误,实现真正的“自动化运维”。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。