2019 DevOps 必备面试题——配置管理篇

原文地址: https://medium.com/edureka/de...
原文做者:Saurabh Kulshrestha
翻译君:CODING 戴维奥普斯

如今让咱们来看看您对配置管理的了解程度。python

Q一、配置管理流程的目标是什么?

配置管理(CM)的目的是经过使开发或部署过程可控且可重复,来确保产品或系统在其整个生命周期中的完整性,从而建立更高质量的产品或系统。CM 流程容许有序管理系统信息和系统更改,以便:apache

  • 调整能力
  • 提升性能
  • 提高可靠性或可维护性
  • 延长寿命
  • 下降成本
  • 下降风险
  • 及时纠正缺陷

Q二、IT 资产管理和配置管理有什么区别?IT 资产和配置有什么区别?

如下是资产管理和配置管理之间的一些差别:安全

图片

接下来解释资产。它具备财务价值以及附加的折旧率。IT 资产只是它的一个子集。任何具备成本的组织都将其用于资产价值计算和税收计算中的相关收益归属于资产管理,此类项目称为资产。bash

另外一方面,配置项可能有也可能没有分配给它的财务值,它不会有任何与之相关的折旧,所以它的生命不依赖于其财务价值,而是取决于该项目对该组织的过期时间。服务器

如今,能够举例说明二者之间的类似性和差别:
1)类似性:
服务器 - 它既是资产又是配置项。
2)差别:
建筑 - 这是一种资产,但不是配置项。
文档 - 它是配置项但不是资产网络

Q三、您对“基础设施即代码”有何见解?它如何适用于 DevOps 方法?它的目的是什么?

基础设施即代码(IAC)是一种 IT 基础架构,运维团队可使用它来自动管理和经过代码进行配置,而不是经过手工的过程。架构

更快部署的公司也将基础设施视为软件:可使用 DevOps 工具和流程管理的代码。利用这些工具,您能够更轻松、快速、安全、可靠地更改基础架构。框架

Q四、Puppet、Chef、SaltStack 和 Ansible 中哪个您认为是最好的配置管理(CM)工具?为何?

这取决于研发组织的需求,所以须要在全部这些工具上提到如下几点:
Puppet 是最古老,最成熟的 CM 工具。Puppet 是一个基于 Ruby 的配置管理工具,虽然它有一些免费功能,但 Puppet 大部分很棒的内容仅在付费版本中可用。不须要大量额外功能的组织会发现 Puppet 颇有用,但那些须要更多自定义的组织可能须要升级到付费版本。运维

Chef 是用 Ruby 编写的,所以能够由熟悉该语言的人进行定制。它还包括免费功能,若是须要,还能够从开源版本升级到企业级。最重要的是,它是一个很是灵活的产品。tcp

Ansible 是一个很是安全的选项,由于它使用 Secure Shell。它是一个简单的工具,但除了配置管理以外,它还提供了许多其余服务。它很是容易学习,所以很是适合那些非专职 IT 但仍须要配置管理工具的人员。

SaltStack 是基于 python 的开源 CM 工具,适用于大型企业,但其学习曲线至关低。

Q五、什么是 Puppet?

它是一个配置管理工具,用于自动执行管理任务。Puppet 有一个 Master-Slave 架构,其中 Slave 必须首先向 Master 发送证书签名请求,Master 必须签署该证书才能在 Puppet Master 和 Puppet Slave 之间创建安全链接,以下图所示。Puppet Slave 向 Puppet Master 发送请求,而后 Puppet Master 向 Slave 推送配置。请参阅下图解释上述说明。

图片

Q六、在客户端使用 Puppet Master 进行身份验证以前,须要对其证书进行签名和接受。您将如何自动完成这项任务?

最简单的方法是在 puppet.conf 中启用自动签名。请注意这是一个安全风险。若是您仍想这样作:

  • 为您的 puppet master 创建防火墙 - 将端口 tcp / 8140 限制为您信任的网络。
  • 为每一个“信任区域”建立 puppet master,而且只在该 puppet master 清单中包含可信节点。
  • 切勿使用完整的通配符,例如 * 。

Q七、描述经过 Puppet 自动化流程所取得的最重要的收益

对于这个答案,我建议您解释一下您过去使用 Puppet 的经历。能够参考如下示例:
我使用 Puppet 自动配置和部署 Linux 和 Windows 机器。除了将处理时间从一周缩短到 10 分钟以外,我还使用了角色和配置文件模式,并在 README 中记录了每一个模块的用途,以确保其余人可使用 Git 更新模块。我写的模块仍然在使用,可是个人团队成员和社区成员对它们进行了改进。

Q八、您使用哪些开源或社区工具来使 Puppet 更强大?

在这里,您须要说起工具以及如何使用这些工具使 Puppet 更强大。如下是一个供您参考的示例:
咱们经过项目管理工具进行更改请求,经过内部流程管理请求,而后咱们使用 Git 和 Puppet 的 Code Manager 应用程序来管理 Puppet 代码。此外,咱们使用测试框架经过 Jenkins 中的持续集成流水线运行全部 Puppet 更改。

