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