【Ansible】(八)Ansible 事实
在日常 Ansible 自动化运维工作中,事实采集是实现灵活部署、差异化运维的核心手段。Ansible 能够自动抓取远端服务器各类系统底层信息,无需人工手动录入,直接以变量形式调用,依托这些数据编写脚本,能够适配不同系统、不同配置的服务器,大幅提升自动化脚本的通用性与实用性。
目录
一、Ansible 事实基础实操
1. 查看全量主机事实信息
运维调试阶段,想要直观查看服务器可采集的所有系统数据,可直接编写简易剧本输出全部事实内容,涵盖网络、系统、硬件等完整信息。
---
- name: 批量查看远端主机全部事实信息
hosts: all
tasks:
- name: 打印系统采集所有事实
ansible.builtin.debug:
var: ansible_facts
运行剧本后,终端会清晰展示主机主机名、系统内核、网卡地址、磁盘分区、硬件参数等数据,所有采集内容均可直接调用。
2. 常用系统事实调用
实际运维部署中,只需调取核心系统参数即可完成业务配置,常用信息调用写法简洁规范,适配各类部署场景。
---
- name: 调用核心系统事实完成信息输出
hosts: all
tasks:
- name: 展示主机基础运维信息
ansible.builtin.debug:
msg:
主机名称:{{ ansible_facts.hostname }}
操作系统版本:{{ ansible_facts.distribution }}
业务内网IP:{{ ansible_facts.default_ipv4.address }}
系统内核版本:{{ ansible_facts.kernel }}
3. 启停事实采集优化执行效率
默认执行剧本时,Ansible 会自动执行事实采集流程,该流程会消耗少量执行时间。若脚本无需依赖系统信息,可直接关闭采集功能,缩减整体运行时长。
---
- name: 关闭自动事实采集精简执行流程
hosts: all
gather_facts: no
tasks:
- name: 执行无依赖简易运维任务
ansible.builtin.debug:
msg: 无需采集系统信息,快速执行任务
若前期关闭采集,后续流程中需要使用系统事实,可通过内置模块手动发起采集:
tasks:
- name: 手动触发远端主机事实采集
ansible.builtin.setup:
二、自定义本地事实配置
除了系统自带的原生事实,运维人员可根据业务需求,自定义业务专属配置参数,适配不同项目、不同环境的部署需求。自定义事实文件统一存放至远端主机 /etc/ansible/facts.d/ 目录,文件后缀固定为 .fact,支持多种配置格式。
自定义事实配置文件内容示例:
[packages]
web_package = httpd
db_package = mariadb-server
[users]
admin_user = admin
配置完成后,编写剧本调用自定义业务参数,实现业务配置统一管理:
---
- name: 调用自定义业务事实参数
hosts: all
tasks:
- name: 读取自定义部署配置
ansible.builtin.debug:
msg: "网页服务部署软件包:{{ ansible_facts.ansible_local.packages.web_package }}"
三、魔法变量实战应用
Ansible 内置多款无需手动定义的魔法变量,多用于多主机集群运维,轻松实现集群内主机信息互通,简化集群联动部署流程。
1. hostvars 跨主机调取数据
在集群架构中,可借助该变量,在一台服务器上直接获取集群内其他主机的 IP、配置等信息,常用于服务集群互联配置。
- name: 跨主机调取集群服务器内网地址
ansible.builtin.debug:
var: hostvars['db_server'].ansible_facts.default_ipv4.address
2. group_names 识别主机所属分组
快速判定当前运行剧本的主机归属主机组,以此为依据执行差异化运维任务。
- name: 查看当前主机所属主机分组
ansible.builtin.debug:
var: group_names
知识问
Q1:简述 Ansible 事实的核心作用
A:Ansible 事实是工具自动从远端服务器抓取的全套系统数据,包含系统版本、网络地址、硬件参数等内容,可直接作为变量使用,依托事实数据编写自动化脚本,能够适配不同服务器环境,实现差异化、智能化批量运维。
Q2:标准调取主机默认内网 IP 的写法是什么
A:行业通用规范写法为 {{ ansible_facts.default_ipv4.address }},兼容性更强,可规避旧版本变量写法出现的冲突问题。
Q3:自定义业务事实文件存放路径与格式要求是什么
A:文件必须放置在受管主机 /etc/ansible/facts.d/ 目录下,文件后缀统一使用 .fact,支持 INI、JSON 两种主流配置格式,采集后统一归集至ansible_local层级调用。
所有评论(0)