SaltStack基础(6) – 使用highstate应用多个state文件

有没有注意到上一篇文章我们创建的salt state没有包含哪个minion应该接收我们发送过去的配置?salt state设计为通用的,只描述了一个配置如何实现配置。在这篇文章中我们学习一个称为Top的文件,来描述哪些minions应该应用配置。
states和Top文件一起组成了saltstack配置管理的核心功能。

Top文件介绍

在highstate期间Top文件用来应用多个state文件到salt minions。state被应用哪台minion是由Top文件中的target字段决定。

什么是highstate?
highstate使所有的目录minions下载/srv/salt/top.sls文件并尝试找到与target匹配的state。如果找到匹配的target,minion就应用这个target下面列出的所有state。许多用户定时地运行highstate,以确保系统保持正确状态。

创建Top文件

在创建Top文件之前,花点时间考虑一下你的系统的配置应该是怎样的。考虑你设置的系统的不同的类型,哪一个是共同的,哪一个是与其它不一样的。例如你简单的Top文件如下:

在saltstack的范例中,Top文件的列表的每一项是一个state,Top文件中的targets用来定义哪个minion应该应用配置。
下面的例子展示Top文件是如何翻译成YAML文件的。

一旦Top文件被minion解析后,它们就执行与target匹配的所有state。例如一个系统的salt minion ID为atl-web4-prod会应用vim,script,user,apache,python和django states。
现在我们理解了Top文件的目的,我们继续创建一个。如果你用的是Vagrant demo文件你会注意到在saltstack/salt目录已经有一个top.sls文件,所以我们只需要更改它。否则你需要创建一个新文件。添加如下内容到你的top.sls文件:

  1. base:
  2.   '*':
  3.     - common
  4.   'minion1':
  5.     - nettools

在salt master命令行下执行如下命令来应用top.sls文件:

  1. salt '*' state.apply
  2. #calling state.apply with no arguments starts a highstate.

如你所想,minion1和minion2两个都会应用common state,且minion1也应用nettools state。

标签:SaltStack 发布于:2019-11-20 16:11:00