介绍
大多数基础架构都是由一组机器组成,组中的每台机器都扮演着与其他机器相似的角色。这些机器组彼此协同工作以创建应用程序堆栈。
为了有效地管理这些计算机组,管理员需要能够为这些组创建角色。例如,一组服务于前端Web流量的计算机可能具有一些角色,这些角色表明这些计算机应该都安装了Apache Web服务器软件包,并且Apache服务应始终运行。
在Salt中,包含网络上的计算机组之间的映射以及应该应用于它们的配置角色的文件称为top file
顶级文件默认命名为top.sls
,它们之所以如此命名,因为它们始终存在于包含状态文件的目录层次结构的“top”。该目录层次结构称为state tree
格式:
Env:
Target:
- StateFile
top文件有三个组成部分:
- 环境:包含一组用于配置系统的状态文件的状态树目录。
- 目标:一组机器,它们将应用一组状态。
- 状态文件:要应用于目标的状态文件列表。每个状态文件都描述了要在目标计算机上配置和强制执行的一个或多个状态。
这三个组件之间的关系嵌套如下:
- 环境包含目标
- 目标包含状态文件
环境
环境是目录层次结构,包含top文件和一组state文件。
环境可以以多种方式使用,但是并不要求它们被使用。实际上,部署Salt的最常见方式是使用单个环境,称为base
。如果用户具有专门调用多个版本状态树的用例,建议用户仅创建多个环境。例如在/etc/salt/master中定义除base之外的dev和prod环境:
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod
例如:
base: # Apply SLS files from the directory root for the 'base' environment
'web*': # All minions with a minion_id that begins with 'web'
- apache # Apply the state file named 'apache.sls'
可以在运行时通过将环境传递给salt
,salt-call
或salt-ssh
命令来动态选择环境。这通常state
通过使用saltenv
参数来完成模块中的函数。例如,要highstate
在所有minions上运行,只使用prod
环境中的top文件和SLS文件,请运行:salt '*' state.highstate saltenv=prod
注意:上面命名会应用prod环境定义的目录下的top文件,即/srv/salt/prod/top.sls,而不是默认的base目录下的/srv/salt/top.sls