当前位置: 首页 > news >正文

ansible setup模块

用于收集有关目标主机的系统和网络信息,并将这些信息存储为一个facts变量,可以在Playbook的后续任务中使用。setup模块可以用来获取主机的操作系统、软件包、IP地址、内存、磁盘和其他硬件信息。这些信息对编写Playbook和进行条件判断非常有用。当你在Playbook或者直接通过Ansible命令行使用setup模块时,它会返回一个包含目标主机详细信息的JSON结构,这些信息包括但不限于系统架构、网络配置、已安装软件包列表、文件系统、系统变量等。

  • 参数

  • gather_subset:      指定要收集的facts子集。默认情况下,Ansible会尝试收集所有可用的facts。可以使用这个参数来限制收集的范围,例如指定"network"来仅收集网络相关的facts。
  • gather_timeout:      指定收集facts的超时时间。默认情况下,超时时间是10秒。
  • filter:     指定一个过滤器,用于仅返回符合特定条件的facts。可以使用Python语法来构建过滤器,例如"ansible_kernel_version > '4.18'"。
  • fact_path:     指定一个目录,用于加载自定义facts。可以在这个目录中放置自定义的Python脚本或脚本文件夹,Ansible会在收集facts时自动加载这些脚本。
  • fact_caching:    指定facts的缓存设置。可以将其设置为True以启用缓存,或者设置为一个路径来指定自定义的缓存目录。

使用方法

通过命令行直接使用

你可以在命令行直接运行setup模块来查看单个或多个主机的信息。

1ansible <hostname_or_group> -m setup

这里,<hostname_or_group>应该替换为目标主机名或主机组名。

在Playbook中使用

虽然不常见,但你也可以在Playbook中使用setup模块来收集信息,并将这些信息注册到变量中,之后在Playbook中使用这些变量:

1---
2- name: Gather facts and use them
3  hosts: my_hosts
4  tasks:
5    - name: Gather facts
6      ansible.builtin.setup:
7      register: host_facts
8
9    - name: Display some gathered facts
10      debug:
11        msg: "The OS is {{ host_facts.ansible_facts.os_family }} and distribution is {{ host_facts.ansible_facts.distribution }}"
12

在这个例子中,通过调用ansible.builtin.setup(或简写为setup),收集到的信息被注册到了host_facts变量中,随后可以在后续任务中通过host_facts.ansible_facts访问这些信息。

注意事项

  • Ansible默认在每个Playbook执行开始时自动收集事实(facts),除非你通过gather_facts: no在Playbook或Task级别禁用了这一行为。
  • 收集事实可能会增加执行时间,特别是在大型环境或网络延迟较高的情况下。
  • 你可以通过filter参数来限制收集的信息范围,减少不必要的数据传输和处理时间,例如:ansible <hostname> -m setup -a "filter=ansible_network*"

setup模块是Ansible自动化运维中的基础工具,它为编写灵活、动态的Playbook提供了丰富的信息基础。

获取网络信息。

要在Ansible中专门获取目标主机的网络信息,你可以利用setup模块并结合过滤功能来聚焦于网络相关事实。以下是如何操作的几个示例:

通过命令行获取网络信息

你可以通过命令行调用Ansible的setup模块并使用-a--args选项加上filter参数来筛选网络相关信息:

ansible <hostname_or_group> -m setup -a "filter=ansible_all_ipv4_addresses"

这将只显示目标主机的所有IPv4地址。如果你想获取更多网络细节,可以使用更宽泛的过滤器,如:

ansible <hostname_or_group> -m setup -a "filter=ansible_network*"

这将展示所有与网络相关的事实,包括接口信息、IP地址、网关等。

在Playbook中获取并使用网络信息

在编写Playbook时,你同样可以使用setup模块并注册变量,然后根据需要访问这些网络信息:

1---
2- name: Gather and display network information
3  hosts: your_host_or_group
4  tasks:
5    - name: Gather facts with network filter
6      ansible.builtin.setup:
7        filter: ansible_network*
8      register: network_facts
9
10    - name: Display network interfaces
11      debug:
12        msg: "{{ network_facts.ansible_facts.ansible_interfaces }}"
13
14    - name: Display IP addresses of eth0
15      debug:
16        msg: "IP addresses of eth0: {{ network_facts.ansible_facts['ansible_' + item]['ipv4']['address'] }}"
17      loop: "{{ network_facts.ansible_facts.ansible_interfaces }}"
18      when: "'eth0' in item"

在这个Playbook示例中,我们首先收集所有网络相关的事实,并注册到network_facts变量中。然后,分别展示了所有网络接口名称和特定接口(如eth0)的IPv4地址。

获取内存信息。

命令行示例

直接在命令行使用Ansible调用setup模块并过滤出内存相关的信息:

ansible <your_host_or_group> -m setup -a "filter=ansible_memory_mb"

这将返回目标主机的内存信息,以MB为单位。

Playbook示例

在Playbook中,你可以通过调用setup模块并将结果注册到一个变量,随后访问该变量来使用内存信息:

1---
2- name: Gather and Display Memory Information
3  hosts: your_host_or_group
4  tasks:
5    - name: Gather facts with memory filter
6      ansible.builtin.setup:
7        filter: ansible_memory_mb
8      register: memory_facts
9
10    - name: Display total memory in MB
11      debug:
12        msg: "Total Memory: {{ memory_facts.ansible_facts.ansible_memory_mb.real.total }} MB"
13
14    - name: Display free memory in MB
15      debug:
16        msg: "Free Memory: {{ memory_facts.ansible_facts.ansible_memory_mb.real.free }} MB"

在这个示例中,我们首先使用setup模块并设置了filter参数为ansible_memory_mb来专门获取内存信息,并将这些信息注册到memory_facts变量中。接着,我们通过调试任务输出总内存和可用内存的大小。

获取硬盘空间使用信息。

Playbook示例

下面是一个简单的示例,展示了如何在Playbook中使用setup模块来获取并显示硬盘空间信息:

1---
2- name: Gather and Display Disk Space Information
3  hosts: your_host_or_group
4  tasks:
5    - name: Gather facts
6      ansible.builtin.setup:
7      register: system_facts
8
9    - name: Display disk space information for each mount point
10      debug:
11        msg: "Mount point: {{ item.mount }} - Total: {{ item.size_total }} KB - Used: {{ item.size_used }} KB - Available: {{ item.size_available }} KB"
12      loop: "{{ system_facts.ansible_facts.ansible_mounts }}"
13      when: item.mount != "/" or item.fstype != "tmpfs"  # 可选: 过滤掉不需要的条目,如根分区和tmpfs

在这个Playbook中,我们首先调用了setup模块,并将收集到的信息注册到了变量system_facts中。然后,我们通过遍历ansible_mounts这个变量来访问每个挂载点的磁盘使用信息。这个变量提供了每个磁盘分区或挂载点的详细信息,包括挂载点路径(mount)、总大小(size_total)、已用空间(size_used)以及可用空间(size_available),所有大小单位默认为KB。

请注意,when条件是可选的,它用于过滤输出,比如排除tmpfs这类临时文件系统的统计信息,或者针对特定挂载点的筛选。

相关文章:

ansible setup模块

用于收集有关目标主机的系统和网络信息&#xff0c;并将这些信息存储为一个facts变量&#xff0c;可以在Playbook的后续任务中使用。setup模块可以用来获取主机的操作系统、软件包、IP地址、内存、磁盘和其他硬件信息。这些信息对编写Playbook和进行条件判断非常有用。当你在Pl…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的测试用例执行计划(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD…...

NSIS 入门教程 (一)

介绍 大多数应用程序都附带一个安装程序&#xff0c;它将所需的文件复制到正确的文件夹中&#xff0c;创建注册表项&#xff0c;并提供卸载例程以&#xff08;希望&#xff09;从计算机中彻底删除应用程序. 有多种解决方案可以为自主开发的应用程序配备安装程序。除了Install …...

cve-2015-3306-proftpd-vulfocus

1.原理 proftp是用于搭建基于ftp协议的应用软件 ProFTPD是ProFTPD团队的一套开源的FTP服务器软件。该软件具有可配置性强、安全、稳定等特点。 ProFTPD 1.3.5中的mod_copy模块允许远程攻击者通过站点cpfr和site cpto命令读取和写入任意文件。任何未经身份验证的客户端都可以…...

超详细!想进华为od的请疯狂看我!

三分钟带你全面了解华为OD 【合同及管理】签约方为科锐国际/外企德科&#xff08;人力服务公司&#xff09;&#xff0c;劳动合同期为4年&#xff0c;试用期6个月。员工关系合同管理、五险一金、考勤发薪由科锐国际/外企德科负责&#xff1b;定级定薪、员工培训、工作安排、绩…...

MQTT协议与TCP/IP协议在性能上的区别

MQTT协议与TCP/IP协议在性能上的区别主要体现在以下几个方面&#xff1a; 1.协议开销与传输效率&#xff1a; ① MQTT&#xff1a;MQTT协议针对消息传递进行了优化&#xff0c;使用了小型的控制包和变长的包头设计&#xff0c;极大程度地减少了数据传输过程中的冗余和带宽消耗…...

LeetCode 每日一题 2024/6/17-2024/6/23

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/17 522. 最长特殊序列 II6/18 2288. 价格减免6/19 2713. 矩阵中严格递增的单元格数6/20 2748. 美丽下标对的数目6/21 LCP 61. 气温变化趋势6/22 2663. 字典序最小的美丽字…...

