rh358 002 fact变量获取 ansible配置网络 service_facts
通过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的更多相关文章
- rh358 005 dhcp dhcp6 打印机 ansible配置dhcp和打印机
部署dhcp服务器 主机发送Discover报文 目标为广播地址 同一网段的dhcp收到报文后,dhcp响应一个offer报文 offer报文:dhcp自己的ip地址.和客户端ip以及使用周期,和客户 ...
- CentOS 6.9使用Setup配置网络(解决dhcp模式插入网线不自动获取IP的问题)
说明:dhcp模式插入网线不自动获取IP是因为网卡没有激活,造成这种原因的,应该是安装系统时没有插入网线造成的. 解决方法: 修改网卡配置文件 vim /etc/sysconfig/network-s ...
- linux编程获取本机网络相关参数
getifaddrs()和struct ifaddrs的使用,获取本机IP 博客分类: Linux C编程 ifaddrs结构体定义如下: struct ifaddrs { struct ifad ...
- 如何配置网络使得宿主机能够访问VM数据库?
https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...
- CentOS 配置网络yum源
配置网络yum源(需要保证外网开通,使用网易163提供开源镜像站) 1.下载repo文件 方法一:下载到本地windows再上传到linux服务器上: 下载地址 : http://mirrors.16 ...
- VMware Workstation CentOS-6.4-x86_64-minimal 配置网络以及安装JDK和tomcat
1.配置网络(能够联网)转自:http://blog.sina.com.cn/s/blog_75ad10100101ma4c.html 1)vmware的网卡连接方式选择为桥接(bridged)不要用 ...
- CentOS7下配置网络yum源(附带下载地址)
一.查看外网是否通畅 配置网络yum源(需要保证外网开通,我这里是使用网易163提供开源镜像站) 二.下载repo文件 cd /etc/yum.repos.dwget http://mirrors.1 ...
- Linux CentOS 6.5 配置网络
网卡说明 第一块网卡为配置外网:eth0 第二块网卡为配置内网:eth1(没有外网的机器也要将内网配置在第二块网卡上) 1.使用ifconfig查看网卡配置信息 2.修改网卡1配置文件/etc/sys ...
- Linux系统下配置网络、JAVA环境,配置tomcat,mysql
一.配置网络 1.进入自己的系统,并跳转到network-scripts 2.编辑 3.查看系统的信息 4.将其添加到刚刚的if-cfg-eth0中 5.重启网络 6.这个时候ping百度还是ping ...
随机推荐
- 基于slate构建文档编辑器
基于slate构建文档编辑器 slate.js是一个完全可定制的框架,用于构建富文本编辑器,在这里我们使用slate.js构建专注于文档编辑的富文本编辑器. 描述 Github | Editor DE ...
- 监控pos收银机
1.打开pos收银机snmp功能 控制面板-->程序和功能-->启用或关闭windows功能→简单网络管理协议(SNMP) 2.配置snmp服务 控制面板-->管理工具-->服 ...
- UiPath参数介绍和使用
一.参数介绍 用于将数据从一个项目传递到另一个项目.在全局意义上,它们类似于变量,因为它们动态地存储数据并传递给它.变量在活动之间传递数据,而参数在自动化之间传递数据.因此,它们使你能够一次又一次地重 ...
- 无语怎么这么简单!——python实现中文字幕雨+源代码(源码可赠)
大家好鸭,我是小熊猫 最近浏览了很多关于用Python和Pygame实现代码雨的案例,发现很多都是没有深入讲解代码的整个实现过程,从0到1教会你制作中文文字雨(其实啥字好像都可以). 然后在介绍的过程 ...
- Python实现12种概率分布(附代码)
今天给大家带来的这篇文章是关于机器学习的,机器学习有其独特的数学基础,我们用微积分来处理变化无限小的函数,并计算它们的变化:我们使用线性代数来处理计算过程:我们还用概率论与统计学建模不确定性. 在这其 ...
- IDEA中Maven Project所在位置
难免有小伙伴找不着这个在哪. 一.首先就是可以在下面这个位置查询到: 二.如果找不着,那么在这里找: 三.如果还找不到,那就没有是你刚导入的项目没有Add Maven, 下面这个图是我Add Mav ...
- Unsupported major.minor version 52.0 (unable to load class org.apache.kafka.clients.producer.Produce异常解决方法
在控制台输入java -version,查看自己的版本是多少,我的查出来是1.8的.随后将服务器上的改为1.8的就可以了.
- 解读Go分布式链路追踪实现原理
摘要:本文将详细介绍分布式链路的核心概念.架构原理和相关开源标准协议,并分享我们在实现无侵入 Go 采集 Sdk 方面的一些实践. 本文分享自华为云社区<一文详解|Go 分布式链路追踪实现原理& ...
- CD 从抓轨到搭建流媒体服务器 —— 以《月临寐乡》为例
2022-07-19 v0.0.1 由于某些原因,进了 Static World 的群并入坑了 月临寐乡 ,梦开始了.作为幻想乡的新人,也算是有了自己喜欢的社团.但是更细节的东西,狐狐脑子一下子塞不下 ...
- RSA算法概述
RSA算法的概述(个人理解,欢迎纠正) RSA是一种基于公钥密码体制的优秀加密算法,1978年由美国(MIT)的李维斯特(Rivest).沙米尔(Shamir).艾德曼(Adleman)提的.RSA算 ...