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

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

中文翻译:

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

master是顶级节点。

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

一、建立state tree

1.打开state

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

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

pkill salt-mastersalt-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