通过ansible 获取网络信息

1.如何获取fact事实变量

方式1:

ansible servera -m  servera

方式2:

剧本

[root@workstation ansible]# cat ake.yaml
---
- name: get all facts
hosts: servera
tasks:
- name: get all facts
debug:
msg: "{{ ansible_facts }}"
[root@workstation ansible]# ansible-playbook ake.yaml

2.如何获取某个具体的事实变量

比如:获取fqdn或者Hostname。得分析变量类型

变量类型

1>list
list=[1,2,3,4,5]
2>dict
dict={'a':1,'b':2}
3>set 集合 4>tuple 元组 5>string 字符串 有嵌套类型 ansible_facts={"ansible_all_ipv4_addresses": ['xxx','xxxx'],"a":3}
字典的值是列表。各种嵌套可以通过格式观察 ansible_facts的一级别的key:对应的value如果是列表[1,2,3,4,5],这样的值可以用来循环 ansible_facts的第一级key:对应的value如果是个字典,获取的方式就是ansible_facts['key1_name']获取

如果一级key以ansible开头,需要把ansible去掉

如图我去掉了一级key ansible_all_ipv4_addresses的ansible

一级key都是以ansible打头

取value为列表的值

索引取值

循环取值

取value为字典的值

取一个深层级深的

只要不是ansible开头的一级key,那么就一级一级网上找。才可以

3.网络信息有关的事实变量

很简单

4.如何通过MAC地址来获取对应的网卡名称

