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)并行管理,部署简单,应用也简单方 ...
随机推荐
- 关于Markdown编辑器的基本使用规则
@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown ...
- 用了三星Dex,我已经快一个月回家没开过电脑了
其实比较早就知道手机使用显示屏扩展的功能,但是以前的技术可能受性能影响体验还不太好.后来让我期待的是Linux On Dex这个项目知道了手机已经如此强大了,可惜只能是是特定机器,因此在618之际乘着 ...
- SpringBoot | 第三十八章:基于RabbitMQ实现消息延迟队列方案
前言 前段时间在编写通用的消息通知服务时,由于需要实现类似通知失败时,需要延后几分钟再次进行发送,进行多次尝试后,进入定时发送机制.此机制,在原先对接银联支付时,银联的异步通知也是类似的,在第一次通知 ...
- 个人永久性免费-Excel催化剂功能第19波-Excel与Sqlserver零门槛交互-查询篇
对频繁使用Excel的高级应用的尝试用户来说,绕不过的一个问题Excel的性能问题,对于几万条数据还说得过去,上了10万行的数据量,随便一个函数公式的运算都是一个不小的负荷,有些上进一点的用户会往Ac ...
- CUDA编程学习笔记2
第二章 cuda代码写在.cu/.cuh里面 cuda 7.0 / 9.0开始,NVCC就支持c++11 / 14里面绝大部分的语言特性了. Dim3 __host__ __device__ dim3 ...
- Netty(DotNetty)原理解析
一.背景介绍 DotNetty是微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点,并且保留了Netty原来绝大部分的编程接口.让我们在使用时,完全可以依 ...
- 代码中批量执行Oracle SQL语句
今天在写一个工具(winform),作用是批量的INSERT OR UPDATE ORACLE数据库中的一个表. 执行的时候老是报错“[911] ORA-00911: invalid charact ...
- SpringBoot2.1.6 + Shiro1.4.1 + Thymeleaf + Jpa整合练习
首先,添加maven依赖,完整的pom文件如下: <?xml version="1.0" encoding="UTF-8"?> <projec ...
- 《css的总结》
一.span标签:能让某几个文字或者某个词语凸显出来 <p> 今天是11月份的<span>第一天</span>,地铁卡不打折了 </p> 二.字体风格 ...
- 搭建PowerDNS+LAP+NFS+MySQL主从半节点同步实现LAMP架构
实验环境:(共7台机器) PowerDNS: 192.168.99.110 两台LAP: 192.168.99.120 和 192.168.99.130 NFS服务器:192.168.99.14 ...