state tree(以安装并运行 Apache为例)

源站:http://docs.saltstack.cn/topics/tutorials/states_pt1.html

中文翻译:http://blog.coocla.org/348.html


使用该tree来建立salt的文件树。

master是顶级节点。

个隔离度用于控制minion的行为。

一、建立state tree

1.打开state

vim /etc/salt/master
# 取消注释以下内容
file_roots:
  base:
    - /srv/salt

2.重启Salt master以使更改生效:

pkill salt-master
salt-master -d

二、Preparing the top file
在master上,上一步中的目录并没有被创建,(默认/srv/salt),创建一个名为top.sls文件,并添加以下内容:

base:
  '*':
    - webserver

这个top.sls文件是用来分隔环境的。默认环境是base,在base的环境集合定义了对minions的匹配,可以使用简单的*来指定所有的主机。


  • 目标minions
    salt可以通过glob、pcre正则表达式,或者通过grains来进行匹配任何的目标机器,例如:

base:
    'os:Fedora':
        - match: grain
        - webserver

目标minion分组(直接根据操作系统下发命令)

线上WEB,DB,IMG等安装配置相同或者相近的服务器可分为一组,方便批量安装和管理。

salt -G 'os:CentOS' test.ping


三、创建sls文件(注意,该文件不可以用tab排版,只能用空格…坑爹货)

在前述目录下创建webserver.sls文件,包含以下内容:

apache:                 # ID declaration
  pkg:                  # state declaration
    - installed         # function declaration

第一行,是对全局ID的声明,可以是任意的标识符,在这种情况下,使用需要被安装的软件包的包名来定义。

Note:对于apache httpd web服务器的包名取决于操作系统的发行版,例如,在Fedora是httpd,但在Debian/Ubuntu是apache2

第二行,是对state的声明,定义了我们所要使用的salt states,在这个例子中,我们使用pkg state以确保一个给定的包被正确安装。
第三行,称为函数的声明,这个函数被定义在pkg state这个模块中。

四、执行安装

下面让我们来运行我们创建的状态, 打开命令窗口在master 上运行下面语句。

salt '*' state.highstate