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

指定YUM却要求DNF?Amazon Linux 2 Ansible执行异常排查

问题:Ansible yum模块在Amazon Linux 2实例上执行失败(GHA Ubuntu 22.04运行器)

场景概述

使用GitHub Actions工作流,通过Ubuntu 22.04运行器在Amazon Linux 2 EC2实例上执行Ansible剧本时,所有调用ansible.builtin.yum模块的步骤全部失败,但直接用shell模块执行yum命令可正常运行。

代码示例与报错详情

失败的yum模块代码

- name: 'Install selinux dependency packages'
  ansible.builtin.yum:
    name: '{{ yum_selinux_packages }}'
    state: present
    disable_gpg_check: true
  when: 'os != "amzn2023"'

报错输出

fatal: [default]: FAILED! => {"ansible_facts": {"pkg_mgr": "unknown"}, "changed": false, "msg": ["Could not detect which major revision of dnf is in use, which is required to determine module backend.", "You should manually specify use_backend to tell the module whether to use the dnf4 or dnf5 backend})"]}

对比测试结果

  • 正常运行的shell模块代码:
- name: "yum update"                    # 执行正常
  ansible.builtin.shell: 'yum update *'
  become: true
  • 执行失败的yum模块更新代码:
- name: 'Update all yum packages'  # 执行失败
  ansible.builtin.yum:
    name: '*'
    state: latest
  become: true

问题触发背景

该问题在更新GHA运行器后出现,更新操作包含以下命令(目的是修复Snyk检测到的漏洞):

&& rm -rf /home/runner/.local/lib/python3.10/site-packages/ansible_collections/grafana \
&& rm -rf ./.local/lib/python3.10/site-packages/ansible_collections/community/digitalocean \
&& sudo apt install -y nodejs npm \
&& curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash \
&& . "$NVM_DIR/nvm.sh" && nvm install 20 \
&& sudo npm install npm@latest -g

无效的尝试操作

  • 给yum模块添加use_backend: yum参数,依然报错
  • 添加use_backend: dnf参数,要求安装python3-dnf,但Amazon Linux 2不兼容DNF工具

根本原因与解决方案

根本原因

Ansible最新版本已移除原生的yum模块,默认依赖DNF包管理工具,但Amazon Linux 2系统并未适配DNF,导致模块无法正确识别系统的包管理器类型。

解决方案

将Ansible版本回退到仍保留原生yum模块的旧版本,确保与Amazon Linux 2的yum工具兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:11:05