Ansible 面试题

2025年5月19日 | 阅读 6 分钟
Ansible Interview Questions

下面列出了一些经常被问到的Ansible 面试题及答案。

1) 什么是 Ansible?

Ansible 是一个开源 IT 引擎,可自动执行应用程序部署、云配置、内部服务编排和其他 IT 工具。

Ansible 非常易于部署,因为它在客户端不使用任何代理自定义安全基础设施,而是通过将模块推送到客户端。这些模块在客户端本地执行,并将输出推回 Ansible 服务器。它可以使用SSH 密钥轻松连接到客户端。


2) Ansible 有哪些用途?

  • Ansible 对所有人免费使用。
  • Ansible 非常一致且轻量级,并且在操作系统或底层硬件方面没有任何限制。
  • 由于其无代理能力和开放的SSH安全特性,它非常安全。
  • Ansible 无需任何特殊的系统管理员技能即可安装和使用。
  • Ansible 具有平滑的学习曲线,这取决于全面的文档以及易于学习的结构和配置。
  • 它在插件、清单、模块剧本方面的模块化使其成为编排大型环境的理想选择。

3) 什么是 Ansible Tower?

Ansible Tower 类似于 Ansible,但面向更高级的企业级应用。它是一个基于 Web 的解决方案,通过简单的用户界面管理您的组织,提供一个仪表板,显示所有主机的状态摘要。它允许快速部署并监控所有配置。


4) 什么是 Ansible Galaxy?

Ansible Galaxy 是一个网站,用户可以在其中共享角色,并提供一个命令行工具用于安装、创建管理角色。

Ansible Galaxy 让 Ansible 最激动人心的功能之一(如应用程序安装或服务器配置的可重用角色)更具可见性。许多人在 Ansible Galaxy 中分享角色。


5) 什么是 Ansible 模块?

Ansible 模块是离散的代码单元,可以从命令行或剧本任务中使用。

在 Ansible 中,模块也被称为任务插件或库插件。

Ansible 附带了许多称为模块库的模块,这些模块可以直接通过剧本在远程主机上执行。

用户也可以编写自己的模块。这些模块可以控制服务、系统资源、文件软件包等,并处理执行系统命令。


6) Ansible 是如何工作的?

Ansible 通过连接到节点并将一个名为Ansible 模块的小程序推送到节点来工作。然后 Ansible 执行这些模块,并在完成后将其删除。模块库可以驻留在任何机器上,并且不需要守护进程、服务器数据库

Ansible Interview Questions

管理节点是控制整个剧本执行的控制节点。清单文件提供了需要运行 Ansible 模块的主机列表。管理节点建立SSH连接,并在主机的机器上执行小型模块并安装软件。


7) Ansible 服务器有什么要求?

  • 如果您是 Windows 用户,则需要有一个安装了 Linux 的虚拟机。
  • 它需要 Python 2.6 或更高版本。

8) Ansible 中的变量是什么?

变量非常类似于在编程语言中使用变量。它有助于您为一个变量赋值,并在剧本中的任何地方使用它。您可以围绕变量的值设置条件,并相应地在剧本中使用它们。


9) 什么是 Ansible 任务?

Ansible 任务允许我们将配置策略的各个部分分解成更小的文件。这些是用于自动化任何过程的代码块。


10) 解释 Ansible 中的基本术语或概念?

一些在 Ansible 中常用的基本术语,例如:

  • 控制器机器(Controller Machine):控制器机器用于配置要管理的服务器。这是安装了 Ansible 的机器。
  • 清单(Inventory):清单是一个初始化文件,其中包含有关您正在管理的各种服务器的详细信息。
  • 剧本(Playbook):这是一个用 YAML 格式编写的代码文件。剧本包含需要自动化或执行的任务。
  • 任务(Task):每个任务代表一个需要执行的单独过程,例如安装一个库。
  • 模块(Module):模块是一组可以执行的任务。Ansible 有数百个内置模块,您也可以创建自定义模块。
  • 角色(Role):角色是一种预定义的组织剧本和其他文件的方式,以便于共享和重用配置的各个部分。
  • 剧目(Play):从头到尾执行的任务,或剧本的执行称为剧目。
  • 事实(Facts):事实是存储有关系统(如网络接口或操作系统)详细信息的全局变量。
  • 处理器(Handlers):处理器用于触发服务的状态,例如重新启动或停止服务。

11) 什么是 Ad-hoc 命令?

Ad-hoc 命令是用于执行特定任务的简单单行命令。您可以将 Ad-hoc 命令视为编写剧本的替代方案。Ad-hoc 命令的示例,如下所示:

上面的 Ad-hoc 命令使用 NetScaler 模块禁用服务器。


12) 如何访问组中第一个主机的变量?

执行以下命令来访问组中第一个主机的变量:

此命令正在访问 webservers 组中第一台机器的主机名。如果您通过模板执行此操作,则使用 jinja2 '#set',或者您可以使用 set_fact。


13) 如何在剧本中隐藏敏感数据?

以下命令用于保持详细输出,但可以隐藏敏感信息,防止他人能够看到输出。

此外,no_log 属性可以应用于整个剧目。


14) 什么是 Ansible Vault?为什么使用它?

Ansible Vault 是一项功能,可让您安全地保管所有秘密。它可以加密整个文件、YAML 剧本,甚至一些变量。它提供了一种可以在剧本中集成敏感数据的机制。

Vault 以文件级别粒度实现,其中文件完全加密或解密。它使用相同的密码来加密和解密数据,这使得 Ansible Vault 用户友好。


15) 如何访问 Ansible 中的 shell 环境变量?

在 Ansible 中,如果您想访问现有变量,则需要使用 'env' 查找插件。

例如,您想访问管理机上的 Office 环境变量,如以下命令所示:


16) 如何将文件递归复制到目标主机?

“copy”模块有一个 recursive 参数。因此,如果您希望对大量文件进行更高效的操作,那么“synchronize”模块是完成此任务的最佳选择。


17) 如何为任务设置路径或其他环境变量?

可以使用“environment”关键字设置环境变量。它可以为单个任务或整个剧本设置。请按照以下代码了解如何设置路径,例如:


18) 如何查看主机的全部变量?

您可以使用 **host vary** 变量来查看所有变量。它以主机名作为键存储主机变量。例如,要查看为 localhost 定义的变量,您可以运行以下命令,例如:


19) Ansible 中的变量名和环境变量有什么区别?

变量名环境变量
您需要添加字符串来创建变量名。您需要现有变量才能访问环境变量。
您可以通过添加字符串轻松创建多个变量名。要创建环境变量,您必须引用高级 Ansible 剧本。
使用 IPV4 地址作为变量名。使用 {{ansible_env.SOME_VARIABLE}} 获取远程环境变量。

20) 什么是 RedHat Ansible?

Ansible 和 Red Hat 的 Ansible Tower 都是端到端的完整自动化平台,能够提供以下特性或功能:

  1. 资源预留
  2. 部署应用程序
  3. 编排工作流
  4. 管理 IT 系统
  5. IT 系统配置
  6. 网络
  7. 应用

所有这些活动都涉及 Ansible,它可以帮助企业解决实时业务问题。