全平台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。请手动安装或联系运维团队。"

相关推荐
垚垚学技术_聚焦云原生7 天前
Ansible Vault 安全实践:敏感密码、密钥加密存储方案
安全·elasticsearch·ansible
广目软件9 天前
HA分布式架构采集节点变更操作手册20261029
运维·服务器·ansible·zabbix·prometheus
Moshow郑锴10 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
垚垚学技术_聚焦云原生10 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Moshow郑锴10 天前
GCP MIG 重建后 Ansible 初始化实战:PowerShell + NSSM 挂载 Windows 服务
windows·ansible
承渊政道12 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
Helix25014 天前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
垚垚学技术_聚焦云原生15 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
I'mChloe24 天前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路24 天前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible