ansible学习之 Facts

Facts 是什么:

在Ansible中,Facts是关于目标主机的信息,这些信息由Ansible在执行任务之前收集。Facts是特定于主机的,它们提供了系统级的数据,例如操作系统类型、内核版本、IP地址、已安装的包列表等。这些信息可以用来在playbook中做出决策,例如,使用条件语句或变量来应用不同的配置,这些变量可以在任务和模板中使用。

如何手动获取 远程系统的数据

通常facts中的数据是由Ansible中的 ‘setup’模块自动发现的,我们可以调用setup模块来获取远程主机的信息。

# 192.168.0.187 远程主机名或者组
# ansible 192.168.0.187 -m setup
.....	# 信息巨多这里就省略掉了

如何关闭Facts

收集信息会减慢 ansible 或者 ansible-playbook 的执行速度,如果你不需要用到 facts,你可以把它关闭掉。

1. 使用ad-hoc时关闭facts:

# ansible all -m ping  -e "gather_facts=False"  
  • -e : 传递参数给 模块

2. 在使用ansible-playbook 时关闭facts

---            
- hosts: allgather_facts: notasks:- name: test connectping:
  • gather_facts: no : 全局生效

3. 配置文件中,关闭facts信息收集

# cat /etc/ansible/ansible.cfg
gathering = False

使用ansible-playbook 调用facts中的数据

- hosts: alltasks:- name: Print the hostname of the remote systemdebug:var: ansible_nodename
[root@localhost ~]# ansible-playbook ping-playbook.yaml PLAY [all] **************************************************************************************************************************************************TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.0.187]TASK [Print the hostname of the remote system] **************************************************************************************************************
ok: [192.168.0.187] => {"ansible_nodename": "idealpxe"
}PLAY RECAP **************************************************************************************************************************************************
192.168.0.187              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • var:ansible_nodename 打印变量的值
  • var: ansible_facts 打印所有事务

扩展 debug模块介绍

Ansible中的debug模块是一个用于输出变量值或执行其他调试任务的非常有用的模块。它通常用于以下目的:

  • 打印变量值:在执行过程中,如果你想查看某个变量的值,可以使用debug模块打印出来。
  • 调试任务:如果你需要调试任务,debug模块可以用来打印任务执行过程中的中间状态或结果。
  • 消息通知:debug模块可以用来向用户显示消息或通知。
  • 条件调试:结合when条件,debug模块可以只在满足特定条件时执行.
  • 测试和开发:在开发和测试Ansible playbook时,debug模块可以帮助你理解代码的执行流程。

案例一、打印消息,使用msg参数

- hosts: alltasks:- name:  Debug taskdebug:msg: "This is a debug message"
PLAY [all] **************************************************************************************************************************************************TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.0.187]TASK [Debug task] *******************************************************************************************************************************************
ok: [192.168.0.187] => {"msg": "This is a debug message"
}PLAY RECAP **************************************************************************************************************************************************
192.168.0.187              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • msg:用于输出一条消息。

输出消息时解释变量

- hosts: alltasks:- name:  print remote hostnamedebug:msg: "Hostname is {{ansible_nodename}}"
PLAY [all] **************************************************************************************************************************************************TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.0.187]TASK [print remote hostname] ********************************************************************************************************************************
ok: [192.168.0.187] => {"msg": "Hostname is idealpxe"
}PLAY RECAP **************************************************************************************************************************************************
192.168.0.187              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • 在消息中调用变量需要使用 “{{}}”,双引号也不能少。ansible_nodename 变量是调用facts 事务中的,所有事物一定要打开,也可以换一种方式调用变量如下:
- hosts: alltasks:- name:  print remote hostnamedebug:msg: "The hostname of the target system is {{ ansible_facts['hostname'] }}"

案例二、打印变量使用 var 参数

变量同样来自事务,所有事务需要打开

- hosts: alltasks:- name:  print remote hostnamedebug:var:  ansible_facts['hostname']

或者

- hosts: alltasks:- name:  print remote hostnamedebug:var: ansible_nodename 
  • var参数是直接打印变量的值,不需要引用

案例三、打印复杂变量数据

截取一段facts的数据:

     "ansible_facts": {"ansible_default_ipv4": {"address": "192.168.0.187", "alias": "ens32", "broadcast": "192.168.0.255", "gateway": "192.168.0.2", "interface": "ens32", "macaddress": "00:0c:29:77:50:d9", "mtu": 1500, "netmask": "255.255.255.0", "network": "192.168.0.0", "type": "ether"}, }

将address字符的数据打印出来:
方法一、使用msg参数

- hosts: alltasks:- name:  print remote hostnamedebug:msg: "{{ansible_default_ipv4.address}}"

或者

- hosts: alltasks:- name:  print remote hostnamedebug:msg: "{{ansible_default_ipv4['address']}}"

方法二、使用var参数

- hosts: alltasks:- name:  print remote hostnamedebug:var: ansible_default_ipv4.address

或者

- hosts: alltasks:- name:  print remote hostnamedebug:var: ansible_default_ipv4['address']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/55664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单花20分钟学会top 命令手册 (linux上的任务管理器)

1. 介绍 top 是一个常用的 Linux 命令行工具,用于实时监视系统资源和进程的运行情况。用户可以通过 top 命令查看系统的 CPU 使用率、内存占用情况、进程列表等重要信息,帮助快速了解系统运行状态并进行性能监控。该工具可以认为相当于windows上的任务管…

【Jenkins】如何使用 telegram 的机器人进行 jenkins 任务告警

