Ansible 批量运维实战:openEuler 环境一键安装 httpd 服务

前言

在多主机运维场景下,Ansible 可实现批量配置、软件部署等自动化操作,大幅提升运维效率。本文基于 openEuler 操作系统,使用 Ansible 的 dnf 模块批量安装 httpd 服务,并对执行过程中的警告、报错信息进行详细解读,同时给出优化方案,适合 Linux 运维初学者参考。

一、环境说明

  • 控制节点:test01(已安装 Ansible)
  • 被管理节点:多台 openEuler 主机(IP 及主机名已配置在 Ansible 清单)
  • 模块:Ansible dnf 模块
  • 部署软件:httpd(Apache 服务)

二、配置 Ansible 主机清单

编辑 Ansible 默认主机清单文件,添加被管理节点信息:

运行

复制代码
vim /etc/ansible/hosts

在文件中配置对应主机 IP 或主机名,保存退出即可。

三、执行批量安装 httpd 命令

使用 Ansible 的 dnf 模块,指定安装 httpd 为最新版本,并禁用 source 仓库:

运行

复制代码
ansible all -m dnf -a "name=httpd state=latest disablerepo=source"

四、执行结果详细解读

1. 执行成功状态:CHANGED

对应主机:192.168.190.143、192.168.190.144、192.168.190.145含义:目标主机未安装过 httpd 及依赖,Ansible 完成全新安装,操作生效。

2. 报错状态:FAILED!

对应主机:test01、test02、test03报错核心信息:软件包xxx已经安装真实含义:并非执行失败,而是目标主机已存在 httpd 及其依赖包,dnf 不允许重复安装,属于正常提示。

3. Python 解释器警告

复制代码
[WARNING]: Platform linux on host ... is using the discovered Python interpreter

该警告仅为 Ansible 自动识别 Python 路径的提示,不影响任何功能,可直接忽略。

这个警告完全不用管,不影响任何功能!


Ps.你真正想知道的:我成功了吗?

成功了!

  • 远程机器都装上了
  • 本地机器本来就有
  • 整个批量部署任务达成目标

五、如果你想让 "已安装" 的机器不报错、变绿色(正常)

把命令里的

复制代码
state=latest

改成

复制代码
state=present

最终命令:

运行

复制代码
ansible all -m dnf -a "name=httpd state=present disablerepo=source"

这样:

  • 没装 → 安装

  • 已装 → 不报错,显示 SUCCESS 绿色


六、知识补充

Ansible dnf 模块中 state=latest 与 state=present 区别

在使用 Ansible 批量安装软件时,state 参数决定了包管理的最终状态:

  1. state=latest 表示确保目标软件为最新版本。若软件已安装且为最新版,dnf 会因无法重复安装返回 FAILED 错误;若版本较旧,则自动升级至最新版。适用于批量升级场景。
  2. state=present 表示仅确保软件已安装即可。若未安装则自动安装,若已安装则不执行任何操作,返回 SUCCESS 绿色状态。适用于环境初始化、批量部署场景。

七、总结

  1. Ansible dnf 模块可在 openEuler 系统中高效批量部署软件;
  2. FAILED 不一定是故障,需结合报错信息判断是否为包已存在;
  3. 使用state=present可适配更多场景,避免不必要的报错提示;
  4. Python 解释器警告为正常提示,无需处理。
相关推荐
雷工笔记21 分钟前
MES 系统 设备保养管理模块详细设计方案
运维·数据库
晚风_END2 小时前
Linux|操作系统|zfs文件系统的使用详解
linux·运维·服务器·数据库·postgresql·性能优化·宽度优先
科研前沿8 小时前
镜像视界 CameraGraph™+多智能体:构建自感知自决策的全域空间认知网络技术方案
大数据·运维·人工智能·数码相机·计算机视觉
暴力求解8 小时前
Linux---线程基础
linux·运维·服务器
晚风_END8 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
咖喱o9 小时前
QinQ/VLAN Stacking
linux·运维·服务器·网络
sduwcgg10 小时前
IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录
运维·服务器
marsh020611 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
摇滚侠11 小时前
Docker 如何查询挂载的目录
运维·docker·容器
勇闯逆流河12 小时前
【Linux】linux进程控制(进程池的详解与实现)
linux·运维·服务器