gpt4 book ai didi

ansible_facts.packages "skipping"我的包检查

转载 作者:行者123 更新时间:2023-12-05 01:50:03 25 4
gpt4 key购买 nike

我想检查我的包是否已安装,但我希望所有包类型都有一个名称。

让我解释一下:我正在寻找 OB2 包,但它们有很多,所以我正在寻找 OB2* 但它跳过了我的搜索。

我用不带通配符的名称 (*) 进行了测试,但效果并不好:

- name: Gather the package facts
ansible.builtin.package_facts:
manager: auto

- name: Print the package facts
ansible.builtin.debug:
var: ansible_facts.packages

- name: Check whether a package called OB2 is installed
ansible.builtin.debug:
msg: "{{ ansible_facts.packages['OB2*'] | length }} versions of OB2are installed!"
when: "'OB2*' in ansible_facts.packages"

是否有解决方案可以在 ansible_facts.package 中找到所有以 OB2 开头的输出?

最佳答案

ansible_facts.packages is a dictionary .该字典中没有名为 OB2*OB2 的键,因为没有包具有这个确切的名称。

如果要获取名称以字符串 "OB2" 开头的所有键,一种方法是过滤掉所有其他键。

这是一个说明这个概念的剧本。例如,我将 “zlib” 用作前缀。只需将其改回适合您需要的任何内容即可

 ---
- hosts: localhost
gather_facts: false

vars:
package_prefix: "zlib"

filtered_packages: "{{ ansible_facts.packages | dict2items
| selectattr('key', 'match', package_prefix)
| map(attribute='value') | flatten }}"

tasks:
- name: gather package facts
ansible.builtin.package_facts:

- name: debug the raw variable
debug:
var: filtered_packages

- name: count relevant packages
vars:
pkg_num: "{{ filtered_packages | count }}"
debug:
msg: "There are {{ pkg_num }} packages
which name starts with {{ package_prefix }}"

- name: show some info about relevant packages
debug:
msg: "Package named {{ item.name }} is in category {{ item.category }}
and has version {{ item.version }}"
loop: "{{ filtered_packages }}"

在我的 Ubuntu 本地机器上给出:

PLAY [localhost] *****************************************************************************************************************

TASK [gather package facts] ******************************************************************************************************
ok: [localhost]

TASK [debug the raw variable] ****************************************************************************************************
ok: [localhost] => {
"filtered_packages": [
{
"arch": "amd64",
"category": "libs",
"name": "zlib1g",
"origin": "Ubuntu",
"source": "apt",
"version": "1:1.2.11.dfsg-2ubuntu1.3"
},
{
"arch": "amd64",
"category": "libdevel",
"name": "zlib1g-dev",
"origin": "Ubuntu",
"source": "apt",
"version": "1:1.2.11.dfsg-2ubuntu1.3"
}
]
}

TASK [count relevant packages] ***************************************************************************************************
ok: [localhost] => {
"msg": "There are 2 packages which name starts with zlib"
}

TASK [show some info about relevant packages] ************************************************************************************
ok: [localhost] => (item={'name': 'zlib1g', 'version': '1:1.2.11.dfsg-2ubuntu1.3', 'arch': 'amd64', 'category': 'libs', 'origin': 'Ubuntu', 'source': 'apt'}) => {
"msg": "Package named zlib1g is in category libs and has version 1:1.2.11.dfsg-2ubuntu1.3"
}
ok: [localhost] => (item={'name': 'zlib1g-dev', 'version': '1:1.2.11.dfsg-2ubuntu1.3', 'arch': 'amd64', 'category': 'libdevel', 'origin': 'Ubuntu', 'source': 'apt'}) => {
"msg": "Package named zlib1g-dev is in category libdevel and has version 1:1.2.11.dfsg-2ubuntu1.3"
}

PLAY RECAP ***********************************************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

关于ansible_facts.packages "skipping"我的包检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73483810/

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