ansible批量自动配置Juniper
一、需求
有几台新上线的Juniper,需要批量配置下syslog,ntp,snmp基础配置
二、拓扑

三、实施步骤
1.读取配置并输出作为初步核查
2.把配置载入网络其中一台网络设备中,并做一个show | compare输出,然后做一个commit check核查,最后退出设备
3.输出一个提醒,要求输入yes 或者no。yes代表继续tasks,进入第4步;no代表退出playbook,终止程序
4.将配置输入到设备,并设定一个10分钟倒回时间
5.commit check 确认配置,停止倒回时间
四、脚本
1. 创建一个变量文件夹junos_config_vars
mkdir junos_config_vars
2.在变量文件夹里创建一个变量文件vsrx_vars.yml
nano junos_config_vars/vsrx_vars.yml
---
vsrx_config:
#系统基本参数配置
- set system syslog host 1.1.1.1 any any
- set system syslog source-address 192.168.62.44
- set system ntp server 192.168.62.254
- set system ntp source-address 192.168.62.44
- set snmp location "Shanghai China"
- set snmp contact "lisl"
- set snmp community public authorization read-only
- set snmp trap-group gingerdoc targets 192.168.62.253
3.编辑inventory文件
nano lisl_hosts
[junos]
junipervsrx02 junos_host=192.168.2.43
junipervsrx01 junos_host=192.168.2.44
4.编辑层次化变量组文件
nano group_vars/junos.yaml
---
ansible_connection: local
ansible_network_os: junos
ansible_user: admin
ansible_ssh_pass: juniper123
5.编辑剧本playbook:config.yml
---
- name: 配置SRX
hosts: junipervsrx01
gather_facts: no
vars_files:
- junos_config_vars/vsrx_vars.yml
roles:
- Juniper.junos tasks:
- name: "配置如下:"
debug:
var: vsrx_config - name: 导入配置进入第一台vSRX,仅作核查之用
juniper_junos_config:
config_mode: 'exclusive'
load: 'set'
lines: "{{vsrx_config}}"
commit: no
check: yes
diff: yes
provider:
host: "{{junos_host}}"
timeout: 120
register: check_result - name: "show | compare输出如下:"
debug:
msg: "{{check_result.diff_lines}}"
when: check_result.diff_lines is defined #第二个play
- name: 配置SRX
hosts: junos
gather_facts: no
vars_files:
- junos_config_vars/vsrx_vars.yml
roles:
- Juniper.junos
vars_prompt:
- name: "confirm_result"
prompt: "请确认上述核查结果,满意输入:yes,不满意输入:no.\n\n请输入"
private: no
tasks: - name: 判断结果
debug:
msg: 谢谢确认,核查完毕,开始批量配置阶段!
when: confirm_result == "yes"
run_once: yes
delegate_to: localhost
- fail:
msg: 谢谢确认,由于您不满意核查结果,playbook即将退出,谢谢!
when: confirm_result != "yes" - name: 导入配置进入vSRX
juniper_junos_config:
config_mode: "exclusive"
load: 'set'
lines: "{{vsrx_config}}"
commit: yes
comment: "Ticket No.12345:configure system parameter"
confirmed: 10
diff: yes
dest_dir: junos_diff/
provider:
host: "{{junos_host}}"
timeout: 120
notify: 配置完毕,开始确认配置 handlers:
- name: 配置完毕,开始确认配置
juniper_junos_config:
commit_empty_changes: yes
comment: "Ticket No. 12345:Confirm the change"
provider:
host: "{{junos_host}}"
timeout: 120
6.运行剧本
ansibel-playbook config.yml
五、脚本参数讲解
1.when: check_result.diff_lines is defined #存在值,就输出show | compare,因为不加when,当遇到重复配置的情况,diff_lines是不存在的,此时ansible会报错,然后中止playbook
2.yes或no #输入yes,代表认可上述配置;输入no,代表上述配置有问题,选择手工中止playbook
3.vars_prompt
prompt #prompt参数类似于python里的input
name #变量名,将用户输入信息赋值给变量名confirm_result
4.fail #失败模块,执行的话,就结束
msg #打印msg内容
5. run_once: yes #仅仅运行一次
6. delegate_to: localhost #任务委派功能,指在本地localhost执行操作
7. notify #通知,当你执行某个task以后,你在task的末尾做一个通知,并附上一个名称或者内容
8. handlers #与tasks平级的功能区,handlers下的name名称与notify的名称相同,则激活handlers,如果有多个task任务同时呼叫一个handler,此handler也只执行一次
ansible批量自动配置Juniper的更多相关文章
- ansible批量自动安装LNMP
- 服务器批量管理软件ansible安装以及配置
1.yum安装(管理主机以及被管理主机都需要安装) yum install epel-release yum install ansible 2.配置管理主机 vim /etc/ansible/hos ...
- [转帖]Ansible批量远程管理Windows主机(部署与配置)
2018-09-12 12:04:42 https://blog.51cto.com/7424593/2174156 一.测试环境介绍 Ansible管理主机: 系统: CentOS6.8 IP ...
- Ansible批量远程管理Windows主机(部署与配置)
一.测试环境介绍 Ansible管理主机: 系统: CentOS6.8 IP Addr: 172.16.10.22 Linux管理服务器需安装pip.pywinrm插件 Windows客户端主机: ...
- ansible批量管理软件部署及剧本
服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_6 ...
- 利用ansible批量部署zabbix-agent
应用环境:Linux运维工作少不了一个好的监控,zabbix就是目前比较好的一款开源监控软件. 监控类型多种多样,如果不介意或者系统支持安装,那么agent方式是首选. 当主机数量较多时,可以利用相关 ...
- Linux中ansible批量管理软件部署及剧本编写
服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29: ...
- Ansible批量在远程主机执行命令
Ansible直接执行远程命令,不用ssh登陆交互执行. 如下: ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u ...
- ansible批量管理服务 上
1 ansible简介 1.1 ansible批量管理服务概述 (1)是基于python语言开发的自动化软件工具(2)是基于SSH远程管理服务实现远程主机批量管理(3)并行管理,部署简单,应用也简单方 ...
随机推荐
- MyBatis从入门到精通:select较深层次的用法
一,简单的情形 需求: 根据用户id获取用户拥有的所有角色,返回的结果为角色集合. 1.接口中增加的方法: List<SysRole> selectRolesByUserId(Long u ...
- Docker实现GPA+Exporter监控告警系统
Docker实现GPA+Exporter监控告警系统 1.搭建grafana,prometheus,blackbox_exporter环境 # docker run -d -p 9090:9090 - ...
- .net持续集成sonarqube篇之sonarqube基本操作(一)
系列目录 Sonarqube Web管理界面虽然设计的简洁大方,也非常直观,但是由于功能繁多,这对快速入手以及快速定位到想要的功能都是一个挑战,在以后的几个小节里我们简要介绍. OwerView(概览 ...
- 图解Redis之数据结构篇——跳跃表
前言 跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.这么说,我们可能很难理解,我们可以先回忆一下链表. 一.复习跳跃表 1.1 什么 ...
- springboot整合elasticsearch(基于es7.2和官方high level client)
前言 最近写的一个个人项目(传送门:全终端云书签)中需要用到全文检索功能,目前 mysql,es 都可以做全文检索,mysql 胜在配置方便很快就能搞定上线(参考这里),不考虑上手难度,es 在全文检 ...
- 关于HTML的引入CSS文件问题
一 html代码引用外部css文件时若css文件在本文件的父目录下的其他目录下,可使用绝对路径.此时路径要写为 “ ../ ”形式,如在tomcat下建立一个test文件,在该文件中建立两个文件 夹 ...
- 【MySQL】ON DUPLICATE KEY UPDATE
之前没用过这个操作,甚至没见过--最近接触到,而且还挺有用. 作用:若 KEY 不重复,则插入记录:否则更新记录. 单条操作: INSERT INTO table(a, b, c) VALUES (1 ...
- 工业物联网网关在线探测之TraceRoute
佰马工业物联网网关BMG500在线探测通常有Ping.DNS.TraceRoute三种技术方式,这三种方式的区别与联系是什么?本文着重介绍工业物联网网关在线探测的工作原理,以图文形式介绍无线网关在线探 ...
- ASP.NET Core Web Api之JWT刷新Token(三)
前言 如题,本节我们进入JWT最后一节内容,JWT本质上就是从身份认证服务器获取访问令牌,继而对于用户后续可访问受保护资源,但是关键问题是:访问令牌的生命周期到底设置成多久呢?见过一些使用JWT的童鞋 ...
- request获取url链接和参数
//Returns the part of this request's URL from the protocol name up to the query string in th ...