1.简单应用
在Salt中启动一个中心state系统,需要首先确保已经建立了Salt文件服务. 编辑master配置文件(file_roots) 取消如下行的注释:
file_roots: base: - /srv/salt
重启Salt master以使更改生效:
pkill salt-master salt-master -d
在master上,之前为未注释的目录下(默认为 /srv/salt),创建一个名为 top.sls 的文件并添加如下内容:
base: '*': - webserver
In the same directory as the top file, create a file named webserver.sls, containing the following:
apache: # ID declaration pkg: # state declaration - installed # function declaration
The first line, called the ID declaration, is an arbitrary identifier. In this case it defines the name of the package to be installed.
The second line, called the State declaration, defines which of the Salt States we are using. In this example, we are using the pkg state to ensure that a given package is installed.
The third line, called the Function declaration, defines which function in the pkg state module to call.
装软件包
下面让我们来运行我们创建的状态, 打开命令窗口在master 上运行上面语句。
salt '*' state.highstate
A clean and recommended setup for multiple environments would look like this
# Master file_roots configuration:file_roots: base: - /srv/salt/base dev: - /srv/salt/dev qa: - /srv/salt/qa prod: - /srv/salt/prod
Then only place state trees in the dev, qa, and prod environments, leaving the base environment open for generic file transfers. Then the top.sls file would look something like this:
dev: 'webserver*dev*': - webserver 'db*dev*': - db qa: 'webserver*qa*': - webserver 'db*qa*': - db prod: 'webserver*prod*': - webserver 'db*prod*': - db
Here is a slightly more complex top file example, showing the different types of matches you can perform:
base: '*': - ldap-client - networking - salt.minion 'salt-master*': - salt.master '^(memcache|web).(qa|prod).loc$': - match: pcre - nagios.mon.web - apache.server 'os:Ubuntu': - match: grain - repos.ubuntu 'os:(RedHat|CentOS)': - match: grain_pcre - repos.epel 'foo,bar,baz': - match: list - database 'somekey:abc': - match: pillar - xyz 'nag1* or G@role:monitoring': - match: compound - nagios.server
In this example top.sls, all minions get the ldap-client, networking, and salt.minion states. Any minion with an id matching the salt-master* glob will get the salt.master state. Any minion with ids matching the regular expression ^(memcache|web).(qa|prod).loc$ will get the nagios.mon.web and apache.server states. All Ubuntu minions will receive the repos.ubuntu state, while all RHEL and CentOS minions will receive the repos.epel state. The minions foo, bar, and baz will receive the database state. Anyminion(奴才) with a pillar named somekey, having a value of abc will receive the xyz state. Finally, minions with ids matching the nag1* glob(一滴) or with a grain named role equal to monitoring will receive the nagios.server state.
http://docs.saltstack.cn/zh_CN/latest/ref/states/top.html#states-top