我創建了一個手冊,用於檢查是否在基於RHEL的服務器上使用「yum」Ansible模塊安裝了程序包,然後顯示結果。在ansible playbook中僅顯示yum列表中的某些字典值
我的任務如下;
角色/ 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模塊還會顯示「available」包。當使用包名稱(例如python)作爲多個可用包運行此playbook時,輸出可能變得非常冗長。我的目標是讓劇本僅輸出某些字典值(我相信它們被稱爲字典值)。
如何格式化結果以僅顯示諸如「狀態」(已安裝或未安裝)和軟件包名稱等潛在信息?
我嘗試以與使用括號或花括號顯示主機的事實相同的方式顯示信息,例如{{results.state}},但Ansible抱怨變量未定義。我一直無法在網上找到這個問題的類似例子。我的目標是簡單而乾淨地顯示是否安裝了軟件包列表,而沒有所有額外的臃腫信息。
感謝。
謝謝你,這個工作對我的需要。 – Avalon
我注意到yum模塊正在返回一個狀態:幾乎安裝了所有的東西。例如,我在我的手冊中插入了「假冒包裝」。這個包顯然不存在,並且不可用。儘管如此,Ansible仍然會將狀態恢復爲「已安裝」狀態。 – Avalon