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

相关推荐
不惑_17 小时前
如何使用 Ansible 安装 Docker
docker·github·ansible
小安运维日记3 天前
RHCA - DO374 | Day01:使用红帽Ansible自动化平台开发剧本
运维·服务器·云原生·自动化·云计算·ansible
BullSmall3 天前
Ansible三大Web界面方案全解析
运维·ansible
Warren983 天前
复习MySQL
数据库·windows·tcp/ip·mysql·ubuntu·ssh·ansible
早睡冠军候选人6 天前
Ansible学习----Ansible Playbook
运维·服务器·学习·云原生·容器·ansible
yourkin66610 天前
Ansible
ansible
Ribou10 天前
ansible 自动安装软件,实现列表选择软件的方法
ansible
文静小土豆10 天前
Ansible 自动化部署K8S1.34.1
kubernetes·自动化·ansible
K_i13412 天前
Helm 与 Ansible 深度对比解析文档
自动化·ansible