ansible之数据提取与Juniper实例演示
一、Ansible列表两种表达方式
基于YAML的列表
my_list:
- a
- b
- c
- d
基于Json格式的列表
{"my_list":[
"a",
"b",
"c",
]
}
二、Ansible列表数据的提取方式
正向列表索引取值
每个列表里的元素,都存在位置,即索引号,可根据列表变量名[索引号]提取,如:my_list[2],取第3个元素,索引号从0开始
反向列表索引取值
每个列表里的元素,都存在位置,即索引号,反向取值可根据列表变量名[-索引号]提取,如:my_list[-2],取倒数第2个元素,反向索引号从-1开始,即代表最后一个元素
正反向切片取值
根据my_list[索引1:索引2],可取到索引1到索引2范围的元素,索引1不填则表示从索引0开始;索引2不填则默认取到最后一个元素
如:my_list=['a','b','c','d','e']
my_list[2:3] #结果:['c','d'],从第3个元素开始,到第4个元素结尾,不包含第4个元素
my_list[:2] #结果:['a','b','c'],从第1个元素开始,到第3个元素,不包含第3个元素
my_list[2:] #结果:['c','d','e'],从第3个元素开始,到最后一个元素,包含最后一个元素
my_list[2:-1] #结果:['c','d','e'],从第3个元素开始,到最后一个元素,不包含最后一个元素
三、Ansible字符串数据提取方式
字符串提取方法与上面列表一样
四、playbook两种方法输出dict字典内容
基于Jinja2格式输出
my_dict.key, 如my_dict={"a":'a1',"b":"b1"}
my_dict.a #输出a1值
基于Python格式输出
my_dict[key], 如my_dict={"a":'a1',"b":"b1"}
my_dict["a"] #输出值a1
五、案例
5.1 Juniper收集设备信息以及数据处理
2.ansible主控端:nano group_vars/junos.yaml
---
ansible_connection: local
ansible_network_os: junos
ansible_user: admin
ansible_ssh_pass: juniper123
3.ansible主控端:nano test_host文件
[junos]
junipervsrx junos_host=192.168.xx.xx
4.ansible主控端: nano 3_8_3_filter_junos_facts.yaml剧本
--- - name: get junos facts
hosts: junipervsrx
gather_facts: no
roles:
- Juniper.junos tasks: - name: get junos facts
juniper_junos_facts:
host: "{{junos_host}}"
register: facts_result - name: debug output
debug:
msg: "hostname:{{ facts_result.ansible_facts.junos.hostname }},
model:{{ facts_result.ansible_facts.junos.model }},
sn:{{ facts_result.ansible_facts.junos.serialnumber }},
version:{{ facts_result.ansible_facts.junos.version }}"
结果:

- name: debug output
debug:
msg:
- "hostname:{{ facts_result.ansible_facts.junos.hostname }}"
- "model:{{ facts_result.ansible_facts.junos.model }}"
- "sn:{{ facts_result.ansible_facts.junos.serialnumber }}"
- "version:{{ facts_result.ansible_facts.junos.version }}"
优化msg以列表形式输出
结果2:

