gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:42:12 27 4
gpt4 key购买 nike

我创建了一个 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 列表模块也会显示“可用”包。当使用作为多个可用包的包名称(例如 python)运行此 playbook 时,输出可能会变得非常冗长。我的目标是让剧本只输出某些字典值(我相信它们被称为字典值)。

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

我尝试以与使用方括号或花括号显示有关主机的事实相同的方式显示信息,例如 {{ 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com