维护指南
本章提供的是本应用自身特殊等维护与配置。而配置域名、HTTPS设置、数据迁移、应用集成、Web Server 配置、Docker 配置、修改数据库连接、服务器上安装更多应用、操作系统升级、快照备份等操作通用操作请参考:管理员指南 和 安装后配置 相关章节。
场景
AWX 使用外部 PostgreSQL
默认安装下,使用的是Docker版本的PostgreSQL数据库,并设置了持久化存储。
如果你想将数据库更换为外部PostgreSQL数据库(自建或云数据库),请参考如下步骤:
- 备份好已有的AWX数据
- 进入到AWX的配置文件夹
cd /data/.awx
- 删除目前AWX项目的所有容器
cd /data/.awxdocker-compose -f docker-compose.yml down -v
- 修改 docker-compose.yml 文件,去掉两处 depends_on: 项中的 - postgres,并删除 postgres: ... 整段,最后文件的内容如下:
version: '2'services:web:image: ansible/awx_web:11.2.0container_name: awx_webdepends_on:- redis- memcachedports:- "80:8052"hostname: awxwebuser: rootrestart: unless-stoppedvolumes:- supervisor-socket:/var/run/supervisor- rsyslog-socket:/var/run/awx-rsyslog/- rsyslog-config:/var/lib/awx/rsyslog/- "/data/.awx/SECRET_KEY:/etc/tower/SECRET_KEY"- "/data/.awx/environment.sh:/etc/tower/conf.d/environment.sh"- "/data/.awx/credentials.py:/etc/tower/conf.d/credentials.py"- "/data/.awx/nginx.conf:/etc/nginx/nginx.conf:ro"- "/data/.awx/redis_socket:/var/run/redis/:rw"- "/data/.awx/memcached_socket:/var/run/memcached/:rw"environment:http_proxy:https_proxy:no_proxy:task:image: ansible/awx_task:11.2.0container_name: awx_taskdepends_on:- redis- memcached- webhostname: awxuser: rootrestart: unless-stoppedvolumes:- supervisor-socket:/var/run/supervisor- rsyslog-socket:/var/run/awx-rsyslog/- rsyslog-config:/var/lib/awx/rsyslog/- "/data/.awx/SECRET_KEY:/etc/tower/SECRET_KEY"- "/data/.awx/environment.sh:/etc/tower/conf.d/environment.sh"- "/data/.awx/credentials.py:/etc/tower/conf.d/credentials.py"- "/data/.awx/redis_socket:/var/run/redis/:rw"- "/data/.awx/memcached_socket:/var/run/memcached/:rw"environment:http_proxy:https_proxy:no_proxy:SUPERVISOR_WEB_CONFIG_PATH: '/supervisor.conf'redis:image: rediscontainer_name: awx_redisrestart: unless-stoppedenvironment:http_proxy:https_proxy:no_proxy:command: ["/usr/local/etc/redis/redis.conf"]volumes:- "/data/.awx/redis.conf:/usr/local/etc/redis/redis.conf:ro"- "/data/.awx/redis_socket:/var/run/redis/:rw"- "/data/.awx/memcached_socket:/var/run/memcached/:rw"memcached:image: "memcached:alpine"container_name: awx_memcachedcommand: ["-s", "/var/run/memcached/memcached.sock", "-a", "0666"]restart: unless-stoppedenvironment:http_proxy:https_proxy:no_proxy:volumes:- "/data/.awx/memcached_socket:/var/run/memcached/:rw"volumes:supervisor-socket:rsyslog-socket:rsyslog-config:
- 修改 /data/.awx/credentials.py 文件中数据库账号信息,确保为外部PostgreSQL的连接信息
DATABASES = {'default': {'ATOMIC_REQUESTS': True,'ENGINE': 'django.db.backends.postgresql','NAME': "awx",'USER': "awx",'PASSWORD': "yourpassword",'HOST': "pgm-j6cr72qyfadij3980o.pg.rds.websoft9.com",'PORT': "1433",}}BROADCAST_WEBSOCKET_SECRET = "al9mLS4tWTlmX1owN1FyOElJWDY="
- 修改 /data/.awx/environment.sh 文件中数据库账号信息,确保为外部PostgreSQL的连接信息
DATABASE_USER=awxDATABASE_NAME=awxDATABASE_HOST=pgm-j6cr72qyfadij3980o.pg.rds.websoft9.comDATABASE_PORT=1433DATABASE_PASSWORD=yourpasswordAWX_ADMIN_USER=adminAWX_ADMIN_PASSWORD=password
- 重新创建容器
docker-compose -f docker-compose.yml up -d
AWX 负载均衡部署
通过负载均衡处理多台 AWX 并行工作,对于大型企业来说这是一种很常见的部署方案。
AWX 升级
升级 AWX 通过重新安装来完成。
- 使用SSH登录服务器
- 进入到 /data/awx/ 目录,从 Github 更新AWX源码
git pull
- 进入到 /data/awx/installer 目录
- 增加一个 update-vars.yml 文件,其中的内容如下(其中的密码为真实值):
admin_password: 'adminpass'pg_password: 'pgpass'rabbitmq_password: 'rabbitpass'secret_key: 'mysupersecret'
- 运行如下命令,开始升级
ansible-playbook -i inventory install.yml -e @update-vars.yml
故障排除
除以下列出的 AWX 故障问题之外, 通用故障处理 专题章节提供了更多的故障方案。
受控端更换镜像后,AWX 再次连接报错?
找到主机缓存文件:/var/lib/awx/.ssh/known_hosts,删除其中的历史记录即可
登录界面显示"is updating"?
等待更新完成后,重启服务器,再访问
创建项目选择手动(SCM 类型)提示 "WARNING..."?
错误信息:WARNING: There are no available playbook directories in /var/lib/awx/projects....
原因:AWX容器的项目路径没有挂在到宿主机上
方案:将/var/lib/awx/projects 映射到宿主机目录 /data/wwwroot/awx/projects
awx_redis 容器无法启动?
原因:redis.sock 权限不足导致
方案:给 /data/.awx/redis_socket 文件夹授权
- 编辑 /data/.awx/redis.conf 文件中增加一行权限配置
unixsocketperm 750unixsocket /var/run/redis/redis.sockunixsocketperm 660port 0bind 127.0.0.1unixsocketperm 750 - Redis 通信目录授权
chmod -R 777 /data/.awx/redis_socket - 进入到 AWX 目录后,重新运行容器即可
cd /data/.awxdocker-compose down -vdocker-compose up -d
可进入 AWX 控制台,但无法运行 Job?
很有可能是 awx_redis 容器没有正常运行导致,通过命令 docker ps 查看 awx_redis 运行状态
问题解答
AWX 支持多语言吗?
支持多种语言,包括中文。它不提供语言切换菜单,而是自动适用浏览器首选语言。
AWX 是如何与 PostgreSQL 连接的?
容器内部连接,即容器编排
AWX 是否支持 Ansible Galaxy?

支持,参考官方文档 Ansible Galaxy Support