运维Ansible面试题及参考答案
目录
简述 Ansible 的工作原理,它是如何实现对远程主机管理的?
Ansible 是基于什么语言开发的?这门语言的特性对 Ansible 的功能实现有哪些帮助?
解释 Agentless 在 Ansible 中的含义,与基于 Agent 的自动化工具相比,优势体现在哪?
Ansible 中的 Inventory 文件是什么?它的作用是什么?如何分组管理主机?
说出 Ansible 中常用的几种连接方式,各自适用于什么场景?
什么是 Ansible 的 Ad - Hoc 命令?举个实际使用场景的例子。
Ansible 如何确保安全性,在传输敏感信息时采用了哪些机制?
简述 Ansible 模块与插件的区别,它们分别在 Ansible 生态中扮演什么角色?
“幂等性” 在 Ansible 操作里非常重要,解释什么是幂等性以及 Ansible 如何保证幂等?
说明 Ansible 中 facts 的概念,如何收集并利用 facts 信息?
Ansible Tower 和 Ansible AWX 是什么?与原生 Ansible 相比有哪些拓展功能?
当多个团队共用 Ansible 环境时,如何做好权限管理与环境隔离?
解释 Ansible Galaxy,以及如何利用它快速搭建项目环境?
Ansible 中的动态 Inventory 是什么?举例说明适用情况及配置方法。
在文件管理方面,copy 模块和 template 模块有何区别?分别适用于什么场景?
要用 Ansible 安装一个软件包,yum 模块和 apt 模块分别在哪些系统里常用,使用时要注意什么?
举例说明 service 模块如何管理服务状态,如启动、停止、重启一个服务。
若要批量上传文件到远程多台主机,用哪个 Ansible 模块效率较高,如何操作?
讲解 user 模块创建用户时,可设置的关键参数有哪些,各参数作用是什么?
当需要修改远程主机的配置文件,lineinfile 和 replace 模块如何选择使用?
shell 模块和 command 模块有细微差别,简述这些差别以及实际使用中的注意事项。
利用 fetch 模块从远程主机下载文件到本地,要考虑哪些因素确保下载完整?
如何使用 ping 模块检查远程主机连通性,返回结果怎样解读?
对于数据库操作,Ansible 有没有对应模块?以 MySQL 为例说明其使用方法。
在管理网络设备时,netcfg 模块能实现哪些功能,配置过程有哪些要点?
unarchive 模块用于解压文件,常见的压缩格式它都支持吗?若不支持如何扩展?
用 stat 模块获取远程文件状态信息后,怎样在后续任务里根据这些信息做条件判断?
synchronize 模块常用于同步文件,对比直接用 copy 模块,优势在哪,适用于哪些场景?
yum_repository 模块可以管理 yum 源,描述创建一个私有 yum 源的步骤。
说明 mount 模块挂载磁盘分区的流程,挂载参数如何根据实际情况灵活调整?
get_url 模块用于从网络下载资源,怎样验证下载内容完整性,防止下载出错?
在使用 group 模块创建用户组时,怎样关联已有用户到新建组?
当远程主机内核参数需要调整时,可用 Ansible 哪个模块操作?举例说明具体调整过程。
简述 Ansible Playbook 的结构,关键组成部分有哪些,分别起什么作用?
编写一个 Playbook,实现批量在多台远程主机上安装 Nginx 并启动服务,写出完整代码及注释。
在 Playbook 里如何定义变量,变量的作用域如何划分,不同作用域变量优先级是怎样的?
讲解 Playbook 中使用 when 条件语句的场景,举例说明如何根据主机系统类型执行不同任务。
什么是 Playbook 的 handlers?与普通 tasks 有何区别?何时触发 handlers?
编写一个 Playbook,实现对远程主机配置文件备份,每天凌晨备份一次,保留最近 7 天备份文件。
在 Playbook 里如何实现循环操作,比如批量创建多个用户,给出代码示例。
若要让 Playbook 支持不同环境(开发、测试、生产)部署,如何设计结构和变量,使其灵活适配?
说明 Playbook 里使用 include 和 import 的区别,各自适用于什么情况?
编写 Playbook,检测远程主机上的某个服务是否运行,若未运行则尝试重启并邮件通知管理员。
在一个复杂的多层架构项目里,如何组织多个 Playbook 协同工作,实现完整的自动化部署?
如何在 Playbook 中实现错误处理机制,确保部分任务出错后整体流程仍可控?
编写 Playbook,利用动态 Inventory 对接云主机资源,批量部署应用并做初始化配置。
当 Playbook 执行效率不理想时,从代码编写层面有哪些优化思路?举例说明。
减少不必要的模块调用和重复操作
合理利用缓存机制
优化循环操作
精简任务依赖关系
Ansible 执行任务报错 “Could not connect to the host”,列举可能原因及排查方法。
网络连接问题
SSH 配置问题
主机名解析问题
Ansible 配置或 Inventory 文件问题
若 Playbook 里某个任务一直处于 running 状态无响应,怎样定位问题,可能的原因有哪些?
查看任务详情与日志信息
分析任务本身的复杂性与资源占用
检查网络连接稳定性
模块与远程主机环境兼容性
依赖关系与前置条件未满足
执行 Ansible 命令时,返回结果显示 “Permission denied”,在远程主机和 Ansible 配置方面如何排查解决?
远程主机方面
Ansible 配置方面
发现 Ansible 部署应用后功能异常,如何开启详细调试模式获取更多排查线索?详细步骤是?
在执行 Ansible 命令时添加调试参数
检查远程主机上的相关日志
结合 Ansible 收集的主机事实信息(Facts)分析
利用 Ansible 的模块返回值进行分析
遇到 Ansible 模块执行结果与预期不符,从模块参数、主机环境、版本兼容性等角度,阐述排查流程。
模块参数角度
主机环境角度
版本兼容性角度
简述提升 Ansible 执行效率的几种方法,从 Inventory 管理、模块选择、并发设置等方面说明。
Inventory 管理方面
在大规模主机环境下使用 Ansible,如何优化连接方式,减少连接建立时间?
采用 SSH 复用技术
优化 SSH 密钥认证
选择合适的连接插件
调整连接超时参数
利用网络优化工具与配置
说明如何调整 Ansible 的并发任务数,根据不同硬件资源配置,给出合理并发设置建议。
调整并发任务数的方法
不同硬件资源配置下的合理并发设置建议
Ansible 执行过程中频繁读写磁盘影响速度,有哪些缓存策略或优化手段可缓解?
启用事实信息缓存(Facts caching)
优化模块的临时文件使用
利用本地缓存源(针对软件安装等场景)
优化 Playbook 中的文件操作任务
采用内存磁盘(适用于特定场景)
对比不同版本 Ansible 的性能表现,升级 Ansible 版本时要注意哪些性能相关事项?
不同版本 Ansible 性能表现对比
升级 Ansible 版本时的性能相关注意事项
简述 Ansible 的工作原理,它是如何实现对远程主机管理的?
Ansible 的工作原理主要是