author: jwensh & gpt date: 2024.10.08 要使用 Telegram 机器人发送 Jenkins 任务告警,步骤可以分为以下几个部分:创建 Telegram 机器人、配置 Jenkins 插件或者使用自定义脚本,将 Jenkins 任务的状态通过 Telegram 机器人通知给你。具体…

【SQL】掌握SQL查询技巧:高效数据整合与查询优化

目录 1. SQL 的基本构成2. SQL 联接(JOIN)2.1 内联接(INNER JOIN)2.2 外联接(OUTER JOIN)2.2.1 左外联接(LEFT JOIN)2.2.2 右外联接(RIGHT JOIN)2.2.3 全外联…

网页前端开发之Javascript入门篇(8/9):数组

Javascript数组 什么是数组? 答:其概念跟 Python教程 的列表一样,只是叫法不同和语法上有所变化而已。 下面是数组的语法: var aaa "张三"; var bbb [aaa, "李四", "王五"]; // 成员值可以是来自变量&am…

《系统架构设计师教程(第2版)》第17章-通信系统架构设计理论与实践-07-通信网络构建案例分析

文章目录 1. 高可用网络构建分析1.1 网络接入层高可用性设计1.1.1 高可用接入层特征1.1.2 接入汇聚层的方式1)倒U 形接法(组网模型一)2)U 形接法(组网模型二)3)矩形接法(组网模型三)4)三角形接法(组网模型四) 1.2 网络…

2024年下半年软考准考证什么时候打印?

2024年下半年软考准考证打印入口网址如下: https://bm.ruankao.org.cn/sign/welcome 广东的同学特别注意:准考证打印截止时间是11月8号,也就是考试前一天。一定要提前打印准考证,考试当天是无法打印的。 2024年下半年软考准考证…

pycharm连接linux服务器需要提前安装ssh服务

在 Debian 或 Ubuntu 系统上,使用 APT: bash复制代码 sudo apt-get install openssh-server 在基于 RPM 的系统如 CentOS 或 RHEL 上,使用 YUM 或 DNF: bash复制代码 sudo yum install openssh-server 或对于较新的 RHEL/Cent…

C# 自适应屏幕分辨率

一、新增AutoSizeFormClass.cs class AutoSizeFormClass{//(1).声明结构,只记录窗体和其控件的初始位置和大小。public struct controlRect{public int Left;public int Top;public int Width;public int Height;}//(2).声明 1个对象//注意这里不能使用控件列表记录 List nCtr…

2024四大剪辑软件推荐及下载地址介绍!

在这个数字时代,视频成为了我们记录生活、分享故事的重要手段。无论是专业摄影师还是业余爱好者,都需要一款好用的视频剪辑软件来将自己的创意变为现实。下面,我将为大家介绍几款各有特色的视频剪辑工具,同时也附上下载的地址&…

PAT甲级-1004 Counting Leaves

题目 题目大意 给定一棵树,每个节点从01到n编号,规定01为根节点,求每层叶子节点的个数。 思路 用二维数组存储树。每层叶子节点的个数,只能用dfs深度遍历,用一个数组存储所有层数的叶子节点个数。相同层数并且是叶子…

面向对象技术——设计模式

目录 层次结构 具体设计模式分类 创建型模式(处理创建对象) 结构型模式(处理类和对象的组合) 行为型模式(描述类或者对象的交互行为) 创建型设计模式 ​编辑 结构型设计模式 行为型设计模式​编辑 …

音视频入门基础:FLV专题(13)——FFmpeg源码中,解析任意Type值的SCRIPTDATAVALUE类型的实现

一、SCRIPTDATAVALUE类型 从《音视频入门基础:FLV专题(9)——Script Tag简介》中可以知道,根据《video_file_format_spec_v10_1.pdf》第80到81页,SCRIPTDATAVALUE类型由一个8位(1字节)的Type和…

wsl中配置cuda,pytorch,cudnn,vscode

参考链接 查看python版本 从 NVIDIA 的官网上下载 CUDA 的 pin 文件。这个文件确保 CUDA 仓库的优先级更高,防止与其他仓库发生冲突。 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin将下载的 cuda-wsl-u…

Java并发编程:深入探索与实战案例

Java并发编程:深入探索与实战案例 在当今的多核处理器时代,并发编程已成为提升应用程序性能、优化资源利用的关键技术之一。Java,作为一门广泛应用的编程语言,凭借其强大的并发处理能力,在众多编程语言中脱颖而出。本…

【C++打怪之路Lv7】-- 模板初阶

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

ES postman操作全量修改,局部修改,删除

全量修改 修改需要调用的url 地址是http://192.168.1.108:9200/shopping/_doc/1001,调用方法使用put 只修改指定的需求的内容的请求方式 post方式就是局部修改 http://192.168.1.108:9200/shopping/_update/1001,请求方式post 上图是只修改id 为1001数…

①EtherCAT转ModbusTCP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherCAT 转 ModbusTCP GW系列型号 MS-GW15 简介 MS-GW15 是 EtherCAT 和 Modbus TCP 协议转换网关,为用户提供一种 …

Redis面试题——第一篇

1. Redis主从复制的实现原理是什么 Redis的主从复制是指一个Redis实例可以将数据复制到一个或者多个从节点,从节点从主节点获取数据并保持同步。 复制流程 连接:从节点通过向主节点发送PSYNC命令建立连接。全量复制:如果是第一次连接或者之…

基于springboot的家政服务管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的家政服务管理系统1拥有三种角色 管理员:用户管理、服务管理、评价管理、预约管理、分配管理等 用户:登录注册、预约服务、取消服务、评价等 服…

wsl2 ubuntu 桥接以太网卡

注意:此方法需要至少 Windows 11 22H2。桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。 在桥接的作用下,类似于把宿主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,宿主机也同样插在这…