以下是一个使用Ansible字典来按主机、名称和版本进行软件包验证的示例解决方案:
---
- name: 验证软件包
hosts: all
gather_facts: true
vars:
required_packages:
- name: package1
version: 1.0
- name: package2
version: 2.0
tasks:
- name: 获取主机已安装软件包信息
package_facts:
- name: 验证软件包
assert:
that:
- item.name in ansible_facts.packages
- ansible_facts.packages[item.name].version == item.version
fail_msg: "软件包 {{ item.name }} 的版本不匹配或未安装"
loop: "{{ required_packages }}"
在上述示例中,我们首先定义了一个名为required_packages
的字典,其中包含了要验证的软件包的名称和版本。然后,我们使用package_facts
模块收集主机的软件包信息。
接下来,我们使用assert
模块来验证软件包。我们使用loop
来遍历required_packages
字典中的每个软件包。在每次循环中,我们使用assert
来检查主机是否安装了指定的软件包,并且其版本与要求的版本匹配。如果检查失败,将打印错误消息。
请注意,这个示例假设你的主机已经配置好了Ansible和合适的连接插件。确保将hosts
设置为你要验证的主机的适当组或主机列表。
下一篇:Ansible字典查找