ubuntu 安装AWX

AWX是Ansible Tower的开源版本,提供Web界面来管理Ansible playbooks。下面是一个完整的安装脚本,包括Docker环境准备、AWX部署和配置。

下载源码进行安装的脚本

#!/bin/bash
# =============================================================================
# AWX安装脚本
# AWX是Ansible Tower的开源版本,提供Web界面管理Ansible
# 支持Ubuntu 20.04/22.04和CentOS 7/8
# 作者:Ansible项目组
# 版本:1.0
# =============================================================================

set -e  # 遇到错误立即退出

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否为root用户
check_root() {
    if [[ $EUID -ne 0 ]]; then
        log_error "此脚本需要root权限运行"
        exit 1
    fi
}

# 检测操作系统
detect_os() {
    if [[ -f /etc/os-release ]]; then
        . /etc/os-release
        OS=$NAME
        VER=$VERSION_ID
    else
        log_error "无法检测操作系统版本"
        exit 1
    fi
    
    log_info "检测到操作系统: $OS $VER"
}

# 安装Docker
install_docker() {
    log_info "开始安装Docker..."
    
    # 检查Docker是否已安装
    if command -v docker &> /dev/null; then
        log_warning "Docker已安装,跳过安装步骤"
        return 0
    fi
    
    case $OS in
        "Ubuntu")
            # 更新包索引
            apt-get update
            
            # 安装必要的包
            apt-get install -y \
                apt-transport-https \
                ca-certificates \
                curl \
                gnupg \
                lsb-release
            
            # 添加Docker官方GPG密钥
            curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
            
            # 设置稳定版仓库
            echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
            
            # 安装Docker Engine
            apt-get update
            apt-get install -y docker-ce docker-ce-cli containerd.io
            ;;
        "CentOS Linux")
            # 安装必要的包
            yum install -y yum-utils
            
            # 设置稳定版仓库
            yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
            
            # 安装Docker Engine
            yum install -y docker-ce docker-ce-cli containerd.io
            ;;
        *)
            log_error "不支持的操作系统: $OS"
            exit 1
            ;;
    esac
    
    # 启动并启用Docker服务
    systemctl start docker
    systemctl enable docker
    
    # 验证Docker安装
    if docker --version; then
        log_success "Docker安装成功"
    else
        log_error "Docker安装失败"
        exit 1
    fi
}

# 安装Docker Compose
install_docker_compose() {
    log_info "开始安装Docker Compose..."
    
    # 检查Docker Compose是否已安装
    if command -v docker-compose &> /dev/null; then
        log_warning "Docker Compose已安装,跳过安装步骤"
        return 0
    fi
    
    # 下载Docker Compose
    DOCKER_COMPOSE_VERSION="2.20.2"
    curl -L "https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    # 设置执行权限
    chmod +x /usr/local/bin/docker-compose
    
    # 创建软链接
    ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    # 验证安装
    if docker-compose --version; then
        log_success "Docker Compose安装成功"
    else
        log_error "Docker Compose安装失败"
        exit 1
    fi
}

# 安装Git
install_git() {
    log_info "检查Git安装状态..."
    
    if command -v git &> /dev/null; then
        log_warning "Git已安装,跳过安装步骤"
        return 0
    fi
    
    case $OS in
        "Ubuntu")
            apt-get update
            apt-get install -y git
            ;;
        "CentOS Linux")
            yum install -y git
            ;;
        *)
            log_error "不支持的操作系统: $OS"
            exit 1
            ;;
    esac
    
    log_success "Git安装成功"
}

# 下载AWX
download_awx() {
    log_info "开始下载AWX..."
    
    AWX_VERSION="21.14.0"
    AWX_DIR="/opt/awx"
    
    # 创建AWX目录
    mkdir -p $AWX_DIR
    cd $AWX_DIR
    
    # 如果目录已存在且不为空,先备份
    if [[ -d "awx" && "$(ls -A awx 2>/dev/null)" ]]; then
        log_warning "AWX目录已存在,创建备份..."
        mv awx awx.backup.$(date +%Y%m%d_%H%M%S)
    fi
    
    # 克隆AWX仓库
    git clone --branch $AWX_VERSION https://github.com/ansible/awx.git
    
    if [[ -d "awx" ]]; then
        log_success "AWX下载成功"
    else
        log_error "AWX下载失败"
        exit 1
    fi
}

# 配置AWX
configure_awx() {
    log_info "开始配置AWX..."
    
    cd /opt/awx/awx/tools/docker-compose
    
    # 生成密钥
    openssl rand -base64 30 > .awx_secret_key
    
    # 创建inventory文件
    cat > inventory << EOF
# AWX配置文件

# 基本配置
postgres_data_dir="/opt/awx/pgdocker"
host_port=80
host_port_ssl=443

# 数据库配置
postgres_password=awxpass
postgres_user=awx
postgres_db=awx

# AWX配置
admin_user=admin
admin_password=password
secret_key_file=.awx_secret_key

# Docker配置
compose_dir=/opt/awx/awx/tools/docker-compose
EOF
    
    log_success "AWX配置完成"
}

# 部署AWX
deploy_awx() {
    log_info "开始部署AWX..."
    
    cd /opt/awx/awx/tools/docker-compose
    
    # 运行安装脚本
    ansible-playbook -i inventory install.yml
    
    if [[ $? -eq 0 ]]; then
        log_success "AWX部署成功"
    else
        log_error "AWX部署失败"
        exit 1
    fi
}

# 检查AWX状态
check_awx_status() {
    log_info "检查AWX服务状态..."
    
    # 等待服务启动
    sleep 30
    
    # 检查容器状态
    if docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml ps | grep -q "Up"; then
        log_success "AWX服务运行正常"
        
        # 获取本机IP
        LOCAL_IP=$(hostname -I | awk '{print $1}')
        
        echo ""
        echo "======================================"
        echo "AWX安装完成!"
        echo "======================================"
        echo "访问地址: http://$LOCAL_IP"
        echo "管理员用户: admin"
        echo "管理员密码: password"
        echo "======================================"
        echo ""
        echo "注意事项:"
        echo "1. 首次访问可能需要等待几分钟让服务完全启动"
        echo "2. 建议修改默认密码"
        echo "3. 确保防火墙允许80端口访问"
        echo "======================================"
    else
        log_error "AWX服务启动失败"
        echo "请检查日志: docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml logs"
        exit 1
    fi
}

# 安装Ansible(如果未安装)
install_ansible() {
    log_info "检查Ansible安装状态..."
    
    if command -v ansible &> /dev/null; then
        log_warning "Ansible已安装,跳过安装步骤"
        return 0
    fi
    
    case $OS in
        "Ubuntu")
            apt-get update
            apt-get install -y software-properties-common
            add-apt-repository --yes --update ppa:ansible/ansible
            apt-get install -y ansible
            ;;
        "CentOS Linux")
            yum install -y epel-release
            yum install -y ansible
            ;;
        *)
            log_error "不支持的操作系统: $OS"
            exit 1
            ;;
    esac
    
    log_success "Ansible安装成功"
}

# 配置防火墙
configure_firewall() {
    log_info "配置防火墙规则..."
    
    case $OS in
        "Ubuntu")
            if command -v ufw &> /dev/null; then
                ufw allow 80/tcp
                ufw allow 443/tcp
                log_success "UFW防火墙规则已配置"
            fi
            ;;
        "CentOS Linux")
            if command -v firewall-cmd &> /dev/null; then
                firewall-cmd --permanent --add-port=80/tcp
                firewall-cmd --permanent --add-port=443/tcp
                firewall-cmd --reload
                log_success "Firewalld防火墙规则已配置"
            fi
            ;;
    esac
}

# 主函数
main() {
    echo "======================================"
    echo "AWX自动安装脚本"
    echo "======================================"
    
    check_root
    detect_os
    install_ansible
    install_git
    install_docker
    install_docker_compose
    download_awx
    configure_awx
    configure_firewall
    deploy_awx
    check_awx_status
    
    log_success "AWX安装流程完成!"
}

# 执行主函数
main "$@"

docker方式安装的脚本

#!/bin/bash
# =============================================================================
# AWX快速安装脚本(简化版)
# 适用于快速测试和开发环境
# =============================================================================

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

# 检查root权限
if [[ $EUID -ne 0 ]]; then
    log_error "需要root权限运行此脚本"
    exit 1
fi

log_info "开始AWX快速安装..."

# 检测操作系统
if [[ -f /etc/os-release ]]; then
    . /etc/os-release
    OS=$NAME
else
    log_error "无法检测操作系统"
    exit 1
fi

log_info "检测到系统: $OS"

# 安装Docker(如果未安装)
if ! command -v docker &> /dev/null; then
    log_info "安装Docker..."
    case $OS in
        "Ubuntu"*)
            apt-get update
            apt-get install -y docker.io
            ;;
        "CentOS"*)
            yum install -y docker
            ;;
        *)
            log_error "不支持的操作系统: $OS"
            exit 1
            ;;
    esac
    systemctl start docker
    systemctl enable docker
else
    log_info "Docker已安装"
fi

# 安装Docker Compose(如果未安装)
if ! command -v docker-compose &> /dev/null; then
    log_info "安装Docker Compose..."
    curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
else
    log_info "Docker Compose已安装"
fi

# 创建AWX目录
AWX_DIR="/opt/awx-simple"
mkdir -p $AWX_DIR
cd $AWX_DIR

# 创建docker-compose.yml文件
log_info "创建AWX配置文件..."
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  redis:
    image: redis:7
    restart: unless-stopped
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data

  postgres:
    image: postgres:13
    restart: unless-stopped
    environment:
      POSTGRES_DB: awx
      POSTGRES_USER: awx
      POSTGRES_PASSWORD: awxpass
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - postgres_data:/var/lib/postgresql/data/pgdata

  awx_web:
    image: quay.io/ansible/awx:21.14.0
    restart: unless-stopped
    ports:
      - "80:8052"
    environment:
      SECRET_KEY: awx_secret_key_change_me
      DATABASE_NAME: awx
      DATABASE_USER: awx
      DATABASE_PASSWORD: awxpass
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      REDIS_HOST: redis
      REDIS_PORT: 6379
    depends_on:
      - postgres
      - redis
    volumes:
      - awx_projects:/var/lib/awx/projects
      - awx_job_status:/var/lib/awx/job_status

  awx_task:
    image: quay.io/ansible/awx:21.14.0
    restart: unless-stopped
    environment:
      SECRET_KEY: awx_secret_key_change_me
      DATABASE_NAME: awx
      DATABASE_USER: awx
      DATABASE_PASSWORD: awxpass
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      REDIS_HOST: redis
      REDIS_PORT: 6379
    depends_on:
      - postgres
      - redis
    volumes:
      - awx_projects:/var/lib/awx/projects
      - awx_job_status:/var/lib/awx/job_status
    command: ["/usr/bin/launch_awx_task.sh"]

volumes:
  redis_data:
  postgres_data:
  awx_projects:
  awx_job_status:
EOF

# 启动AWX
log_info "启动AWX服务..."
docker-compose up -d

# 等待服务启动
log_info "等待服务启动(约2分钟)..."
sleep 120

# 创建管理员用户
log_info "创建管理员用户..."
docker-compose exec -T awx_web awx-manage createsuperuser --username admin --email admin@example.com --noinput || true
docker-compose exec -T awx_web awx-manage shell << 'PYTHON'
from django.contrib.auth.models import User
try:
    user = User.objects.get(username='admin')
    user.set_password('password')
    user.save()
    print("管理员密码已设置")
except User.DoesNotExist:
    User.objects.create_superuser('admin', 'admin@example.com', 'password')
    print("管理员用户已创建")
PYTHON

# 配置防火墙
case $OS in
    "Ubuntu"*)
        if command -v ufw &> /dev/null; then
            ufw allow 80/tcp
        fi
        ;;
    "CentOS"*)
        if command -v firewall-cmd &> /dev/null; then
            firewall-cmd --permanent --add-port=80/tcp
            firewall-cmd --reload
        fi
        ;;
esac

# 获取本机IP
LOCAL_IP=$(hostname -I | awk '{print $1}')

echo ""
echo "======================================"
echo "AWX快速安装完成!"
echo "======================================"
echo "访问地址: http://$LOCAL_IP"
echo "用户名: admin"
echo "密码: password"
echo "======================================"
echo ""
echo "管理命令:"
echo "启动: cd $AWX_DIR && docker-compose up -d"
echo "停止: cd $AWX_DIR && docker-compose down"
echo "日志: cd $AWX_DIR && docker-compose logs -f"
echo "======================================"

log_success "AWX安装完成!请等待1-2分钟后访问Web界面"

安装过程截图

AWX 安装脚本使用说明

概述

AWX是Ansible Tower的开源版本,提供了一个Web界面来管理和执行Ansible playbooks。本脚本可以自动在Ubuntu和CentOS系统上安装AWX。

系统要求

支持的操作系统

  • Ubuntu 20.04/22.04
  • CentOS 7/8

硬件要求

  • 最低配置

    • CPU: 2核
    • 内存: 4GB
    • 磁盘: 20GB可用空间
  • 推荐配置

    • CPU: 4核
    • 内存: 8GB
    • 磁盘: 40GB可用空间

网络要求

  • 需要互联网连接以下载依赖包
  • 开放端口80(HTTP)和443(HTTPS)

安装步骤

1. 下载脚本

# 如果已有ansible-project目录
cd /root/ansible-project/scripts

# 或者单独下载脚本
wget https://your-server/install-awx.sh
chmod +x install-awx.sh

2. 执行安装

# 使用root权限执行
sudo ./install-awx.sh

# 或者切换到root用户
su -
./install-awx.sh

3. 等待安装完成

安装过程大约需要10-30分钟,具体时间取决于网络速度和系统性能。

安装过程说明

脚本会自动执行以下步骤:

  1. 系统检查

    • 检查root权限
    • 检测操作系统版本
  2. 依赖安装

    • 安装Ansible
    • 安装Git
    • 安装Docker
    • 安装Docker Compose
  3. AWX部署

    • 下载AWX源码
    • 配置AWX参数
    • 使用Docker Compose部署
  4. 防火墙配置

    • 开放必要端口
    • 配置访问规则

访问AWX

安装完成后,可以通过以下方式访问AWX:

Web界面

  • 访问地址:http://your-server-ip
  • 默认用户名:admin
  • 默认密码:password

首次登录

  1. 打开浏览器访问服务器IP地址
  2. 使用默认凭据登录
  3. 强烈建议立即修改默认密码

常见问题

Q1: 安装失败怎么办?

A: 检查以下几点:

  • 确保有root权限
  • 检查网络连接
  • 查看错误日志
  • 确保系统满足最低要求

Q2: 无法访问Web界面

A: 检查以下几点:

# 检查服务状态
docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml ps

# 检查端口监听
netstat -tlnp | grep :80

# 检查防火墙
# Ubuntu
sudo ufw status
# CentOS
sudo firewall-cmd --list-all

Q3: 忘记密码怎么办?

A: 可以通过以下方式重置:

cd /opt/awx/awx/tools/docker-compose
docker-compose exec awx_web awx-manage createsuperuser

Q4: 如何停止AWX服务?

A: 使用以下命令:

cd /opt/awx/awx/tools/docker-compose
docker-compose down

Q5: 如何启动AWX服务?

A: 使用以下命令:

cd /opt/awx/awx/tools/docker-compose
docker-compose up -d

卸载AWX

如果需要完全卸载AWX:

# 停止服务
cd /opt/awx/awx/tools/docker-compose
docker-compose down -v

# 删除容器和镜像
docker system prune -a

# 删除数据目录
rm -rf /opt/awx
rm -rf /opt/awx/pgdocker

配置文件位置

  • AWX配置:/opt/awx/awx/tools/docker-compose/inventory
  • Docker Compose:/opt/awx/awx/tools/docker-compose/docker-compose.yml
  • 数据库数据:/opt/awx/pgdocker
  • 密钥文件:/opt/awx/awx/tools/docker-compose/.awx_secret_key

安全建议

  1. 修改默认密码

    • 登录后立即修改admin密码
    • 使用强密码策略
  2. 网络安全

    • 配置HTTPS(推荐)
    • 限制访问IP范围
    • 使用防火墙规则
  3. 定期备份

    • 备份数据库
    • 备份配置文件
    • 备份项目数据

性能优化

数据库优化

# 编辑PostgreSQL配置
vim /opt/awx/pgdocker/postgresql.conf

# 调整以下参数
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 4MB

容器资源限制

# 在docker-compose.yml中添加资源限制
services:
  awx_web:
    deploy:
      resources:
        limits:
          memory: 2G
        reservations:
          memory: 1G

日志查看

# 查看AWX日志
docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml logs awx_web

# 查看数据库日志
docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml logs postgres

# 实时查看日志
docker-compose -f /opt/awx/awx/tools/docker-compose/docker-compose.yml logs -f

技术支持

  • 官方文档: https://github.com/ansible/awx
  • 社区论坛: https://groups.google.com/g/awx-project
  • 问题报告: https://github.com/ansible/awx/issues

版本信息

  • 脚本版本: 1.0
  • AWX版本: 21.14.0
  • 支持的Docker版本: 20.10+
  • 支持的Docker Compose版本: 2.0+

注意: 本脚本仅用于测试和开发环境。生产环境部署请参考官方文档进行详细配置。

要在Ubuntu 20.04上安装AWX,您可以按照以下步骤进行操作: 1. 更新软件包: 使用以下命令更新系统软件包: ``` sudo apt update sudo apt upgrade ``` 2. 安装Docker和Docker Compose: 使用以下命令安装Docker和Docker Compose: ``` sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker ``` 然后,您可以使用以下命令安装Docker Compose: ``` sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 3. 克隆AWX存储库: 使用以下命令将AWX存储库克隆到您的系统中: ``` git clone https://github.com/ansible/awx.git cd awx ``` 4. 配置AWX: 在AWX存储库中,使用以下命令将AWX配置文件从示例文件创建为实际文件: ``` cp installer/inventory文件.example installer/inventory ``` 5. 编辑配置文件: 使用您喜欢的文本编辑器(如nano或vim)编辑AWX配置文件: ``` nano installer/inventory ``` 根据您的需求修改配置文件中的参数,比如数据库设置、管理员用户名和密码等。 6. 启动AWX: 使用以下命令启动AWX安装: ``` sudo ./installer/ansible.sh -i installer/inventory install ``` 安装过程可能需要一些时间,请耐心等待直到完成。 7. 访问AWX安装完成后,您可以在Web浏览器中访问AWX控制台。默认情况下,AWX将在 http://localhost/ 上监听。您可以使用配置文件中指定的管理员用户名和密码进行登录。 请注意,以上步骤仅提供了一个基本的安装AWX的指南。根据您的特定环境和需求,可能需要进行其他配置和调整。建议查阅官方文档或参考其他资源以获取更多详细信息和指导。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Ansible AWX安装教程](https://blog.csdn.net/Accept1234/article/details/122825291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [PiKubed-Project:用于创建和维护 K3S Raspberry Pi 集群的 Ansible playbooksroles 集合](https://download.csdn.net/download/weixin_42144604/19183513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

如果这篇文章帮您解决了技术难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值