例子:[我是mac地址 52:54:00:00:fa:09:已知条件 --> 属于这个mac的网卡名称

ansible_facts['nic_name']['macaddress']

通过mac得到name

ansible_facts['interfaces'] --> 能获取到所有的网卡名称,如果把所有的MAC取出,和已知Mac做对比就行

实践



报错因为网卡lo没有mac,无lo,为空值

得学会对value列表做循环并判断

5.在一个task内定义的变量,是否可以在下一个task调用

可以看到变量的作用域被限制



可以看到fact定义的变量未被限制

练习题

1:确认networkmanger服务是否开启

2:获取特定MAC的网卡接口

3:设置这个MAC的网络

4:通过Ansible_facts获取ip和Mac地址





前两步

引用角色

[root@workstation ansible]# yum -y install rhel-system-roles.network
[root@workstation roles]# cd rhel-system-roles.network/
[root@workstation rhel-system-roles.network]# ls
defaults library LICENSE meta module_utils pylintrc README.html README.md tasks tests tox.ini
[root@workstation rhel-system-roles.network]# pwd
/usr/share/ansible/roles/rhel-system-roles.network
[root@workstation rhel-system-roles.network]#



become可以提权,普通用户无法改网卡

使用红帽的role角色,可以查看readme

[root@workstation ansible]# ansible-playbook  playbook.yaml 

PLAY [network] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************************************************
ok: [servera] TASK [rhel-system-roles.network : Check which services are running] *********************************************************************************************************************************************
ok: [servera] TASK [rhel-system-roles.network : Check which packages are installed] *******************************************************************************************************************************************
ok: [servera] TASK [rhel-system-roles.network : Print network provider] *******************************************************************************************************************************************************
ok: [servera] => {
"msg": "Using network provider: nm"
} TASK [rhel-system-roles.network : Install packages] *************************************************************************************************************************************************************
skipping: [servera] TASK [rhel-system-roles.network : Enable and start NetworkManager] **********************************************************************************************************************************************
ok: [servera] TASK [rhel-system-roles.network : Enable network service] *******************************************************************************************************************************************************
skipping: [servera] TASK [rhel-system-roles.network : Ensure initscripts network file dependency is present] ************************************************************************************************************************
skipping: [servera] TASK [rhel-system-roles.network : Configure networking connection profiles] *************************************************************************************************************************************
[WARNING]: [003] <info> #0, state:up persistent_state:present, 'eth1': add connection eth1, 1e60e42a-10e8-4a27-ba92-c5698ae322c1
[WARNING]: [004] <info> #0, state:up persistent_state:present, 'eth1': up connection eth1, 1e60e42a-10e8-4a27-ba92-c5698ae322c1 (not-active)
changed: [servera] TASK [rhel-system-roles.network : Re-test connectivity] *********************************************************************************************************************************************************
ok: [servera] TASK [confirm Networkmanager service] ***************************************************************************************************************************************************************************
ok: [servera] TASK [get interface name] ***************************************************************************************************************************************************************************************
skipping: [servera] => (item=lo)
ok: [servera] => (item=eth1)
skipping: [servera] => (item=eth0)
skipping: [servera] => (item=eth2) TASK [debug net_name] *******************************************************************************************************************************************************************************************
ok: [servera] => {
"msg": "eth1"
} PLAY RECAP ******************************************************************************************************************************************************************************************************
servera : ok=10 changed=1 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0

很明显角色先开始跑,后面才跑了任务,但是我任务里有一个检查服务。这个得先执行



pre_tasks改变优先级

也可以在tasks内导入角色

导入角色的方式有两种

import_role 运行前 运行role

include_role 运行后 运行role

上面两次方式改变了顺序

默认先执行role

自动化服务管理

service模块

无法执行daemon-reload: yes

[root@workstation ansible]# cat fox.yaml
---
- name: network
hosts: servera tasks: - name: abc
service_facts:
- name: print
debug:
msg: "{{ ansible_facts }}"

会使fact多出服务的信息

增加了事实变量,关于服务的

手机服务状态,保存为ansible事实变量

service_facts



查看sshd服务状态

举个牵强的例子使用serice_facts的变量

service_facts: 用来收集系统当前所有的服务状态

并设置为ansible_facts['service']

rh358 002 fact变量获取 ansible配置网络 service_facts的更多相关文章

  1. rh358 005 dhcp dhcp6 打印机 ansible配置dhcp和打印机

    部署dhcp服务器 主机发送Discover报文 目标为广播地址 同一网段的dhcp收到报文后,dhcp响应一个offer报文 offer报文:dhcp自己的ip地址.和客户端ip以及使用周期,和客户 ...

  2. CentOS 6.9使用Setup配置网络(解决dhcp模式插入网线不自动获取IP的问题)

    说明:dhcp模式插入网线不自动获取IP是因为网卡没有激活,造成这种原因的,应该是安装系统时没有插入网线造成的. 解决方法: 修改网卡配置文件 vim /etc/sysconfig/network-s ...

  3. linux编程获取本机网络相关参数

    getifaddrs()和struct ifaddrs的使用,获取本机IP 博客分类: Linux C编程   ifaddrs结构体定义如下: struct ifaddrs { struct ifad ...

  4. 如何配置网络使得宿主机能够访问VM数据库?

    https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...

  5. CentOS 配置网络yum源

    配置网络yum源(需要保证外网开通,使用网易163提供开源镜像站) 1.下载repo文件 方法一:下载到本地windows再上传到linux服务器上: 下载地址 : http://mirrors.16 ...

  6. VMware Workstation CentOS-6.4-x86_64-minimal 配置网络以及安装JDK和tomcat

    1.配置网络(能够联网)转自:http://blog.sina.com.cn/s/blog_75ad10100101ma4c.html 1)vmware的网卡连接方式选择为桥接(bridged)不要用 ...

  7. CentOS7下配置网络yum源(附带下载地址)

    一.查看外网是否通畅 配置网络yum源(需要保证外网开通,我这里是使用网易163提供开源镜像站) 二.下载repo文件 cd /etc/yum.repos.dwget http://mirrors.1 ...

  8. Linux CentOS 6.5 配置网络

    网卡说明 第一块网卡为配置外网:eth0 第二块网卡为配置内网:eth1(没有外网的机器也要将内网配置在第二块网卡上) 1.使用ifconfig查看网卡配置信息 2.修改网卡1配置文件/etc/sys ...

  9. Linux系统下配置网络、JAVA环境,配置tomcat,mysql

    一.配置网络 1.进入自己的系统,并跳转到network-scripts 2.编辑 3.查看系统的信息 4.将其添加到刚刚的if-cfg-eth0中 5.重启网络 6.这个时候ping百度还是ping ...

随机推荐

  1. Spring Boot 实践 :Spring Boot + MyBatis

    Spring Boot 实践系列,Spring Boot + MyBatis . 目的 将 MyBatis 与 Spring Boot 应用程序一起使用来访问数据库. 本次使用的Library spr ...

  2. 在jupyter中配置c++内核

    安装 xeus-cling conda install xeus-cling -c conda-forg xeus-cling 是一个用于编译解释于C++的Jupyter内核目前,支持Mac与Linu ...

  3. Skywalking光会用可不行,必须的源码分析分析 - Skywalking Agent &插件解析

    3 Skywalking源码导入 接上文,已经学习了Skywalking的应用,接下来我们将剖析Skywalking源码,深度学习Skywalking Agent. 3.1 源码环境搭建 当前最新版本 ...

  4. RPA SAP财务内部对账机器人

    [简介] 本机器人用于使用SAP软件的集团公司间往来对账前台登录SAP账户和密码,需退出PC微信,输入法切换为英文半角状态. [详细流程] 1.清空Excel-VBA管理工具原始数据 2.输入对账时间 ...

  5. cookie、session、tooken

    一.cookie 的诞生 首先需要知道Http协议的无状态连接的,即这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的. 服务端,既不知道上一次请求和这一次请求的关联,也无法知道哪一个客户 ...

  6. NC14247 Xorto

    NC14247 Xorto 题目 题目描述 给定一个长度为 \(n\) 的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为 \(0\) . 输入描述 第一行一个数 \(n\) 表示 ...

  7. 如何用Fiddler对APP进行网络测试

    什么是Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据(指co ...

  8. Tapdata 实时数据中台在智慧教育中的实践

      摘要:随着教育信息化的推进,智慧校园建设兴起,但在实施过程中面临数据孤岛.应用繁多.数据再利用等方面挑战,而 Tapdata 的实时数据中台解决方案,能够高效地解决智慧校园实施中的基础数据问题. ...

  9. JUC源码学习笔记1——AQS和ReentrantLock

    笔记主要参考<Java并发编程的艺术>并且基于JDK1.8的源码进行的刨析,此篇只分析独占模式,后续在ReentrantReadWriteLock和 CountDownLatch中 会重点 ...

  10. 区间统计——ST算法

    一.引入 先举一个小栗子. 一数组有 \(n\) 个元素,有 \(m\) 次询问(\(n, m <= 10^5\)).对于每次询问给出 \(l, r\),求出 \([l, r]\)的区间和. 有 ...