linux - 仅显示 ansible playbook 中 yum 列表中的某些字典值

标签 linux ansible yum rhel7

我创建了一个 playbook,它将使用“yum”Ansible 模块检查软件包是否安装在基于 RHEL 的服务器上,然后显示结果。

我的任务如下;

角色/linux/yumcheck/tasks/main.yml

- name: Check for installed packages
  yum: list={{ item.package }} 

  with_items:
  - { package: 'package1' }
  - { package: 'package2' }
  - { package: 'package3' }

  register: yumlist 
- debug: var=yumlist

剧本按照以下格式正确输出结果;

    "results": [
        {
            "_ansible_item_result": true, 
            "_ansible_no_log": false, 
            "changed": false, 
            "invocation": {
                "module_args": {
                    "conf_file": null, 
                    "disable_gpg_check": false, 
                    "disablerepo": null, 
                    "enablerepo": null, 
                    "exclude": null, 
                    "install_repoquery": true, 
                    "list": "python", 
                    "name": null, 
                    "state": "installed", 
                    "update_cache": false, 
                    "validate_certs": true
                }, 
                "module_name": "yum"
            }, 
            "item": {
                "package": "python"
            }, 

yum list 模块还将显示“可用”软件包。当使用作为多个可用包的包名称(例如 python)运行此剧本时,输出可能会变得非常冗长。我的目标是让剧本仅输出某些字典值(我相信它们被称为字典值)。

如何格式化结果以仅显示相关信息,例如“状态”(已安装或未安装)和包的名称?

我尝试以与使用方括号或大括号显示有关主机的事实相同的方式显示信息,例如 {{ results.state}} 但 Ansible 提示变量未定义。我在网上找不到这个问题的类似例子。我的目标是简单、干净地显示是否安装了软件包列表,而没有所有额外的臃肿信息。

谢谢。

最佳答案

使用map过滤器:

- debug: msg="{{ yum_list.results | map(attribute='invocation.module_args.state') | list }}"

关于linux - 仅显示 ansible playbook 中 yum 列表中的某些字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648049/

相关文章:

c - umount 是否异步释放底层设备?

mysql - 在centos(Linux)中从mysql删除数据库

linux - "ant -version"返回/usr/bin/build-classpath : error: Some specified jars were not found

ipv4 - Ansible - 替换 ipv4 地址的主机部分

centos - 使用 Yum 指定可重定位 RPM 的安装位置

linux - 如何为 bash 命令设置多个环境变量

Ansible Remote_user 与 ansible_user

Python Ansible 评估任务的输出

centos - "yum install tcltls"在 centOS 上给出错误 "No package tcltls available"

linux - centos6.5的yum报错: Input/output error