我创建了一个playbook,它将使用“yum”Ansible模块检查是否在基于RHEL的服务器上安装了一个包,然后显示结果 .
我的任务如下;
角色/ LINUX / yumcheck /任务/ 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)运行此playbook作为多个可用包时,输出可能变得非常冗长 . 我的目标是让剧本只输出某些字典值(我相信它们被称为字典值) .
如何将结果格式化为仅显示诸如“状态”(已安装与否)以及包名称之类的相关信息?
我尝试以与使用括号或大括号显示有关主机的事实相同的方式显示信息,例如{}但是Ansible抱怨变量未定义 . 我无法在网上找到这个问题的类似例子 . 我的目标是简单而干净地显示是否安装了包列表而没有所有额外的膨胀信息 .
谢谢 .
2 回答
您可以使用 Map 过滤器来提取您所追求的变量,http://docs.ansible.com/ansible/playbooks_filters.html#extracting-values-from-containers
这里有一个例子,http://docs.ansible.com/ansible/ec2_vpc_subnet_facts_module.html
应该给你州的 Value .
使用map过滤器: