Ansible Playbook部署Apache第2版
文章目录一、代码审查:发现 3 个需要修正的问题问题 1:第 7 步 `shell` 验证可能导致 Playbook 失败(严重)问题 2:SELinux 未处理(RHEL/CentOS 常见坑)问题 3:`lineinfile` 可能漏掉 IPv6 的 Listen 行二、回答你的两个问题Q1:颜色映射改为从 inventory 变量读取?—— **强烈建议做**Q2:拆出独立 Jinja2 模板文件?—— **建议做**三、优化后的企业级完整方案3.1 目录结构3.2 inventory.ini(数据与配置分离)3.3 templates/index.html.j2(独立模板)3.4 apache_deploy.yml(优化后的 Playbook)四、优化点逐项对比五、执行与验证5.1 执行5.2 验证5.3 加新主机(零修改 Playbook)六、关于你的两个问题的最终建议这份 Playbook 整体结构清晰、任务编排合理。我先做一轮代码审查,再回答你的两个问题,并给出优化后的企业级版本。一、代码审查:发现 3 个需要修正的问题问题 1:第 7 步shell验证可能导致 Playbook 失败(严重)- name: 7. 验证 Apache 是否监听 { { http_port }} 端口 shell: "ss -tlnp | grep :{ { http_port }}" register: apache_port_checkBug:如果grep没有匹配到内容(比如 Apache 还没完全启动、或端口未生效),grep返回退出码1,Ansible 会将此任务标记为failed,整个 Playbook 中断。但你的本意是「检查并打印结果」,即使没匹配到也应该继续执行并展示结果。修复:加changed_when: false和failed_when: false。问题 2:SELinux 未处理(RHEL/CentOS 常见坑)在 RHE