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 ...
随机推荐
- Java编程思想:为什么要使用内部类
public class Test { public static void main(String[] args) { Callbacks.test(); } } /* 为什么需要内部类: 1.可以 ...
- Ubuntu安装Sublime Text 3
终端命令行安装: Install the GPG key: wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo a ...
- 【HDOJ】1062 Text Reverse
Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignati ...
- IT技术人员的自我修养
1. 前言 在IT领域摸爬滚打多年,从一个普通程序员到技术主管,到技术经理,再到技术总监,踩过不少坑.加过不少班,也背过不少锅,在提升自身技术能力与管理能力的同时,也一直在思考,作为IT ...
- linux初学者-squid代理篇
linux初学者-squid代理篇 Squid代理服务器是一种缓存服务器,一般分为正向代理和反向代理. 1.正向代理 客户端因为网络或者其他的问题,不能访问到一台Apache服务器,如果要访问到,则 ...
- 基于SDN网络的负载均衡研究与实现
为什么需要软件定义网络 1.网络缺乏可扩展性,创新正在停滞不前. 我们最新的研究发现,几乎每两个组织中就有一个认为需要将网络功能扩展为采用SDN的主要业务触发因素,而不是其他催化剂.这一统计数据一 ...
- C语言数据类型及变量整理
数据类型 获取int的字节数大小方法 printf("int bytes:%d",sizeof(int)); 列表整理 类型 字节数 取值范围 char 1 [-128,127]= ...
- 章节十五、3-对象仓库、Page Factory实例应用
一.如何创建对象仓库 package pageclasses; import org.openqa.selenium.WebDriver; import org.openqa.selenium.Web ...
- 利用dockerfile 安装一个nginx-1.14.1
FROM docker.io/centos MAINTAINER jim 107420988@qq.com ENV TZ "Asia/Shanghai" #ENV TERM xte ...
- scroll-苹果滑动卡顿
2018年08月02日,程序小bug. 在移动端html中经常出现横向/纵向滚动的效果,但是在iPhone中滚动速度很慢,感觉不流畅,有种卡卡的感觉,但是在安卓设备上没有这种感觉; 一行代码搞定: - ...