最近给一批 openEuler 22.03 LTS SP4 的虚拟机搭自动化控制机,准备用 Ansible 统一管理。原以为装个 Ansible 就是一条 dnf install -y ansible 的事,结果在最小化安装的干净环境里敲下去,系统直接回了一句 No package ansible available。我第一反应是源没配好,但仔细看了 /etc/yum.repos.d/openEuler.repo,OS、源都正常,问题出在 openEuler 默认的 BaseOS 仓库里本来就不带 Ansible,需要额外启用 EPOL 仓库或者走 Python 环境安装。
如果你是刚在 VMware 里装好 openEuler,想在控制机上跑 Ansible 的运维新手,这篇可以直接“抄作业”。我会把安装之前的环境检查、软件源原理、两种安装方案、一键脚本、第一个 Playbook 实战,以及我踩过的坑全部整理出来。无论你的系统是 22.03 LTS 还是 24.03 LTS,只要跟着下面的思路走,大概率不会翻车。
1. openEuler 环境准备:装 Ansible 之前先把这几件事搞清楚
1.1 先别急着敲命令:确认你的 openEuler 版本和架构
很多人拿到机器就直接复制网上的安装命令,也不管自己的系统是哪个小版本、CPU 是什么架构。在 openEuler 上,这很容易踩到 404 和找不到包的坑。
先登录系统,执行下面两条命令:
bash复制cat /etc/os-release
uname -m
/etc/os-release 能看到系统版本,比如 PRETTY_NAME="openEuler 22.03 (LTS-SP4)",uname -m 决定你用的是 x86_64 还是 aarch64。这两项信息后面配置 EPOL 源的时候必须用到,因为 openEuler 软件仓库的路径格式是:
code复制https://repo.openeuler.org/openEuler-版本号/仓库目录/架构/
比如说 openEuler 22.03 LTS SP4 的 x86_64 架构,EPOL 完整路径就是:
code复制https://repo.openeuler.org/openEuler-22.03-LTS-SP4/EPOL/main/x86_64/
如果你在 VMware 里用默认模板安装,通常是 x86_64。如果是在树莓派或者 ARM 服务器上装的,就要把 url 里的 x86_64 手动改成 aarch64。网络上的教程大多默认 x86_64,新手在 ARM 机器上照抄,自然就装不上。
1.2 openEuler 默认软件源与 EPOL 的关系
先解释一个关键概念。openEuler 的软件仓库不是只有一个“源”,它分了几层:BaseOS、EPOL、update、debuginfo 等。平时执行 dnf install 默认只去启用的仓库里找软件包。
openEuler 的 BaseOS 仓库里放的是操作系统基础组件,比如 openssh、systemd、tar 这些。而 Ansible、Nginx、Docker 这类常见但非系统基础的软件,很多被放进了 EPOL,全称是 Extra Packages for openEuler,可以理解为 openEuler 的“扩展软件包仓”。
为什么 openEuler 出厂没有默认启用全部 EPOL?原因很简单,如果所有扩展包仓库默认启用,用户执行 dnf update 时可能要下载大量并不需要的软件包元数据,速度慢而且没意义。所以很多版本只是把仓库配置文件放好,或者需要你额外添加。
查看当前已经启用的仓库:
bash复制dnf repolist --enabled
如果能在结果里看到 openEulerEPOL-openEuler-22.03-LTS-SP4 之类的记录,说明 EPOL 已经启用。如果看不到,就需要继续看下面 2.1 节里的手动配置。
另一个常见疑问是“我要不要用 CentOS 的 EPEL 源”。答案是不建议混用。openEuler 虽然兼容 RHEL/CentOS 的一些包管理习惯,但软件包编译依赖、版本号都有差异,强行把 CentOS 的 EPEL 源加进来,轻则依赖冲突,重则把系统 Python 环境搞乱。openEuler 自己的 EPOL 已经覆盖了 Ansible,没必要舍近求远。
1.3 网络、时间同步和 Python 环境也要提前确认
安装 Ansible 之前,系统至少要有基本的网络连通能力。控制机需要能访问 repo.openeuler.org,否则无论 dnf 还是 pip 都没法下载。如果你在 VMware 里用了 NAT 模式,宿主机能上网的前提下,虚拟机默认也能访问外网,一般没问题。
时间同步也很关键。用 Ansible 连接被管理机器或者下载加密源时,如果系统时间和实际时间差太多,可能出现 HTTPS 证书验证失败、SSH 认证异常。最稳妥的做法是在安装之前把 chrony 启起来:
bash复制systemctl start chronyd
systemctl enable chronyd
如果没有安装 chrony,可以先用 dnf install -y chrony 装一下。
还要确认 python3 是否存在。Ansible 本身是基于 Python 开发的工具,虽然现在用 dnf 安装时系统会自动拉依赖,但如果你准备走 pip 路线,一个可用的 Python 环境是硬前提。在 openEuler 上执行:
bash复制python3 --version
如果提示 command not found,属于最小化安装时没装 Python,可以先用 dnf install -y python3 补上。下面的一键脚本里也会处理这个情况。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 保姆级实操:Ansible 在 openEuler 上一键安装全流程
2.1 方法一:通过 dnf 直接安装原生 Ansible
最优先推荐的方案是 dnf 安装。因为这样装出来的 Ansible 会直接和系统 Python 依赖、文件路径做好适配,后续卸载也方便。
理论上,如果你的系统已经启用了 EPOL,直接执行:
b复制
