簡體   English   中英

僅顯示Ansible劇本中yum列表中的某些詞典值

[英]Display only certain dictionary values from yum list in ansible 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)運行此劇本時,輸出可能會變得很冗長。 我的目標是使劇本僅輸出某些詞典值(我相信它們被稱為詞典值)。

如何格式化結果以僅顯示相關信息,例如“狀態”(是否安裝)和程序包名稱?

我嘗試以與使用括號或大括號顯示主機的事實相同的方式來顯示信息,例如{{results.state}},但Ansible抱怨變量未定義。 我無法在線找到該問題的類似示例。 我的目標是簡單明了地顯示是否安裝了軟件包列表,而沒有所有多余的信息。

謝謝。

您可能可以使用地圖過濾器提取您要查找的變量, http://docs.ansible.com/ansible/playbooks_filters.html#extracting-values-from-containers

這里有一個使用它的示例, http://docs.ansible.com/ansible/ec2_vpc_subnet_facts_module.html

yum_list.results[0].invocation.module_args.state

應該給你國家的價值。

使用地圖過濾器:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM