原文地址: https://medium.com/edureka/de...
原文做者:Saurabh Kulshrestha
翻译君:CODING 戴维奥普斯
如今让咱们来看看您对配置管理的了解程度。python
配置管理(CM)的目的是经过使开发或部署过程可控且可重复,来确保产品或系统在其整个生命周期中的完整性,从而建立更高质量的产品或系统。CM 流程容许有序管理系统信息和系统更改,以便:apache
如下是资产管理和配置管理之间的一些差别:安全
接下来解释资产。它具备财务价值以及附加的折旧率。IT 资产只是它的一个子集。任何具备成本的组织都将其用于资产价值计算和税收计算中的相关收益归属于资产管理,此类项目称为资产。bash
另外一方面,配置项可能有也可能没有分配给它的财务值,它不会有任何与之相关的折旧,所以它的生命不依赖于其财务价值,而是取决于该项目对该组织的过期时间。服务器
如今,能够举例说明二者之间的类似性和差别:
1)类似性:
服务器 - 它既是资产又是配置项。
2)差别:
建筑 - 这是一种资产,但不是配置项。
文档 - 它是配置项但不是资产网络
基础设施即代码(IAC)是一种 IT 基础架构,运维团队可使用它来自动管理和经过代码进行配置,而不是经过手工的过程。架构
更快部署的公司也将基础设施视为软件:可使用 DevOps 工具和流程管理的代码。利用这些工具,您能够更轻松、快速、安全、可靠地更改基础架构。框架
这取决于研发组织的需求,所以须要在全部这些工具上提到如下几点:
Puppet 是最古老,最成熟的 CM 工具。Puppet 是一个基于 Ruby 的配置管理工具,虽然它有一些免费功能,但 Puppet 大部分很棒的内容仅在付费版本中可用。不须要大量额外功能的组织会发现 Puppet 颇有用,但那些须要更多自定义的组织可能须要升级到付费版本。运维
Chef 是用 Ruby 编写的,所以能够由熟悉该语言的人进行定制。它还包括免费功能,若是须要,还能够从开源版本升级到企业级。最重要的是,它是一个很是灵活的产品。tcp
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”的目录。