CentOS7下用Docker快速部署AWX图形化界面(附常见报错解决方案)
CentOS7下Docker化AWX实战指南:从零搭建到故障排查
在自动化运维领域,Ansible无疑是当前最受欢迎的配置管理工具之一。而AWX作为Ansible的官方Web界面,为团队协作提供了可视化操作平台。本文将带您从零开始,在CentOS7环境下通过Docker快速部署AWX,并针对国内用户常见的网络问题和配置错误提供详细解决方案。
1. 环境准备与Docker配置
在开始AWX部署前,我们需要确保基础环境配置正确。CentOS7作为企业级Linux发行版,其稳定性使其成为生产环境的首选,但默认软件仓库中的Docker版本往往较旧。
1.1 系统基础检查
首先确认系统版本和资源是否符合要求:
# 查看系统版本
cat /etc/redhat-release
# 检查硬件资源
free -h
df -h
lscpu
推荐配置:
- CentOS 7.6及以上版本
- 4核CPU/8GB内存(最低2核/4GB)
- 50GB可用磁盘空间(AWX容器组会占用约15GB)
1.2 Docker引擎安装与优化
对于国内用户,直接从官方源安装Docker可能会遇到网络问题。以下是优化后的安装方案:
# 卸载旧版本(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 替换下载地址为国内镜像
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 安装Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"]
}
EOF
# 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl enable --now docker
注意:如果使用企业内网环境,可能需要额外配置代理或私有镜像仓库
验证Docker安装:
docker version
docker run hello-world
2. Docker Compose与Python环境配置
AWX的容器化部署依赖Docker Compose工具和Python环境,以下是关键配置步骤。
2.1 Docker Compose安装
根据Docker版本选择对应的Compose版本:
| Docker版本 | 推荐Compose版本 | 兼容性说明 |
|---|---|---|
| 20.10+ | v2.x | 完全支持 |
| 19.03-20.09 | v1.29.x | 稳定支持 |
| <19.03 | v1.25.x | 有限支持 |
安装最新版Docker Compose:
# 下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 设置执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
2.2 Python环境配置
虽然AWX运行在容器中,但管理操作仍需要Python支持:
# 检查现有Python版本
python3 --version
# 安装Python3和pip
sudo yum install -y python3 python3-pip
# 升级pip并安装必要模块
python3 -m pip install --upgrade pip
python3 -m pip install docker-compose ansible
常见问题处理:
- pip安装超时:添加
-i https://pypi.tuna.tsinghua.edu.cn/simple参数使用清华源 - 依赖冲突:使用虚拟环境
python3 -m venv awx-env && source awx-env/bin/activate
3. AWX容器化部署实战
AWX官方推荐使用Operator方式部署,但对于初学者,我们选择更简单的Docker Compose方案。
3.1 获取AWX部署文件
# 创建工作目录
mkdir -p ~/awx && cd ~/awx
# 下载官方部署文件
wget https://github.com/ansible/awx/archive/refs/tags/17.1.0.tar.gz
tar -zxvf 17.1.0.tar.gz
cd awx-17.1.0/installer
3.2 配置inventory文件
编辑inventory文件,关键配置项如下:
# 数据库配置
postgres_data_dir=/var/lib/pgdocker
postgres_image=postgres:12
# AWX核心配置
awx_official=true
awx_image=ansible/awx:17.1.0
# 管理员凭证
admin_user=admin
admin_password=your_secure_password
# 项目存储
project_data_dir=/var/lib/awx/projects
重要:生产环境务必修改默认密码,并考虑配置TLS证书
3.3 启动AWX服务
执行部署命令:
ansible-playbook -i inventory install.yml
部署过程可能持续15-30分钟,取决于网络状况。可以通过以下命令监控进度:
docker logs -f awx_task
4. 常见问题诊断与解决
在实际部署过程中,国内用户常会遇到以下几类问题。
4.1 镜像拉取失败
现象:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
解决方案:
- 配置Docker镜像加速器(见1.2节)
- 手动拉取镜像:
docker pull ansible/awx:17.1.0 docker pull postgres:12 docker pull redis:alpine - 或者修改inventory文件使用国内镜像:
awx_image=registry.cn-hangzhou.aliyuncs.com/ansible/awx:17.1.0
4.2 内存不足导致容器崩溃
现象:Task container exited with non-zero exit code 137
解决方案:
- 增加系统交换空间:
sudo dd if=/dev/zero of=/swapfile bs=1G count=4 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - 限制AWX内存使用(修改inventory):
docker_compose_mem_limit=4g
4.3 数据库连接问题
现象:Is the server running on host "postgres" and accepting TCP/IP connections on port 5432?
解决方案:
- 检查Postgres容器状态:
docker ps | grep postgres - 重置数据库容器:
docker-compose down sudo rm -rf /var/lib/pgdocker docker-compose up -d
4.4 Web界面无法访问
现象:服务已启动但无法通过浏览器访问
排查步骤:
- 检查端口监听:
ss -tulnp | grep 80 - 查看Nginx容器日志:
docker logs awx_web - 临时关闭防火墙测试:
sudo systemctl stop firewalld
5. AWX基本配置与使用
成功部署后,通过http://服务器IP访问AWX界面。首次登录后建议进行以下配置:
5.1 初始设置清单
- [ ] 修改管理员密码
- [ ] 配置SMTP服务器(邮件通知)
- [ ] 设置LDAP/AD集成(企业用户认证)
- [ ] 创建组织和工作团队
- [ ] 配置项目仓库(Git/SVN)
- [ ] 设置凭据(SSH密钥、API令牌等)
5.2 创建第一个自动化任务
-
定义Inventory:
[web_servers] server1 ansible_host=192.168.1.101 server2 ansible_host=192.168.1.102 [db_servers] db1 ansible_host=192.168.1.201 -
创建Playbook:
- name: Install and start Apache hosts: web_servers become: yes tasks: - name: Install httpd yum: name: httpd state: present - name: Start service service: name: httpd state: started -
配置Job Template:
- 关联Inventory和Playbook
- 设置执行环境
- 定义调度计划
5.3 监控与维护建议
- 日志收集:定期备份
/var/lib/awx目录 - 性能监控:配置Prometheus监控容器资源使用
- 备份策略:
# 数据库备份 docker exec -t awx_postgres pg_dump -U awx awx > awx_backup.sql # 项目备份 tar -czvf awx_projects.tar.gz /var/lib/awx/projects
在AWX的实际使用中,我发现最实用的功能是工作流(Workflow)设计,它可以将多个Job Template串联起来,形成完整的自动化流水线。例如,可以先执行基础设施检查,然后进行应用部署,最后运行测试验证,整个过程完全自动化。
更多推荐
所有评论(0)