一、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收集设备信息以及数据处理

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实例演示的更多相关文章

  1. PHP实例 表单数据插入数据库及数据提取 用户注册验证

    网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功 ...

  2. ASP.NET Core 6框架揭秘实例演示[19]:数据加解密与哈希

    数据保护(Data Protection)框架旨在解决数据在传输与持久化存储过程中的一致性(Integrity)和机密性(confidentiality)问题,前者用于检验接收到的数据是否经过篡改,后 ...

  3. ASP.NET Core 6框架揭秘实例演示[01]: 编程初体验

    作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...

  4. ASP.NET Core 6框架揭秘实例演示[07]:文件系统

    ASP.NET Core应用具有很多读取文件的场景,如读取配置文件.静态Web资源文件(如CSS.JavaScript和图片文件等).MVC应用的视图文件,以及直接编译到程序集中的内嵌资源文件.这些文 ...

  5. ASP.NET Core 6框架揭秘实例演示[08]:配置的基本编程模式

    .NET的配置支持多样化的数据源,我们可以采用内存的变量.环境变量.命令行参数.以及各种格式的配置文件作为配置的数据来源.在对配置系统进行系统介绍之前,我们通过几个简单的实例演示一下如何将具有不同来源 ...

  6. ASP.NET Core 6框架揭秘实例演示[09]:配置绑定

    我们倾向于将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定.除了将配置树叶子节点配置节的绑定为某种标量对象外,我们还可以直接将一个配置 ...

  7. ASP.NET Core 6框架揭秘实例演示[10]:Options基本编程模式

    依赖注入使我们可以将依赖的功能定义成服务,最终以一种松耦合的形式注入消费该功能的组件或者服务中.除了可以采用依赖注入的形式消费承载某种功能的服务,还可以采用相同的方式消费承载配置数据的Options对 ...

  8. ASP.NET Core 6框架揭秘实例演示[11]:诊断跟踪的几种基本编程方式

    在整个软件开发维护生命周期内,最难的不是如何将软件系统开发出来,而是在系统上线之后及时解决遇到的问题.一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根 ...

  9. ASP.NET Core 6框架揭秘实例演示[12]:诊断跟踪的进阶用法

    一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中.诊断跟踪能够帮助我们有效地纠错和排错&l ...

随机推荐

  1. 和朱晔一起复习Java并发(三):锁(含锁性能测试)

    这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把.本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能. 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一 ...

  2. 你可能不知道的github的秘密

    github也可以使用快捷键 先举例子,如何快速查找项目中的文件? 只需要进入项目,并按下T键 在浏览代码时,如何快速跳到指定行? 只需要进入项目,并按下L键 下面是一些常用的快捷键 聚焦搜索栏 按下 ...

  3. app同包同签名不能安装问题

    今天博主与团队之间出现一个很郁闷的问题: 那就是我们开发的一个app,在升级推送版本的时候突然出现,相同的包名.相同的签名.在安装的时候出现,安装签名不一致(安装失败)的提示. 让我们很是困扰.后来发 ...

  4. 小米OJ 12. 找出可能的合的组合

    利用dfs解决,从给出的数组左边或右边开始遍历,对每一个数字进行判断,有三种情况: 1. 加上当前数字的值,遍历下一个数字 2. 加上当前数字的值,继续遍历该数字 3. 不加上当前的数字的值,遍历下一 ...

  5. HTML页面中的布局问题

    在做网站中,给整个大的框架宽度设置为100%,然后设置body的最小宽度是网站的内容部分的宽度.网站内容的宽度是固定的.

  6. python的发展史

    python的发展史 1989年,被称为龟叔的Guido在为ABC语言写插件时,产生了写一个简洁又实用的编程语言的想法,并开始着手编写.因为其喜欢Monty Python喜剧团,所以将其命名为pyth ...

  7. JAVA-1.连接数据库

    import java.sql.*; import com.mysql.jdbc.Driver; /* * <JDBC基础篇> * 连接数据库一般来说分为6个步骤: *1-加载驱动 *2- ...

  8. 基于V2EX API的nodejs组件.

    今天又学习到了新的知(zi)识(shi),来给自己做个笔录,也算在这酷热的天气里给自己写了一篇降温的‘膏药’,话就讲这么多了 ,start off...... 首先 ,依赖选择: /**设置为严格模式 ...

  9. vue.js主要内容

    vue的主要内容 1.了解vue 2.vue开发环境的搭建和脚手架工具的使用 3.vue具体的指令和项目实战 1.了解vue 1.具备基础:html.css.js,模块化概念.ES6语法(简单即可) ...

  10. 实战SpringCloud响应式微服务系列教程(第二章)

    接上一篇:实战SpringCloud响应式微服务系列教程(第一章) 1.1.2背压 背压是响应式编程的核心概念,这一节也是我们了解响应式编程的重点. 1.背压的机制 在生产者/消费者模型中,我们意识到 ...