Q九、什么是 Puppet 清单?

首先定义清单。每一个节点(或 Puppet Agent)都在 Puppet Master 中得到了用 Puppet 语言编写的配置细节。这些细节用 Puppet 能够理解的语言编写,称为 Manifest。它们由 Puppet 代码组成,其文件名使用 .pp 扩展名。

如今举个例子:您能够在 Puppet Master 中编写一个清单,用于建立文件并在链接到 Puppet Master 的全部 Puppet Agent(Slaves)上安装 apache。

Q十、什么是 Puppet 模块以及它与 Puppet Manifest 的不一样之处?

Puppet 模块是清单和数据(例如事实,文件和模板)的集合,它们具备特定的目录结构。模块对于组织 Puppet 代码颇有用,由于它们容许您将代码拆分为多个清单。使用模块来组织几乎全部的 Puppet 清单是最佳实践。

Puppet 程序称为 Manifest,它由 Puppet 代码组成,其文件名使用 .pp 扩展名。

Q十一、什么是 Puppet 的 Facter?

您应该回答 Facter 在 Puppet 中作了什么:“Facter 收集有关 Puppet Agent 的基本信息(事实),如硬件细节,网络设置,操做系统类型和版本,IP 地址,MAC 地址,SSH 密钥等等。这些 facts 随后会在 Puppet Master 的清单中做为变量提供。”

Q十二、什么是 Chef?

它是一个强大的自动化平台,可将基础架构转换为代码。Chef 是一个工具,您能够编写用于自动化流程的脚本,流程涵盖几乎与 IT 相关的任何事情。

Chef 的架构包括:

  • Chef Server: Chef Server 是基础架构配置数据的中央存储。Chef Server 存储配置节点所需的数据并提供搜索功能,并容许您根据数据动态驱动节点配置。
  • Chef Node: Node 是使用 Chef-client 配置的任何主机。Chef-client 在您的节点上运行,与 Chef Server 联系以获取配置节点所需的信息。因为 Node 是运行 Chef-client 软件的机器,所以节点有时被称为“客户端”。
  • Chef Workstation: Chef Workstation 是您用来修改 cookbook 和其余配置数据的主机。

图片

Q1三、Chef 的资源是什么?

资源表明一个基础架构及其所需的状态,例如应安装的软件包,应运行的服务或应生成的文件。
资源的功能包括如下几点:

  • 描述配置项的所需状态。
  • 声明将该项目置于所需状态所需的步骤。
  • 指定资源类型,例如包,模板或服务。
  • 根据须要列出其余详细信息(也称为资源属性)。
  • 被分类为配方(recipes),来描述工做配置。

Q1四、Chef 的 Recipe 是什么?

Recipes 描述了特定配置或策略的资源集合,描述了配置系统部分所需的一切。
Recipes 的功能:

  • 安装和配置软件组件。
  • 管理文件。
  • 部署应用程序。
  • 执行其余 recipe。

Q1五、Cookbook 与 Recipe 有何不一样?

能够简单地说,“Recipe 是一组资源,主要配置软件包或某些基础架构。Cookbook 将 recipe 和其余信息整合在一块儿,比单独使用 recipe 更易于管理。”
译者注:cookbook 相似于食谱集;recipe 相似于食谱。

Q1六、若是未在 Chef 中指定 Resource 操做,会发生什么?

当您未指定资源的操做时,Chef 会使用默认操做。
如今用一个例子解释一下,以下资源:

file ‘C:UsersAdministratorchef-reposettings.ini’ do
content ‘greeting=hello world’
end

与下面的资源相同:

file ‘C:UsersAdministratorchef-reposettings.ini’ do
action :create
content ‘greeting=hello world’
end

由于:建立是文件资源的默认操做。

Q1七、什么是 Ansible 模块?

模块被认为是 Ansible 的工做单元。每一个模块大可能是独立的,能够用标准的脚本语言编写,如 Python、Perl、Ruby、bash 等。模块的一个重要属性是幂等性,这意味着即便一个操做重复屡次(例如从停电中恢复),它会始终将系统置于同一状态。

Q1八、什么是 Ansible 的 playbooks?

Playbooks 是 Ansible 的配置、部署和编排语言。他们能够描述您但愿远程系统实施的策略,或者描述通常 IT 流程中的一系列步骤。Playbooks 设计为人类可读的,并以基本文本语言开发。在基础级别,可使用 playbooks 来管理远程计算机的配置和部署。

Q1九、如何查看全部 ansible_ 变量的列表?

Ansible 默认收集有关所管理机器的“facts”,能够在 playbooks 和模板中访问这些“facts”。要查看计算机的全部可用“facts”的列表,能够将“设置”模块做为临时操做运行:

Ansible -m setup hostname

这将打印出那个特定主机全部可用“facts”的目录。

相关文章
相关标签/搜索