|
|
|
@ -0,0 +1,73 @@
|
|
|
|
|
<h1><center>企业级Ansible常见面试题</center></h1>
|
|
|
|
|
|
|
|
|
|
作者:行癫(盗版必究)
|
|
|
|
|
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
注意:
|
|
|
|
|
|
|
|
|
|
所有答案仅供参考,大家在记忆过程中一定要理解记忆
|
|
|
|
|
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
1.什么是 Ansible?请简要解释 Ansible 的基本概念和工作原理
|
|
|
|
|
|
|
|
|
|
答:Ansible 是一种自动化配置管理工具,用于自动化部署、配置和管理多台服务器。它使用 SSH 协议来与目标主机通信,不需要在目标主机上安装客户端代理。Ansible 使用 YAML 格式的清晰易读的 Playbook 来定义任务和配置,并通过模块执行这些任务
|
|
|
|
|
|
|
|
|
|
2.什么是 Ansible Playbook
|
|
|
|
|
|
|
|
|
|
答:Ansible Playbook 是一个用于定义一系列任务和配置的 YAML 文件。它描述了 Ansible 应该在目标主机上执行的操作,包括安装软件包、配置文件、启动服务等等。Playbook 是 Ansible 的核心配置文件,用于自动化部署和管理服务器
|
|
|
|
|
|
|
|
|
|
3.请简要说明 Ansible 模块是什么,以及它们的作用
|
|
|
|
|
|
|
|
|
|
答:Ansible 模块是 Ansible 的基本执行单元,用于执行特定任务。每个模块负责执行不同的操作,例如安装软件包、复制文件、管理用户等
|
|
|
|
|
|
|
|
|
|
4.如何在 Ansible 中定义主机清单(Inventory)
|
|
|
|
|
|
|
|
|
|
答:主机清单是一个文本文件,用于指定 Ansible 应该管理的目标主机。可以使用 INI 文件格式或 YAML 文件格式定义主机清单
|
|
|
|
|
|
|
|
|
|
```shells
|
|
|
|
|
[web_servers]
|
|
|
|
|
webserver1.example.com
|
|
|
|
|
webserver2.example.com
|
|
|
|
|
|
|
|
|
|
[db_servers]
|
|
|
|
|
dbserver1.example.com
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4.什么是 Ansible Role
|
|
|
|
|
|
|
|
|
|
答:Ansible Role 是一个可重用的任务和配置集合,它可以在不同的 Playbook 中引用。Roles 使代码更有组织性和可维护性,可以将常见的任务和配置封装到一个角色中,然后在多个 Playbook 中共享和重复使用
|
|
|
|
|
|
|
|
|
|
5.如何在 Ansible 中传递变量给 Playbook
|
|
|
|
|
|
|
|
|
|
答:可以通过多种方式向 Ansible Playbook 传递变量,包括在命令行上使用 `-e` 参数、在主机清单中定义变量、或在 Playbook 文件中定义变量
|
|
|
|
|
|
|
|
|
|
6.什么是 Ansible 的事实(Facts)?如何查看主机的事实信息?
|
|
|
|
|
|
|
|
|
|
答:Ansible 事实是有关目标主机的信息,如操作系统类型、主机名、IP 地址等。您可以使用 `ansible_facts` 变量来访问这些信息。
|
|
|
|
|
|
|
|
|
|
7.如何在 Ansible Playbook 中处理敏感数据,例如密码或密钥?
|
|
|
|
|
|
|
|
|
|
答:Ansible 提供了一种称为 Ansible Vault 的工具,用于加密和解密敏感数据。您可以使用 `ansible-vault` 命令来创建和编辑加密文件,然后在 Playbook 中引用这些文件。这样可以确保敏感数据在存储和传输过程中得到保护
|
|
|
|
|
|
|
|
|
|
8.什么是 Ansible 的角色(Roles)?它们有什么优点?
|
|
|
|
|
|
|
|
|
|
答:Ansible 角色是一种组织和复用 Ansible Playbook 的方式,可以包括任务、变量、模板和处理程序文件。角色的优点包括可重用性、模块化和更好的组织性。它们可以轻松地在不同的 Playbook 中引用,使配置管理更加模块化和可维护
|
|
|
|
|
|
|
|
|
|
9.请解释 Ansible 的 Jinja2 模板引擎是什么,以及它在 Ansible Playbook 中的作用
|
|
|
|
|
|
|
|
|
|
答:Jinja2 是一种模板引擎,用于在 Ansible Playbook 中生成动态内容。它允许您在 Playbook 中使用变量、过滤器和控制结构来生成配置文件、脚本和其他文本文件。这使得 Playbook 更加灵活,可以根据不同的情况生成不同的配置
|
|
|
|
|
|
|
|
|
|
10.如何在 Ansible 中进行持续集成(CI)和持续交付(CD)
|
|
|
|
|
|
|
|
|
|
答:Ansible 可以与持续集成和持续交付工具(如 Jenkins、GitLab CI/CD、Travis CI 等)集成,以实现自动化的构建、测试和部署流程。通过将 Ansible Playbooks 集成到 CI/CD 管道中,可以实现自动化部署和配置管理
|
|
|
|
|
|
|
|
|
|
11.什么是 Ansible 的剧本(Ad-Hoc Commands)
|
|
|
|
|
|
|
|
|
|
答:Ansible 的剧本是用于执行一次性任务的命令,而不是通过 Playbook 进行长期管理。剧本通常用于执行快速的任务,如收集系统信息、执行一次性命令或进行故障排除
|
|
|
|
|
|
|
|
|
|
12.之前都写过那些ansible剧本
|
|
|
|
|
|
|
|
|
|
答:负载均衡高可用集群剧本、zabbix-agent安装配置剧本、批量部署服务剧本等
|
|
|
|
|
|