首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅显示ansible剧本中yum列表中的某些字典值

仅显示ansible剧本中yum列表中的某些字典值
EN

Stack Overflow用户
提问于 2016-09-22 20:09:55
回答 2查看 1.8K关注 0票数 2

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

我的任务是:

角色/linux/yumcheck/任务/main.yml

代码语言:javascript
复制
- name: Check for installed packages
  yum: list={{ item.package }} 

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

  register: yumlist 
- debug: var=yumlist

游戏手册以下列格式正确地输出结果;

代码语言:javascript
复制
    "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列表模块还将显示“可用”包。当使用包名(例如python)运行这个作为多个可用包的剧本时,输出可能会变得非常长。我的目标是让剧本只输出某些字典值(我相信它们被称为字典值)。

如何将结果格式化为只显示异常信息,如“状态”(已安装或未安装)和包名称?

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

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-23 07:47:23

使用地图过滤器:

代码语言:javascript
复制
- debug: msg="{{ yum_list.results | map(attribute='invocation.module_args.state') | list }}"
票数 2
EN

Stack Overflow用户

发布于 2016-09-23 04:15:05

您可以使用映射筛选器来提取您所追求的变量,filters.html#extracting-values-from-containers

这里有一个使用它的例子,module.html

代码语言:javascript
复制
yum_list.results[0].invocation.module_args.state

应该给你状态的价值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39648049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档