简介SaltStack术语和概念

介绍

Salt或SaltStack是一个远程执行工具和配置管理系统。 远程执行功能允许管理员使用灵活的目标系统并行地在各种机器上运行命令。 配置管理功能建立客户端 - 服务器模型,以快速,轻松和安全地使基础架构组件符合给定策略。

在本指南中,我们将讨论开始有效学习使用Salt所需的一些基本概念和术语。

Salt机角色

Salt的控制结构相当简单,因为配置管理系统。 在典型的设置中,只有两种不同类型的机器。

Salt主人是控制基础设施,决定了其管理的服务器策略的计算机。 它既作为配置数据的存储库,也作为启动远程命令的控制中心,并确保其他机器的状态。 守护程序称为salt-master安装在主机提供此功能。

虽然可以使用无主配置控制基础设施,但大多数设置都受益于Salt主机中提供的高级功能。 事实上,对于大型基础设施管理,Salt有能力将通常与主服务器相关的某些组件和任务委托给专用服务器。 它还可以在分层主配置中操作,其中命令可以通过下级主机中继。

小仆

食Salt管理服务器称为Minion 守护程序称为salt-minion安装在每个受管机器的配置,并与主沟通。 minion负责执行主机发送的指令,报告作业的成功,以及提供有关底层主机的数据。

Salt组件如何沟通

Salt master和minions在默认情况下使用ZeroMQ消息库进行通信。 这提供了各方之间极高性能的网络通信,允许Salt以快速的速度发送消息和数据。 由于ZeroMQ是一个库,而不是一个独立的服务,这个功能是可用salt-mastersalt-minion守护进程本身。

当使用ZeroMQ时,Salt维护一个用于认证主人和下属的公钥系统。 首次引导时,minion会生成密钥对,并将其凭据发送到其配置为与之联系的主服务器。 主人然后在验证小军的身份之后接受此密钥。 然后双方可以使用用密钥加密的ZeroMQ快速和安全地进行通信。

如果由于某种原因,它是不可能安装salt-minion一个节点上守护进程,Salt也可以发出通过SSH命令。 这个传输选项是为了方便,但是它相当大地降低性能,并可能导致与其他Salt命令在一些情况下的复杂性。 强烈建议您使用salt-minion守护在那里可能性能,安全性和简单性。

Salt术语

在潜入Salt之前,最好先熟悉一些将要使用的术语。 Salt有许多强大的功能,但首先可能很难匹配名称和它们的功能。 让我们来看看你可能会看到的一些更一般的术语。

远程执行:执行模块和功能

Salt尝试提供其远程执行和配置管理功能之间的区别。 远程执行能力是由执行模块提供。 执行模块是一组上的Minion执行工作相关的功能

虽然Salt包含了允许在minions上运行任意shell命令的功能,但是执行模块背后的想法是为执行命令提供一个简洁的机制,而无需“shell out”并提供有关如何完成该过程的详细说明。 模块的使用允许Salt抽象系统之间的潜在差异。 你可以从运行Linux或BSD的minions获得类似的信息,即使收集数据的实际机制不同。

Salt自带一个体面的选择内置的执行模块 ,以提供超出开箱功能。 管理员还可以编写自己的模块或包括社区编写的模块来扩展,可以在机器小兵被执行的命令的库。

配置管理:状态,公式和模板

Salt的配置管理功能可以通过创建配置文件的存储库来访问。 这些存储库中包含的文件可以是几种不同类型。

状态和公式

Salt的配置管理部分使用的是国家制度主要实现的。

国家系统使用状态的模块 ,这是从上面描述的执行模块是不同的。 幸运的是,状态和执行模块往往彼此非常相似。 状态系统是适当命名的,因为它允许管理员描述系统应放置的状态。与执行模块一样,大多数状态模块表示功能快捷方式,并为许多常见操作提供简单的语法。 这有助于保持可读性,并消除在配置管理文件本身中包含复杂逻辑的必要性。

Salt公式是套状态模块调用,设置有产生某种结果的目的。 这些是描述在应用公式后系统应如何查看的配置管理文件。 默认情况下,这些是以YAML数据序列化格式写入的,这在高可读性和机器友好性之间提供了非常好的中间地带。

Salt管理员可以通过将minions映射到特定的公式集来应用公式。 也可以根据需要以特定的方式应用公式。 Minions将执行在其中找到的状态模块,使其系统符合提供的策略。

由SaltStack组织和社区创建的Salt配方收集好可以通过发现这个GitHub的帐户

模板

模板允许Salt式和其他文件以更灵活的方式来写。 模板可以使用关于minions的可用信息来构造定制版本的公式或配置文件。 默认情况下,Salt使用Jinja模板格式,它提供替换功能和简单的逻辑结构用于决策。

渲染器 ,运行出示有效状态或配置文件的模板组件。 渲染器由构成输入的模板格式和将作为输出生成的数据序列化格式定义。 考虑到上述默认值,默认渲染器处理Jinja模板以产生YAML文件。

查询关于和向Minions分配信息

为了管理大量的系统,Salt需要每个主机系统的一些信息。 上述模板可以使用与每个系统相关联的数据来定制每个小应用程序的行为。 有几个不同的系统可以查询或将此信息分配给主机。

谷物

Salt颗粒是条信息,通过收集和Minion维护,主要涉及其底层主机系统。 这些通常是收集salt-minion守护进程,并根据要求传递回主。 此功能可用于许多不同的目的。

例如,粒度数据可以用于针对远程执行或配置管理的从属池的目标节点的特定子集。 如果你想看到你的Ubuntu服务器的正常运行时间,谷物允许你只定向这些机器。

粒度也可以用作配置更改或命令的参数。 例如,您可以用谷物来获取与相关联的IPv4地址eth0接口更改配置文件或作为一个参数的命令。

管理员还可以将粒度分配给minions。 例如,使用grain来为服务器分配“角色”是相当常见的。 然后,这可以用于目标与上述操作系统示例类似的节点子集。

支柱

虽然是可能的粮食分配给Minion,绝大多数配置变量将通过支柱系统来分配。 在Salt中,柱子表示一个键值存储,一个minion可以用来检索任意分配的数据。 这用作字典数据结构,可以嵌套或分层用于组织目的。

与粒度系统相比,柱子提供了一些重要的优点。 最重要的是,支柱数据仅适用于分配给它的下属。 其他minions将无法访问存储在其中的值。 这使其成为存储特定于节点或节点子集的敏感数据的理想选择。 例如,秘密密钥或数据库连接字符串通常在柱配置中提供。

支柱数据通常在配置管理上下文中用作将可变数据注入配置模板的一种方式。 Salt提供了一些模板格式,用于用将要应用它的节点特定的项替换配置文件的可变部分。 粒度也经常以这种方式用于引用主机数据。

Salt矿是从哪里定期执行的命令上Minion的结果可以存储在主服务器上的区域。 这个系统的目的是收集在minion机器上运行的任意命令的结果。 这个全局存储可以在整个基础设施中由其他组件和子接口查询。

Salt mine仅存储每个命令运行的最新结果,这意味着如果您需要访问历史数据,它不会帮助您。 该矿的主要目的是提供来自Minion机的最新信息,作为已经可用的粮食数据的灵活补充。 小兵可以使用矿井系统查询他们的同行的数据。 小队刷新矿中数据的间隔可以基于每个小时进行配置。

附加功能

Salt提供了一些其他系统,不适合上述类别。

反应堆

Salt反应器系统提供了用于响应于产生的事件触发操作的机制。 Salt,整个基础架构发生的变化将导致salt-minionsalt-master守护程序生成ZeroMQ消息总线上的事件。 反应堆系统监视该总线并且比较事件与其配置的反应堆,以便适当地响应。

反应器系统的主要目的是提供用于产生自动化情况反应的灵活系统。 例如,如果您已经开发了自动扩展策略,您的系统将自动创建节点以动态满足您的资源需求。 每个新节点将触发事件。 可以设置反应器以监听这些事件并配置新节点,将其并入现有基础设施中。

赛跑者

Salt选手是主服务器,而不是Minion上执行的模块。 一些跑步者是用于检查系统的各个部分的状态或进行维护的通用实用程序。 一些是强大的应用程序,提供在更大规模上协调您的基础架构的能力。

返回者

Salt重返工作岗位是用来指定一个Minion运行操作的结果将被送到其他地点。 默认情况下,minions将他们的数据返回给master。 一个returner允许管理员将返回数据重新路由到不同的目的地。 通常,这意味着该结果将返回到由返回器到启动仆从命令的过程中所指定的目的地。

大多数情况下,返回者会将结果传递给数据库系统或指标或日志服务。 这提供了一种将任意数据导入这些系统的灵活方法。 返回者也可以用于收集Salt特定的数据,如作业缓存和事件数据。

Salt命令

Salt提供了许多命令来利用上面列出的组件。 这些工具之间的功能有一些重要的交叉,但我们试图突出它们的主要功能如下。

  • salt-master :这是主人的守护进程。 您可以直接使用此命令或更通常通过init脚本或服务文件启动主服务。
  • salt-minion :同样,这是Minion的守护进程,用于与主沟通和执行命令。 大多数用户也将从init脚本或服务文件启动。
  • salt-key :该工具用于管理马仔公共密钥。 此工具用于查看当前密钥并对由未来密钥发送的公钥做出决定。 它还可以生成键以放在带外带外。
  • salt :此命令是用来瞄准Minion才能运行即席执行模块。 这是用于远程执行的主要工具。
  • salt-ssh :该命令允许您使用SSH作为替代ZeroMQ的传输机制。
  • salt-run :该命令用于运行在主服务器上获得亚军模块。
  • salt-call :此命令用来直接在您登录到一个仆从运行执行模块。 这通常用于通过绕过主设备来调试有问题的命令。
  • salt-cloud :该命令用于控制和来自许多不同的供应商提供的云资源。 新的Minion可以很容易地启动和启动。

还有一些其他的命令,以及像salt-apisalt-cp ,和salt-syndic ,这是不使用这么频繁。

结论

现在,您已经熟悉了基本的SaltStack术语,并对您将遇到的工具负责的内容有了高度的了解,您可以开始设置Salt来控制您的基础设施。 接下来的指南中,我们将介绍如何安装和一个Ubuntu 14.04服务器上配置的Salt主服务器。 我们还将演示如何配置新的minion服务器,使他们在您的主人的管理下。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