前言
当网络设备规模较大的时候,要配置下发多台设备如果采用人工配置的话,除了工作量较大以外,还可能增加人为犯错的可能性,如果有一个可以自动批量对网络设备下发的工具,不仅可以提高整理工作效率,还可以降低人为上的配置犯错。
本博文以ansible自动批量下发多台华为设备开通snmp只读权限为用例,讲解ansible批量操作国产设备过程,由于篇幅有限,可能存在不严谨的地方,欢迎指正。
ansible版本: 2.8.1
设备厂商: 华为
网络拓扑图:
下发操作之前需要确保已经适配了ansible使其能够支持国产设备,具体可参考我的另外一篇博客《ansible使用之——国产设备适配》
配置过程
该过程需要用到3个文件,分别为: ansible配置脚本
,下发内容
, 操作设备(inventory)
ansible脚本(devices_config.yml)内容如下:
---
- hosts: devices
vars:
ansible_connection: network_cli
#ansible_ssh_user: huawei
#ansible_ssh_pass: "Josen@12345"
ansible_network_os: vrp2
ansible_become: no
tasks:
- name: read config
vars:
ansible_connection: local
shell: "cat config_content.conf"
register: read_config
- name: hello
cli_command:
command: "{{ item }}"
register: run
loop: "{{ read_config.stdout.split('\n') }}"
- name: debug
debug:
msg: "{{ item }}"
loop: "{{ run.results }}"
下发脚本(config_content.conf)内容如下:
system-view
snmp-agent
snmp-agent sys-info version v2c
snmp-agent community read cipher Josen12345
snmp-agent sys-info contact "hello world"
snmp-agent sys-info location "hihihi hihih"
commit
操作设备(hosts)如下:
[devices]
10.0.1.1
10.0.2.2
10.0.3.3
[devices:vars]
ansible_ssh_user=huawei
ansible_ssh_pass="Josen@12345"
效果展示
控制端执行脚本
ansible-playbook -i hosts devices_config.yml
设备验证: