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

相关推荐
道清茗5 天前
【RH294知识点汇总】第 7 章 《 使用角色和 Ansible 内容集合简化 Playbook 》常见问题
ansible
何中应6 天前
Ansible安装&使用
运维·自动化·ansible·运维开发·自动化运维
王九思6 天前
Ansible 自动化运维基础—模板
运维·自动化·ansible
道清茗7 天前
【RH294知识点汇总】第 7 章 《 使用角色和 Ansible 内容集合简化 Playbook 》
java·前端·ansible
切糕师学AI7 天前
深入解析 Ansible:从入门到实践
ansible
王的宝库7 天前
【Ansible】变量与敏感数据管理:Vault 加密 + Facts 采集详解
笔记·学习·ansible
张3239 天前
Ansible拆分大型Playbook
linux·ansible
爱莉希雅&&&9 天前
Ansible+Docker案例(含ansible配置安装docker)
linux·运维·mysql·nginx·docker·容器·ansible
张3239 天前
配置加载混淆(vars_files与from_yaml)
ansible
张3239 天前
角色与内容集合:自动化配置的标准化复用机制
运维·自动化·ansible