【RH294知识点汇总】第 3 章 《 管理变量和事实 》3
目录第三部分事实Facts管理3.1 什么是事实3.2 新旧格式兼容对照表3.3 事实收集的两种控制方式方式一关闭事实收集方式二子集收集按需采集3.4 自定义事实扩展系统信息第一步在受管主机创建事实文件第二步编写事实内容JSON 或 INI 格式第三步在 Playbook 中使用3.5 魔法变量Magic Variables第三部分事实Facts管理3.1 什么是事实# Ansible 自动采集的系统信息示例 ansible_facts: hostname: web01 fqdn: web01.example.com default_ipv4: address: 192.168.1.10 kernel: Linux 5.10.0 memtotal_mb: 8192 processor_vcpus: 4 distribution: CentOS distribution_version: 7.9事实的用途 自动检测主机配置无需手动输入 根据系统信息动态调整配置 用于条件判断和日志记录3.2 新旧格式兼容对照表新格式推荐旧格式已过时含义ansible_facts.hostnameansible_hostname主机名ansible_facts.fqdnansible_fqdn完全域名ansible_facts.default_ipv4.addressansible_default_ipv4.addressIP地址ansible_facts.kernelansible_kernel内核版本ansible_facts.memtotal_mbansible_memtotal_mb总内存最佳实践优先使用新格式确保未来兼容性3.3 事实收集的两种控制方式方式一关闭事实收集--- - name: 快速执行跳过事实采集 hosts: all gather_facts: no # ⚡ 加速执行 tasks: - name: 执行任务 debug: msg跳过了事实采集 # 手动采集 - name: 手动采集事实 setup: filter: ansible_os_family # 只采集特定事实方式二子集收集按需采集--- - name: 按需采集事实 hosts: all gather_subset: - hardware # 采集硬件信息 - network # 采集网络信息 - !facter # 排除 facter 信息 tasks: - name: 显示 CPU 数量 debug: msgCPU: {{ ansible_facts.processor_vcpus }}性能对比完整采集 3-5 秒 ⏱️ 子集采集 1-2 秒 ⏱️⏱️ 无采集 0.5 秒 ⏱️⏱️⏱️3.4 自定义事实扩展系统信息第一步在受管主机创建事实文件# 在受管主机执行 sudo mkdir -p /etc/ansible/facts.d # 创建自定义事实文件必须 .fact 后缀 sudo vi /etc/ansible/facts.d/custom.fact第二步编写事实内容JSON 或 INI 格式{ app_name: myapp, app_version: 2.0.1, environment: production, deploy_date: 2024-01-15 }或 INI 格式[app] namemyapp version2.0.1 environmentproduction deploy_date2024-01-15第三步在 Playbook 中使用--- - name: 使用自定义事实 hosts: all gather_facts: yes tasks: - name: 显示自定义事实 debug: msg: 应用版本: {{ ansible_facts.ansible_local.custom.app.version }} - name: 条件判断 debug: msg: 这是生产环境 when: ansible_facts.ansible_local.custom.app.environment production关键点✅ 文件必须在/etc/ansible/facts.d/目录✅ 文件后缀必须是.fact✅ 格式仅支持 JSON 或 INI不支持 YAML✅ 调用格式ansible_facts.ansible_local.分类.键3.5 魔法变量Magic Variables这四个变量在任何 Playbook 中都可用无需定义1️⃣hostvars获取受管主机的非事实变量1️⃣group_names查看当前主机所属的所有组1️⃣groups获取清单中所有主机组和主机1️⃣inventory_hostname获取清单中定义的主机名