如何用Ansible Playbook基于ansible_facts输出RHEL 7.7 (x86_64)格式信息
RHEL系统信息格式化Ansible Playbook实现方案
实现逻辑
完全替代原Shell脚本的文本解析逻辑,直接基于Ansible内置Facts采集能力获取系统标准化属性,无需手动读取/etc/redhat-release做文本切割,通过变量拼接直接生成要求格式的输出:
- 发行版名称适配:检测到目标主机为Red Hat系系统时,将Facts默认返回的
RedHat替换为要求的RHEL前缀 - 版本号取值:直接读取采集到的完整发行版版本号,无需拆分主、次版本字段再手动拼接
- 架构取值:直接读取系统架构标识,和原脚本中
uname -i的输出结果完全一致
完整Playbook代码
--- - name: 输出指定格式的目标主机系统信息 hosts: <替换为你的目标主机组/目标主机地址> gather_facts: yes # 显式开启系统信息采集,该配置默认为开启状态 tasks: - name: 拼接格式化后的系统信息字符串 ansible.builtin.set_fact: formatted_os_info: >- {{ (ansible_distribution == 'RedHat') | ternary('RHEL', ansible_distribution) }} {{ ansible_distribution_version }} ({{ ansible_architecture }}) - name: 打印最终格式化结果 ansible.builtin.debug: msg: "{{ formatted_os_info }}"
落地说明
- 对x86_64架构的RHEL 7.7主机执行该Playbook,最终输出内容为
RHEL 7.7 (x86_64),完全匹配任务要求的格式 - 相比原Shell脚本的文本解析方案,该实现基于Ansible的标准化Facts采集能力,不会因为发行版描述文件的文本变动出现解析异常
- 兼容所有受支持的RHEL大、小版本,不需要根据版本迭代调整解析规则
内容的提问来源于stack exchange,提问作者Praveen Kumar
相关产品推荐
相关产品推荐