FlinkCDC pipeline模式 mysql-to-paimon.yaml

flinkcdc 需要引入&#xff1a; source端&#xff1a; flink-cdc-pipeline-connector-mysql-xxx.jar、mysql-connector-java-xxx.jar、 sink端&#xff1a; flink-cdc-pipeline-connector-paimon-xxx.jar flinkcdc官方提供connect包下载地址&#xff0c;pipeline模式提交作业和…...

mysql数据库入门手册

数据库 常见的数据库查看当前用户及其权限创建用户授权用户访问数据库撤销用户权限修改用户密码删除用户增创建一个数据库创建表表中插入数据表中添加字段&#xff08;三种方式&#xff09; 删删除表记录删除表字段删除表&#xff08;三种方式&#xff09;删除数据库 改修改表名…...

增强大型语言模型(LLM)可访问性:深入探究在单块AMD GPU上通过QLoRA微调Llama 2的过程

Enhancing LLM Accessibility: A Deep Dive into QLoRA Through Fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs 基于之前的博客《使用LoRA微调Llama 2》的内容&#xff0c;我们深入研究了一种称为量化低秩调整&#xff08;QLoRA&#xff09;的参数高效微调&#xff0…...

空间复杂度 线性表,顺序表尾插。

各位少年&#xff0c;大家好&#xff0c;我是那一脸阳光&#xff0c;本次分享的主题是时间复杂度和空间复杂度 还有顺序表文章讲解和分享&#xff0c;如有不对可以评论区指导。 时间复杂度例题 // 计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N){if(N…...

linux创建用户、切换用户、删除用户

创建用户 # 创建新用户 sudo useradd newuser# 设置新用户的密码 sudo passwd newuser切换用户 # 切换到新用户 su newuser# 验证用户切换 whoami 删除用户 # 删除用户 sudo userdel -r username# 验证用户是否已被删除 grep username /etc/passwd 如果删除用户时提示&…...

BC64 牛牛的快递(c++)

牛牛的快递 题目描述输入描述输出描述示例代码 解题思路例如 题目描述 牛牛正在寄快递&#xff0c;他了解到快递在 1kg 以内的按起步价 20 元计算&#xff0c;超出部分按每 kg 1元计算&#xff0c;不足 1kg 部分按 1kg计算。如果加急的话要额外付五元&#xff0c;请问牛牛总共要…...

离线linux通过USB连接并使用手机网络

离线linux通过USB连接并使用手机网络 引场景 引 离线环境要安装一些软件特别麻烦&#xff0c;要自己去官网下载对应的包&#xff0c;然后上传到服务器上&#xff0c;再解压&#xff0c;编译&#xff0c;执行&#xff0c;配置变量等等&#xff0c;错一步都可能安装失败。有网络…...

I2C总线8位IO扩展器PCF8574

PCF8574用于I2C总线的远程8位I/O扩展器 PCF8574国产有多个厂家有替代产品&#xff0c;图示为其中一款HT8574 1 产品特点 低待机电流消耗&#xff1a;10 uA&#xff08;最大值&#xff09; I2C 转并行端口扩展器 漏极开路中断输出 与大多数微控制器兼容 具有大电流驱动能力的闭…...

webClient + fastJSON2 获取json格式的数据,同时解析至java class 并 下划线转驼峰

webClient中 .accept(MediaType.APPLICATION_JSON) 决定返回值是什么格式一般情况可以不写&#xff0c;但这里要获取JSON格式的 .bodyToMono(String.class)指定返回类型 fastJSON2中 Student student JSON.parseObject(result, Student.class, JSONReader.Feature.SupportSm…...

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3…...

OpenCV--形态学

形态学 形态学图像全局二值化自适应阈值腐蚀操作膨胀开运算闭运算形态学梯度顶帽操作黑帽操作 形态学 从图像中提取对表达和描绘区域形状有意义的图像分量 图像全局二值化 import cv2 import numpy as np """ 图像全局二值化--0与255 二值化的主要目的是通过…...

【LinuxC语言】IP地址相关的函数

文章目录 前言inet_addr()inet_aton()inet_ntoa()示例代码总结前言 在Linux C语言编程中,处理网络通信是一个核心主题,其中涉及到的IP地址相关函数扮演着至关重要的角色。这些函数允许我们在不同的网络层次上操作和管理IP地址,从而实现有效的数据传输和通信控制。本文将介绍…...

QT事件处理系统之五:自定义事件的发送案例 sendEvent和postEvent接口

1、案例 双击窗口,会发送 自定义事件,然后在事件过滤中心进行拦截处理自定义事件。 2、核心代码 /*解释:双击窗口时,将产生双击事件,然后该事件被包裹成一个对象,随后将会被发往event事件中心,然后进行事件的处理(Widget对象);因为m_lineEdit开启了事件过滤机制,所…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...