10、Ansible 生产级故障排查与运维最佳实践
Ansible 生产级故障排查与运维最佳实践一、Ansible 生产常见故障类型高频SSH 连接类故障占 60%sudo/权限类故障网络、端口、防火墙Python 环境缺失/版本不兼容Fact 采集慢、超时、卡死文件权限、临时目录权限变量、模板、加密 Vault 问题并发过高导致被控端负载飙高第三方模块/角色漏洞或异常二、典型故障案例 根因 解决方案案例1大量主机执行时随机 SSH 失败现象部分主机报Failed to connect to the host via ssh单台测试正常批量执行就炸根因forks并发太高SSH 连接数突增被控端sshd_config限制MaxStartups、MaxSessions被打满解决降低并发forks 20或更小调大被控端 sshdMaxStartups 100:30:200 MaxSessions 50开启pipelining true减少连接数案例2执行成功但返回“权限拒绝 / 无法写入临时文件”现象Timeout (12s) waiting for privilege escalation prompt或Failed to create temporary directory根因/tmp权限异常、noexecbecome切换用户失败远程用户家目录无权限解决在ansible.cfg指定安全临时目录remote_tmp /var/tmp/ansible-$USER检查 sudo 是否不需要 ttyDefaults !requiretty检查磁盘空间、inode案例3新装机器 Ansible 无法执行报 Python 找不到现象module_stdout: /usr/bin/python: not found尤其 CentOS 8 / Ubuntu 20.04根因系统默认只有python3没有/usr/bin/python解决Inventory 里指定解释器ansible_python_interpreter/usr/bin/python3或软链接ln -s /usr/bin/python3 /usr/bin/python案例4执行极慢单台几十秒才返回现象ping 很快setup 巨慢首次执行尤其明显根因Fact 采集gather_facts加载大量硬件/网络信息DNS 反向解析失败导致超时解决关闭不必要 Factsgather_facts: false禁用被控端 DNS 反解UseDNS no使用gathering smart缓存 Facts案例5Sudo 需要密码但未配置或配置错误现象Missing sudo password交互式执行正常批量失败根因未配置 NOPASSWDVault 密码错误/未传入become 配置错误解决安全方式sudo 免密但限制命令或在变量中配置ansible_become_pass必须 Vault 加密执行时加--ask-become-pass案例6Playbook 在测试环境正常生产执行一半卡死现象执行到shell/command/yum等任务卡住无报错、无退出根因命令等待交互式输入yum 交互、确认、密钥提示管道卡死、输出缓冲区满解决模块加warn: false、creates/removes做幂等yum/dnf 用官方模块不要 shell 执行加timeout限制async: 300 poll: 10案例7敏感信息泄露到日志/控制台现象密码、密钥打印在屏幕日志文件包含明文密钥根因未使用no_log: true未用 Vault 加密调试模式-vvv泄露变量解决敏感任务强制不日志- name: set password command: echo {{ pass }} no_log: true所有密钥使用 Ansible Vault生产关闭-vvv案例8并发过高导致被控端 Load 飙高、业务抖动现象Ansible 一跑业务机器 CPU/IO 飙升部分服务超时根因forks 太大同时执行复制、解压、yum 等 heavy 任务解决降低forks使用serial分批执行serial: 2避开业务高峰使用throttle案例9Ansible 执行成功但文件内容不一致/乱码现象template 渲染后配置异常中文/特殊字符乱码换行符异常根因编码问题变量未正确转义Windows 编辑导致\r\n解决使用ansible.builtin.template而非 copy文件 UTF-8 编码控制节点与被控端 locale 一致案例10Vault 加密后无法执行提示解密失败现象Decryption failed (no vault secrets would work)密码正确但依然报错根因多个 vault ID 混用文件被篡改换行/空格破坏加密文件解决统一使用一个 vault 文件用ansible-vault view测试不要手动编辑加密文件三、生产级 Ansible 故障排查标准流程单主机测试ansible all -m ping -i hosts看详细日志-vvv检查 SSH手动ssh userhost检查 sudosudo -l检查 Pythonwhich python3检查磁盘、tmp 目录、权限检查防火墙、SELinux关闭 gather_facts 再试降低 forks 再试查看系统日志/var/log/secure、messages四、生产运维最佳实践防故障一律使用SSH 密钥禁止密码敏感信息Ansible Vault 加密远程用户专用sudo 最小权限pipelining true关闭不必要 Facts分批执行serial重要任务no_log: true日志独立存放权限 600上线前在 staging 验证定期更新 Ansible 版本
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2490437.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!