如何在AWX剧本中通过ansible.builtin.package_facts输出Nginx版本信息
问题分析与修正方案
原剧本存在以下几个问题:
- debug模块同时使用
var和msg参数会产生冲突,无法正确输出自定义提示信息 - 错误使用
ansible_version变量,该变量指向Ansible自身版本,而非Nginx的版本 - 未处理Nginx未安装的场景,无法反馈实例的未安装状态
- 多余的
register: op配置,debug模块的输出无需注册变量
修正后的Ansible剧本
- name: Gather package facts ansible.builtin.package_facts: manager: auto - name: Check Nginx installation status and version ansible.builtin.debug: msg: "Nginx is installed, version: {{ ansible_facts.packages['nginx'][0].version }}" when: "'nginx' in ansible_facts.packages" - name: Notify if Nginx is not installed ansible.builtin.debug: msg: "Nginx is not installed on this instance" when: "'nginx' not in ansible_facts.packages"
说明
- 收集包事实后,通过两个debug任务分别处理已安装和未安装的场景
- 已安装时,从
ansible_facts.packages['nginx'][0].version中提取Nginx的版本号(packages['nginx']是一个列表,第一个元素即为已安装的包信息) - 未安装时,直接输出明确的提示信息
内容的提问来源于stack exchange,提问作者Chris Stevenson
相关产品推荐
相关产品推荐

