ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

JumpServer部署完全指南:单机源码部署到Ansible批量自动化

JumpServer部署完全指南:单机源码部署到Ansible批量自动化 JumpServer部署完全指南单机源码部署到Ansible批量自动化【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver凌晨两点被要求轮换 50 台服务器的密码你只能逐台 SSH 上去挨个敲命令。JumpServer部署就是为这种情况准备的它是一个开源的 PAM特权访问管理平台除了让所有人通过浏览器访问 SSH、RDP、K8s、数据库资产还内置了 Ansible 执行器批量改密、连通性测试点一下就能跑。这篇文章带你从一台干净的 Linux 机器出发把它装到生产可用再跑起批量资产自动化。快速预览跟做完你能拿到什么python jms start all -d一条命令拉起全部服务只改三处配置拿到一份生产级的config.yml多环境下按批次跑 Ansible 连通性检查不用自己写 playbook一条 crontab 命令把数据库备份固化下来JumpServer 组件速览谁负责什么理解四层分工部署就不再是黑盒Core Web登录、RBAC、资产树默认监听 8080配置项HTTP_LISTEN_PORTCelery 任务引擎跑异步任务Ansible 相关任务被分到专用ansible队列不拖累核心业务Ansible runner批量操作的执行引擎入口在 apps/ops/ansible/interface.py 的RunnerInterface把不同 runner 类型包成统一的run(**kwargs)接口协议连接器KoKo/Lion 等负责字符/图形连接靠BOOTSTRAP_TOKEN向 core 注册所以这个 token 必须配置一句话逻辑Web 收请求 → 任务进 Celery 队列 → Ansible runner 对目标资产执行 → 结果回写审计日志。最小可用部署从裸机到登录只要 5 分钟先明确硬件门槛低于最低配置容易在任务高峰期卡死配置项最低要求推荐配置CPU / 内存2核 / 4GB4核 / 8GB磁盘50GB100GB SSD依赖服务PostgreSQL Redis同左建议独立实例第一步拉代码、备配置git clone https://gitcode.com/GitHub_Trending/ju/jumpserver cd jumpserver cp config_example.yml config.yml # 仓库只带模板必须手动复制config.yml是唯一的配置入口启动工具 jms 直接读它。最小可用只需填三处# config.yml 最小配置只填这三项 SECRET_KEY: 49位随机字符串 # Django 会话签名密钥 DB_PASSWORD: 你的PG密码 # 数据库密码 BOOTSTRAP_TOKEN: 随机字符串 # 组件注册用不填终端不可用数据库默认指向127.0.0.1:5432用户jumpserver库名jumpserverRedis 默认127.0.0.1:6379。PG 不在本机就加一行DB_HOST。⚠️注意SECRET_KEY不换成随机值会话签名就等于裸奔生产环境这是第一优先级。生成命令模板注释里现成给了cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 49;echo。第二步启动服务# 确认 PostgreSQL / Redis 已启动后一条命令拉起全部组件 python jms start all -djms是仓库根目录自带的服务控制工具-d守护化运行首次启动会自动跑数据库迁移、静态文件收集、OAuth2 初始化。容器化部署时 entrypoint.sh 也是把这一步整个委托给jms逻辑一致。这一步跑完你其实已经能用了浏览器打开http://服务器IP:8080用admin / ChangeMe登录系统会强制你改密码。生产环境加固config.yml 改哪、改成什么 生产调优全部落在config.yml或启动命令上按改哪里 → 改成什么 → 效果对照改哪里改成什么效果config.yml→SECRET_KEY49 位随机字符串会话签名不可伪造生产第一优先级config.yml→SESSION_COOKIE_AGE: 7200会话缩到 2 小时会话被盗的利用窗口减半config.yml→DEBUG: true删掉默认关闭出错时不再把完整堆栈渲染到网页config.yml→HTTP_BIND_HOST: 127.0.0.1只绑回环前面挂 Nginx 做 TLS公网只开 443启动命令python jms start web -w 4-w指定 web 进程数按核数调默认单进程并发高时会先成为瓶颈Ansible 批量超时在 config_example.yml 里有比文档更细的注释ANSIBLE_RUNNER_JOB_TIMEOUT限制单批总时长默认 1800 秒ANSIBLE_RUNNER_IDLE_TIMEOUT限制单批无输出时长默认 900 秒。生产环境建议只在实测 P95 逼近阈值时才调大盲目调大的代价是卡死的任务要更晚才被发现。批量资产自动化用内置 Ansible 管理多环境资产导入后不要自己写脚本跑批量操作项目内置了完整链路前置检查跑任务前 apps/assets/tasks/utils.py 里的check_asset_can_run_ansible会判断资产平台类型是否支持 Ansible不支持的直接跳过——这就是导入资产时必须选对平台类型Linux/Windows 等的原因批量连通性检查apps/assets/tasks/ping.py 的test_assets_connectivity_task是绑定queueansible的 Celery 任务按每 80 个资产分批、每批起一个 ansible-runner 串行执行在资产详情页点测试连通性即可触发平台连接参数各平台类型的 Ansible 连接参数连接方式、提权、解释器预定义在 apps/assets/const/host.py 的平台预设里runner 执行时自动套用多环境切换逻辑每个环境测试/预发/生产建一个组织资产按组织挂在不同节点下自动化任务只作用于指定组织的资产。变量隔离靠组织架构天然完成不需要维护多份 inventory也不会误打到生产环境。踩坑记录1. 启动卡在 60 次数据库重试后退出现象日志反复打印Check database connection原因PostgreSQL 没起或DB_PASSWORD/DB_NAME与库里实际不一致修复systemctl status postgresql核对服务再逐项比对 config.yml然后python jms start all2. 启动报ImportError: Could not find config file现象jms秒退原因仓库只带config_example.yml模板没复制出config.yml修复cp config_example.yml config.yml后重新执行启动命令3. 网页能登录Web 终端连不上现象登录正常终端组件无响应原因连接器组件没起来或它的BOOTSTRAP_TOKEN与 core 不一致导致注册失败修复python jms restart all并核对配置里的 token4. 备份脚本报错现象utils/backup_db.sh执行失败原因该脚本按 MySQL 场景写的用mysqldump而config_example.yml默认配的是 postgresql修复PG 环境改用pg_dump -h 127.0.0.1 -U jumpserver -Fc jumpserver后续动作把备份写进 crontab0 3 * * * pg_dump -h 127.0.0.1 -U jumpserver -Fc jumpserver backup/$(date \%F).sql故障演练时能拿到前一天的数据用python jms status接监控告警服务挂掉 1 分钟内通知到人资产超过 1000 台时先对 80 台做压测再用 config_example.yml 注释里的公式反推ANSIBLE_AUTOMATION_TOTAL_TIMEOUT不要拍脑袋填【免费下载链接】jumpserverJumpServer is an open-source Privileged Access Management (PAM) platform that provides DevOps and IT teams with on-demand and secure access to SSH, RDP, Kubernetes, Database and RemoteApp endpoints through a web browser.项目地址: https://gitcode.com/GitHub_Trending/ju/jumpserver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进