5.2 Juniper路由表信息收集
juniper初始化配置:
1.root%界面下输入cli
2.root>界面下输入configure,进入配置模式
3.root#界面下输入如下配置
delete system autoinstallation
set system host-name test-SRX
set system root-authentication plain-text-password回车 #设置root密码
输入密码juniper123
set system login user admin class super-user #新增用户admin,并具有所有权限
set system login user admin authentication plain-text-password
输入密码juniper123
set system services ssh root-login allow #开启ssh服务
set system services netconf ssh port 830 #开启netconf服务承载在ssh,端口830
set interfaces fxp0 unit 0 family inet address 192.168.3.20/24 #配置带外管理口fxp0地址
commit #提交变更
1.Juniper初始化配置
2.ansible主控端:nano group_vars/junos.yaml
---
ansible_connection: local
ansible_network_os: junos
ansible_user: admin
ansible_ssh_pass: juniper123
3.ansible主控端:nano test_host文件
[junos]
junipervsrx junos_host=192.168.xx.xx
4.ansible主控端: nano 3_8_3_filter_junos_facts.yaml剧本
---
- name: get junos routing table
hosts: junos
gather_facts: no
roles:
- Juniper.junos tasks:
- name: get junos routes
juniper_junos_command:
commands:
- "show route table inet.0"
host: "{{junos_host}}"
register: route_result - name: debug output
debug:
msg: "The subnet is {{route_result.stdout_lines[5][0:15]}},
and the host route is: {{route_result.stdout_lines[7][0:16]}}"
ansible之数据提取与Juniper实例演示的更多相关文章
- PHP实例 表单数据插入数据库及数据提取 用户注册验证
网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功 ...
- ASP.NET Core 6框架揭秘实例演示[19]:数据加解密与哈希
数据保护(Data Protection)框架旨在解决数据在传输与持久化存储过程中的一致性(Integrity)和机密性(confidentiality)问题,前者用于检验接收到的数据是否经过篡改,后 ...
- ASP.NET Core 6框架揭秘实例演示[01]: 编程初体验
作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...
- ASP.NET Core 6框架揭秘实例演示[07]:文件系统
ASP.NET Core应用具有很多读取文件的场景,如读取配置文件.静态Web资源文件(如CSS.JavaScript和图片文件等).MVC应用的视图文件,以及直接编译到程序集中的内嵌资源文件.这些文 ...
- ASP.NET Core 6框架揭秘实例演示[08]:配置的基本编程模式
.NET的配置支持多样化的数据源,我们可以采用内存的变量.环境变量.命令行参数.以及各种格式的配置文件作为配置的数据来源.在对配置系统进行系统介绍之前,我们通过几个简单的实例演示一下如何将具有不同来源 ...
- ASP.NET Core 6框架揭秘实例演示[09]:配置绑定
我们倾向于将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定.除了将配置树叶子节点配置节的绑定为某种标量对象外,我们还可以直接将一个配置 ...
- ASP.NET Core 6框架揭秘实例演示[10]:Options基本编程模式
依赖注入使我们可以将依赖的功能定义成服务,最终以一种松耦合的形式注入消费该功能的组件或者服务中.除了可以采用依赖注入的形式消费承载某种功能的服务,还可以采用相同的方式消费承载配置数据的Options对 ...
- ASP.NET Core 6框架揭秘实例演示[11]:诊断跟踪的几种基本编程方式
在整个软件开发维护生命周期内,最难的不是如何将软件系统开发出来,而是在系统上线之后及时解决遇到的问题.一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根 ...
- ASP.NET Core 6框架揭秘实例演示[12]:诊断跟踪的进阶用法
一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中.诊断跟踪能够帮助我们有效地纠错和排错&l ...
随机推荐
- 精美的在线icon
super-tiny-icons(0.2.1)列表 序号 名称 图标 地址 是否使用 1 acast.svg https://cdn.jsdelivr.net/npm/super-tiny-icons ...
- mysql数据库建表分类字段--尽量少用字符串--原因探索
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串:但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么 ...
- 前端html+css+JavaScript 需要掌握的单词
前端html+css+JavaScript 需要掌握的单词 broswer 浏览器(客户端) html 超文本标记语言 css 层叠样式表 javascript 语言名字(类似python/php ...
- C#5.0新增功能01 异步编程
连载目录 [已更新最新开发文章,点击查看详细] 如果需要 I/O 绑定(例如从网络请求数据或访问数据库),则需要利用异步编程. 还可以使用 CPU 绑定代码(例如执行成本高昂的计算),对编写异步 ...
- vijos p1449 字符串还原
学习<algorithm>下的reverse函数 #include<iostream> #include<string> #include<algorithm ...
- Windows环境下main()函数传入参数
最近几天在写一个模仿windows自带的ping程序,也从网上找过一些源码,但大都需要向主函数main中传入参数,这里简单总结一下向主函数中传参的方法. 方法一:项目->属性->调试-&g ...
- 《VR入门系列教程》之19---GearVR开发初识
本章我们来介绍一下如何在移动VR设备的佼佼者GearVR上进行开发,之前我们在桌面端的VR开发想法可以直接应用在移动端,但是仍然会有些不一样的技术需要注意.这次,我们仍然采用Unity3D引擎构建示例 ...
- JAVA面试题 String s = new String("xyz");产生了几个对象?
面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest ...
- HTML--表格与表单(练习做注册页面)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- spark 源码分析之十九 -- Stage的提交
引言 上篇 spark 源码分析之十九 -- DAG的生成和Stage的划分 中,主要介绍了下图中的前两个阶段DAG的构建和Stage的划分. 本篇文章主要剖析,Stage是如何提交的. rdd的依赖 ...