You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ansible Playbook遍历指定软件包列表而非仅检查vim

如何修改Ansible Playbook遍历指定软件包列表输出版本信息

修改后的完整Playbook

---
- hosts: [localhost]
  remote_user: "max"
  become: no
  vars:
    # 在这里定义你要检查的软件包名称列表
    packages_to_check:
      - vim
      - nginx
      - curl
  tasks:
    - name: 收集已安装软件包信息
      package_facts:
        manager: auto

    - name: 遍历输出各软件包版本
      debug:
        msg: >-
          {% if item in ansible_facts.packages %}
          {{ ansible_facts.packages[item][0]['name'] }} is {{ ansible_facts.packages[item][0]['version'] }}
          {% else %}
          {{ item }} 未安装
          {% endif %}
      loop: "{{ packages_to_check }}"

关键修改说明

  1. 定义待检查包列表:通过vars块定义packages_to_check数组,把需要检查的包名全部放入其中,后续要调整检查范围直接修改这个列表即可。
  2. 添加循环遍历逻辑:给debug任务加上loop: "{{ packages_to_check }}",让任务逐个处理列表里的每个软件包。
  3. 增加容错判断:用Jinja2条件语句判断当前包是否存在于已收集的包事实中,避免因某个包未安装导致Playbook报错中断,同时给出明确的状态提示。

执行示例输出

TASK [遍历输出各软件包版本] ****************************************************************************************************************************************************************
ok: [localhost] => (item=vim) => 
  msg: vim is 2:8.2.3995-1ubuntu2.17
ok: [localhost] => (item=nginx) => 
  msg: nginx 未安装
ok: [localhost] => (item=curl) => 
  msg: curl is 7.81.0-1ubuntu1.14

内容的提问来源于stack exchange,提问作者Maksim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:09:50