DevOps 面试题大全(五·下):Ansible 高级用法与最佳实践 25 题

前言

Ansible 面试题下篇(26-50 题),涵盖高级用法、故障排查、最佳实践、企业级应用等进阶内容。

三、高级用法题(26-35 题)

26. 多环境管理策略

使用目录结构区分环境:dev/staging/prod,每个环境独立 Inventory 和变量。

27. 动态分组技巧

# 基于标签分组
[aws_ec2]
plugin = aws_ec2
regions:
  - us-east-1
filters:
  tag:Environment: production
keyed_groups:
  - key: tags.Role
    prefix: role

28. 自定义 Fact 收集

# /etc/ansible/facts.d/custom.fact
[app]
version=2.0
environment=production

# Playbook 中使用
- debug:
    msg: "App version: {{ ansible_facts.app.version }}"

29. 并行控制策略

  • serial: 分批执行(滚动更新)
  • strategy: free(跳过慢节点)
  • throttle: 限制并发数

30. 复杂条件组合

when: >
  (ansible_os_family == "RedHat" and ansible_distribution_major_version >= "8")
  or
  (ansible_os_family == "Debian" and ansible_distribution_version >= "20.04")

31. 嵌套循环

- name: 创建用户组组合
  user:
    name: "{{ item.0 }}-{{ item.1 }}"
  loop: "{{ ['web', 'db'] | product(['dev', 'prod']) | list }}"

32. 包含和导入

  • include_tasks - 动态包含
  • import_tasks - 静态导入
  • include_role - 动态包含 Role
  • import_role - 静态导入 Role

33. 元数据任务

- meta: flush_handlers  # 立即触发 Handler
- meta: end_play        # 结束 Play
- meta: reset_connection # 重置连接

34. 自定义插件

Callback 插件(自定义输出)、Filter 插件(自定义过滤)、Lookup 插件(数据查询)。

35. AWX/Tower 集成

企业级 Web UI,RBAC 权限,作业调度,API 集成,审计日志。

四、故障排查题(36-42 题)

36. SSH 连接失败

  1. 检查 SSH 服务状态
  2. 验证密钥权限(600)
  3. 测试手动 SSH 连接
  4. 检查防火墙规则
  5. 增加 -vvv 详细输出

37. 权限错误处理

使用 become: yes 提权,配置 become_method(sudo/su)。

38. 变量未定义

使用 default 过滤器提供默认值,检查变量作用域。

39. 模板渲染失败

检查 Jinja2 语法,验证变量定义,使用 ansible-playbook --syntax-check。

40. 模块执行超时

调整 timeout 参数,使用异步任务,优化脚本性能。

41. Inventory 解析错误

验证 YAML/INI 语法,检查插件配置,测试 ansible-inventory --list。

42. 性能问题分析

  • 启用 profiler 插件
  • 分析执行时间
  • 优化网络延迟
  • 调整并发参数

五、最佳实践题(43-47 题)

43. 项目结构组织

project/
├── inventories/
│   ├── dev/
│   ├── staging/
│   └── prod/
├── roles/
├── playbooks/
├── group_vars/
├── host_vars/
└── ansible.cfg

44. 版本控制策略

  • Playbook 纳入 Git 管理
  • 使用标签标记版本
  • Code Review 流程
  • CI/CD 集成测试

45. 测试方法

  • --check 模式(预演)
  • --diff 查看差异
  • Molecule 测试框架
  • Testinfra 验证

46. 安全加固

  • Vault 加密敏感数据
  • 最小权限原则
  • 禁用 root 登录
  • 定期更新模块
  • 审计日志记录

47. 文档规范

  • README 说明用途
  • 注释复杂逻辑
  • 变量命名规范
  • 示例 Playbook

六、企业级应用题(48-50 题)

48. 大规模部署策略

  • 分批滚动更新
  • 健康检查验证
  • 自动回滚机制
  • 监控告警集成

49. 多云环境管理

统一 Inventory,抽象变量层,云厂商模块,标签管理。

50. CI/CD 集成

GitLab CI/Jenkins 触发,自动化测试,环境隔离,审批流程。

总结

Ansible 以简单易用著称,但企业级应用需要深入理解其架构和最佳实践。掌握这些面试题有助于构建可靠的自动化运维体系。

学习路线建议

  1. 基础命令和 Ad-Hoc
  2. Playbook 编写
  3. Role 开发和复用
  4. Vault 安全管理
  5. AWX/Tower 企业版
  6. 自定义模块和插件

发表回复

后才能评论