全平台Ansible一键安装脚本:Ubuntu/Debian/RHEL全支持

生产环境的完整 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 "无法识别操作系统"
    fi

    log "检测到系统: 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 0

    fi

    ======================

    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 0

    fi

    ======================

    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 0

    fi

    ======================

    未知系统

    ======================

    error "不支持的操作系统: $OS。请手动安装或联系运维团队。"

相关推荐
I'mChloe2 天前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路2 天前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible
张洛闻Eren2 天前
Ansible【第一课】:Ansible介绍
运维·数据库·云原生·kubernetes·github·ansible
张洛闻Eren3 天前
Ansible【第二课】:实施 Ansible Playbook
linux·运维·服务器·云原生·kubernetes·k8s·ansible
励志师code3 天前
Ansible 批量运维实战:从连通性巡检到灰度变更的完整闭环
运维·ansible
哈__8 天前
飞牛OS还在手动维护?我用Ansible把重复操作写成了Playbook
开发语言·ansible·php
垚垚学技术_聚焦云原生18 天前
Ansible Role 生产环境标准目录结构与规范化实践
java·elasticsearch·ansible
垚垚学技术_聚焦云原生19 天前
Ansible Playbook 实战:批量配置 Linux 主机
ansible
迷茫的大专生1 个月前
服务器部署与 MySQL 运维学习笔记:从 Ansible 到高可用与性能优化
mysql·nginx·ansible·mysql优化·keepalive
杜子不疼.1 个月前
Ansible 批量部署 Node Exporter:从单机安装流程到远程主机统一执行
ai·ansible