通过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. 工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流

    引子 工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. 为了实现某个业务目标,需要多方参与.按预定规则提交数据时,就可以用到工作流. 通过流程引擎,我们按照流程图,编 ...

  2. Ubuntu远程桌面助手(URDC)

    目前自动驾驶域控制器项目中使用了英伟达的Orin芯片+Ubuntu20.04系统.域控属于典型的Headless设备,开发调试时需要连接显示器(HDMI/DP).鼠标和键盘,或者使用NoMachine ...

  3. ACM-01背包问题-Python

    日后完善 二维数组实现 if __name__ == '__main__': # 背包空间 space = 10 # 默认第一个元素为 0, 仅仅是为了方便理解 weights = [0, 2, 2, ...

  4. QT工程构建目录下,将生成的中间文件和可执行文件分离

    在QT工程中,当我们选择了构建目录后,编译生成程序后,总会发现在debug目录下会有混淆着各类文件,如下图 很多时候,我们又仅仅只需要可执行文件或者自定义的动态链接库.如下图 当然,如果不觉得麻烦,有 ...

  5. RPA视频教程

    匠厂出品,必属精品   Uipath中文社区qq交流群:465630324 uipath中文交流社区:https://uipathbbs.comRPA之家qq群:465620839 第一课--UiPa ...

  6. linux系统健康检查脚本

    #!/bin/bash echo "You are logged in as `whoami`"; if [ `whoami` != root ]; then echo " ...

  7. Python爬取全球是最大的电影数据库网站IMDb数据

    在使用 Python 开发爬虫的过程中,requests 和 BeautifulSoup4(别名bs4) 应用的比较广泛,requests主要用于模拟浏览器的客户端请求,以获取服务器端响应,接收到的响 ...

  8. maven编译 出现Process terminated

    问题: 解决方案: 在Settings中配置一下maven

  9. 开发实践丨昇腾CANN的推理应用开发体验

    摘要:这是关于一次 Ascend 在线实验的记录,主要内容是通过网络模型加载.推理.结果输出的部署全流程展示,从而快速熟悉并掌握 ACL(Ascend Computing Language)基本开发流 ...

  10. Solution -「树状数组」 题目集合

    T1 冒泡排序 题目描述 clj 想起当年自己刚学冒泡排序时的经历,不禁思绪万千 当年,clj 的冒泡排序(伪)代码是这样的: flag=false while (not flag): flag=tr ...