原文地址: https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文作者:Saurabh Kulshrestha
翻译君:CODING 戴维奥普斯
现在让我们来看看您对配置管理的了解程度。
配置管理( CM )的目的是通过使开发或部署过程可控且可重复,来确保产品或系统在其整个生命周期中的完整性,从而创建更高质量的产品或系统。CM 流程允许有序管理系统信息和系统更改,以便:
以下是资产管理和配置管理之间的一些差异:
接下来解释资产。它具有财务价值以及附加的折旧率。IT 资产只是它的一个子集。任何具有成本的组织都将其用于资产价值计算和税收计算中的相关收益归属于资产管理,此类项目称为资产。
另一方面,配置项可能有也可能没有分配给它的财务值,它不会有任何与之相关的折旧,因此它的生命不依赖于其财务价值,而是取决于该项目对该组织的过时时间。
现在,可以举例说明两者之间的相似性和差异: 1 )相似性: 服务器 - 它既是资产又是配置项。 2 )差异: 建筑 - 这是一种资产,但不是配置项。 文档 - 它是配置项但不是资产
基础设施即代码( IAC )是一种 IT 基础架构,运维团队可以使用它来自动管理和通过代码进行配置,而不是通过手工的过程。
更快部署的公司也将基础设施视为软件:可以使用 DevOps 工具和流程管理的代码。利用这些工具,您可以更轻松、快速、安全、可靠地更改基础架构。
这取决于研发组织的需求,因此需要在所有这些工具上提到以下几点: Puppet 是最古老,最成熟的 CM 工具。Puppet 是一个基于 Ruby 的配置管理工具,虽然它有一些免费功能,但 Puppet 大部分很棒的内容仅在付费版本中可用。不需要大量额外功能的组织会发现 Puppet 很有用,但那些需要更多自定义的组织可能需要升级到付费版本。
Chef 是用 Ruby 编写的,因此可以由熟悉该语言的人进行定制。它还包括免费功能,如果需要,还可以从开源版本升级到企业级。最重要的是,它是一个非常灵活的产品。
Ansible 是一个非常安全的选项,因为它使用 Secure Shell。它是一个简单的工具,但除了配置管理之外,它还提供了许多其他服务。它非常容易学习,因此非常适合那些非专职 IT 但仍需要配置管理工具的人员。
SaltStack 是基于 python 的开源 CM 工具,适用于大型企业,但其学习曲线相当低。
它是一个配置管理工具,用于自动执行管理任务。Puppet 有一个 Master-Slave 架构,其中 Slave 必须首先向 Master 发送证书签名请求,Master 必须签署该证书才能在 Puppet Master 和 Puppet Slave 之间建立安全连接,如下图所示。Puppet Slave 向 Puppet Master 发送请求,然后 Puppet Master 向 Slave 推送配置。请参阅下图解释上述说明。
最简单的方法是在 puppet.conf 中启用自动签名。请注意这是一个安全风险。如果您仍想这样做:
对于这个答案,我建议您解释一下您过去使用 Puppet 的经历。可以参考以下示例: 我使用 Puppet 自动配置和部署 Linux 和 Windows 机器。除了将处理时间从一周缩短到 10 分钟之外,我还使用了角色和配置文件模式,并在 README 中记录了每个模块的用途,以确保其他人可以使用 Git 更新模块。我写的模块仍然在使用,但是我的团队成员和社区成员对它们进行了改进。
在这里,您需要提及工具以及如何使用这些工具使 Puppet 更强大。以下是一个供您参考的示例: 我们通过项目管理工具进行更改请求,通过内部流程管理请求,然后我们使用 Git 和 Puppet 的 Code Manager 应用程序来管理 Puppet 代码。此外,我们使用测试框架通过 Jenkins 中的持续集成流水线运行所有 Puppet 更改。
首先定义清单。每个节点(或 Puppet Agent )都在 Puppet Master 中获得了用 Puppet 语言编写的配置细节。这些细节用 Puppet 可以理解的语言编写,称为 Manifest。它们由 Puppet 代码组成,其文件名使用 .pp 扩展名。
现在举个例子:您可以在 Puppet Master 中编写一个清单,用于创建文件并在连接到 Puppet Master 的所有 Puppet Agent ( Slaves )上安装 apache。
Puppet 模块是清单和数据(例如事实,文件和模板)的集合,它们具有特定的目录结构。模块对于组织 Puppet 代码很有用,因为它们允许您将代码拆分为多个清单。使用模块来组织几乎所有的 Puppet 清单是最佳实践。
Puppet 程序称为 Manifest,它由 Puppet 代码组成,其文件名使用 .pp 扩展名。
您应该回答 Facter 在 Puppet 中做了什么:“Facter 收集有关 Puppet Agent 的基本信息(事实),如硬件细节,网络设置,操作系统类型和版本,IP 地址,MAC 地址,SSH 密钥等等。这些 facts 随后会在 Puppet Master 的清单中作为变量提供。”
它是一个强大的自动化平台,可将基础架构转换为代码。Chef 是一个工具,您可以编写用于自动化流程的脚本,流程涵盖几乎与 IT 相关的任何事情。
Chef 的架构包括:
资源代表一个基础架构及其所需的状态,例如应安装的软件包,应运行的服务或应生成的文件。 资源的功能包括以下几点:
Recipes 描述了特定配置或策略的资源集合,描述了配置系统部分所需的一切。 Recipes 的功能:
可以简单地说,“Recipe 是一组资源,主要配置软件包或某些基础架构。Cookbook 将 recipe 和其他信息整合在一起,比单独使用 recipe 更易于管理。”
译者注:cookbook 类似于食谱集; recipe 类似于食谱。
当您未指定资源的操作时,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
因为:创建是文件资源的默认操作。
模块被认为是 Ansible 的工作单元。每个模块大多是独立的,可以用标准的脚本语言编写,如 Python、Perl、Ruby、bash 等。模块的一个重要属性是幂等性,这意味着即使一个操作重复多次(例如从停电中恢复),它会始终将系统置于同一状态。
Playbooks 是 Ansible 的配置、部署和编排语言。他们可以描述您希望远程系统实施的策略,或者描述一般 IT 流程中的一系列步骤。Playbooks 设计为人类可读的,并以基本文本语言开发。在基础级别,可以使用 playbooks 来管理远程计算机的配置和部署。
Ansible 默认收集有关所管理机器的“facts”,可以在 playbooks 和模板中访问这些“facts”。要查看计算机的所有可用“facts”的列表,可以将“设置”模块作为临时操作运行:
Ansible -m setup hostname
这将打印出那个特定主机所有可用“facts”的目录。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.