生产环境的完整 Bash 自动化安装脚本 ,支持 Ubuntu、Debian、RHEL/CentOS/Rocky/AlmaLinux
脚本功能
-
自动识别操作系统类型
-
Ubuntu:使用官方 PPA(最新稳定版)
-
RHEL 系:使用 EPEL(企业级可信源)
-
Debian / 其他:使用 虚拟环境 + 指定版本 pip 安装
-
支持自定义 Ansible 版本(默认
9.5.0,可修改) -
不污染系统 Python 环境
-
安装后自动验证
#!/bin/bash
=============================================================================
Ansible Production Installer
Supports: Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux
Author: zz-zjx
Version: 1.0
=============================================================================
set -euo pipefail
====== 配置区(可按需修改)======
ANSIBLE_VERSION="9.5.0" # 推荐固定版本(参考:https://pypi.org/project/ansible/#history)
VENV_PATH="/opt/ansible" # 虚拟环境路径================================
log() {
echo "[(date +'%Y-%m-%d %H:%M:%S')] INFO: *" >&2
}error() {
echo "[(date +'%Y-%m-%d %H:%M:%S')] ERROR: *" >&2
exit 1
}检查是否为 root
if [[ $EUID -ne 0 ]]; then
error "此脚本需以 root 权限运行"
fi检测操作系统
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=ID VER=VERSION_ID
else
error "无法识别操作系统"
filog "检测到系统: OS VER"
======================
Ubuntu:使用官方 PPA
======================
if [[ "$OS" == "ubuntu" ]]; then
log "使用 Ubuntu 官方 PPA 安装 Ansible..."# 安装依赖 apt update apt install -y software-properties-common gnupg # 添加 PPA(自动处理 GPG 密钥) add-apt-repository --yes --update ppa:ansible/ansible # 安装 apt install -y ansible log " Ubuntu: Ansible 已通过 PPA 安装" ansible --version exit 0fi
======================
RHEL/CentOS/Rocky/Alma:使用 EPEL
======================
if [[ "OS" == "rhel" || "OS" == "centos" || "OS" == "rocky" || "OS" == "almalinux" ]]; then
log "使用 EPEL 仓库安装 Ansible..."# 启用 EPEL if ! dnf list installed epel-release &>/dev/null; then dnf install -y epel-release fi # 安装 Ansible dnf install -y ansible log " RHEL 系: Ansible 已通过 EPEL 安装" ansible --version exit 0fi
======================
Debian / 其他系统:使用虚拟环境 + pip
======================
if [[ "OS" == "debian" ]] || [[ "OS" == "fedora" ]] || [[ "OS" == "opensuse" ]]; then log "使用虚拟环境 + pip 安装 Ansible ANSIBLE_VERSION..."
# 安装 Python3 和 pip if command -v apt &>/dev/null; then apt update apt install -y python3 python3-venv python3-pip elif command -v dnf &>/dev/null; then dnf install -y python3 python3-pip elif command -v zypper &>/dev/null; then zypper install -y python3 python3-pip else error "不支持的包管理器" fi # 创建虚拟环境 python3 -m venv "$VENV_PATH" # 升级 pip 并安装指定版本 Ansible "$VENV_PATH/bin/pip" install --upgrade pip "$VENV_PATH/bin/pip" install "ansible==${ANSIBLE_VERSION}" # 创建全局软链接(方便调用) ln -sf "$VENV_PATH/bin/ansible" /usr/local/bin/ansible ln -sf "$VENV_PATH/bin/ansible-playbook" /usr/local/bin/ansible-playbook log " 通用方案: Ansible $ANSIBLE_VERSION 已安装到 $VENV_PATH" ansible --version exit 0fi
======================
未知系统
======================
error "不支持的操作系统: $OS。请手动安装或联系运维团队。"