Ansible:如何基于RHEL版本控制RPM包安装,仅在RHEL7部署特定包
如何在Ansible中仅针对RHEL 7主机安装指定RPM包
当然可以实现,Ansible内置了系统版本相关的事实变量,直接用when条件就能精准控制任务只在RHEL 7上执行,不用手动解析/etc/redhat-release文件。
修改后的任务如下:
- name: install libselinux-python (only on RHEL 7) yum: name: libselinux-python state: present when: ansible_distribution_major_version == '7'
说明:
ansible_distribution_major_version是Ansible自动收集的系统事实变量,针对RHEL 7会返回字符串'7',RHEL 8则返回'8',用这个变量做判断最直接可靠。- 加上
when条件后,这个安装任务只会在满足条件的主机上执行,RHEL 8主机会直接跳过该任务。
验证方式(可选)
如果想确认目标主机的系统版本变量值,可以先执行以下Ad-Hoc命令查看:
ansible <主机组/主机名> -m setup -a "filter=ansible_distribution_major_version"
比如针对RHEL 7主机,输出会类似:
xxx.example.com | SUCCESS => { "ansible_facts": { "ansible_distribution_major_version": "7" }, "changed": false }
内容的提问来源于stack exchange,提问作者Judy
相关产品推荐
相关产品推荐

