📜  热门20 Ansible面试问题

📅  最后修改于: 2020-12-26 12:44:21             🧑  作者: Mango

Ansible面试问题

下面列出了一些常见的Ansible面试问题和答案。

1)什么是Ansible?

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

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

2)Ansible有什么用?

  • 每个人都可以免费使用Ansible。
  • Ansible非常一致且轻巧,并且不存在有关操作系统或底层硬件的约束。
  • 由于其无代理功能和开放的SSH安全功能,因此非常安全。
  • Ansible不需要任何特殊的系统管理员技能即可安装和使用它。
  • Ansible具有全面的文档确定的平滑学习曲线,并且易于学习的结构和配置。
  • 它与插件,清单,模块剧本有关的模块化特性使Ansible成为完美的伴侣,可以协调大型环境。

3)什么是Ansible塔?

在更多企业级别,Ansible塔就像Ansible。它是基于Web的解决方案,用于通过简单的用户界面管理组织,该界面提供了包含所有主机的所有状态摘要的仪表板。并允许快速部署,并监视所有配置。

4)什么是Ansible Galaxy?

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

Ansible Galaxy为Ansible最令人兴奋的功能之一提供了更大的可见性,例如应用程序安装或服务器配置的可重用角色。许多人在Ansible Galaxy中扮演角色。

5)什么是Ansible模块?

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

这些模块在Ansible中也称为任务插件或库插件。

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

用户还可以编写他们的模块。这些模块可以控制服务,系统资源,文件等,并处理执行的系统命令。

6)Ansible如何工作?

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

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

7)Ansible Server有哪些要求?

  • 如果您是Windows用户,则需要具有一个应在其中安装Linux的虚拟机。
  • 并且它需要Python 2.6或更高版本。

8)Ansible中有哪些变量?

变量与在编程语言中使用变量非常相似。它可以帮助您为变量分配值,并在剧本中的任何位置使用它。您可以将条件放在变量的值周围,并相应地在剧本中使用它们。

9)什么是Ansible任务?

Ansible Task使我们能够将配置策略的各个部分分解为较小的文件。这些是可用于自动执行任何过程的代码块。

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

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

  • 控制器计算机:控制器计算机用于配置服务器,该服务器是受管理的。这是安装Ansible的机器。
  • 库存:库存是一个初始化文件,其中包含有关您管理的不同服务器的详细信息。
  • 剧本:这是一个以YAML格式编写的代码文件。剧本包含需要自动化或执行的任务。
  • 任务:每个任务代表一个需要执行的过程,例如,安装一个库。
  • 模块:模块是可以执行的一组任务。 Ansible有100多个内置模块,您也可以创建自定义模块。
  • 角色:角色是用于组织剧本和其他文件以促进共享和重用部分配置的预定义方式。
  • 播放:从头到尾执行的任务或执行剧本的过程称为播放。
  • 事实:事实是全局变量,用于存储有关系统的详细信息,例如网络接口或操作系统。
  • 处理程序:处理程序用于触发服务的状态,例如重新启动或停止服务。

11)什么是临时命令?

即席命令是简单的单行命令,用于执行特定任务。您可以将临时命令视为编写剧本的替代方法。一个临时命令的示例,如下所示:

ansible host -m netscaler -a "nsc_host=nsc.example.com user=ansiuser password=ansipass"

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

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

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

{{ hostvars[groups['webservers'][0]]['ansible_eth0']['ipv4']['address'] }}

该命令正在访问webservers组中第一台计算机的主机名。如果通过模板执行此操作,请使用jinja2'#set',也可以使用set_fact。

13)如何在剧本中保留秘密数据?

以下命令用于保留详细的输出,但对希望看到输出的其他人隐藏敏感信息。

-    name: secrete task
shell: /user/bin/do_somthing -value={{secrete value}}
no_log: True 

另外,no_log属性可以应用于整个播放。

-    hosts: all
no_log: True

14)什么是Ansible保险柜,为什么使用它们?

Ansible Vault是一项功能,可确保您所有秘密的安全。它可以加密整个文件,YAML剧本,甚至几个变量。它提供了一种工具,您还可以将敏感数据集成到您的剧本中。

保管库以文件级粒度实施,其中文件完全加密或未加密。它使用相同的密码来加密和解密数据,从而使Ansible Vault易于使用。

15)在Ansible中访问shell环境变量的方式是什么?

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

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

---
# ...
vars:
local_home: "{{ lookup('env','Office') }}"
I
{{ ansible_env.SOME_VARIABLE }}

16)谁可以将文件递归复制到目标主机?

“复制”模块具有递归参数。因此,如果要对大量文件执行更高效的操作,则“同步”模块是执行此任务的最佳选择。

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

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

environment:
PATH: "{{ansible_env.PATH}}:/thingy/bin"
SOME: value

18)如何查看主机的所有变量?

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

ansible -m debug -a "var=hostvars[inventory_hostname]"

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

Variable Name Environment Variable
You need to add strings to create variable names. You need existing variables to access environment variables.
You can easily create multiple variable names by adding strings. To create environment variables, you must refer to the advanced Ansible playbook.
Use the IPV4 address for variable names. Use {{ansible_env.SOME_VARIABLE}} for remote environment variables.

20)什么是RedHat Ansible?

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

  • 供应
  • 部署应用
  • 编排工作流程
  • 管理IT系统
  • IT系统的配置
  • 网路
  • 应用领域

所有这些活动都与Ansible合作,可在其中帮助企业解决实时业务问题。