6.salt pillar使用
首先需要在master的配置文件中定义pillar_roots,用来指定pillar data存储目录 默认是 /srv/pillar
pillar_root:
   base:
      - /srv/pillar
和state系统一样,需要先定义一个top.sls文件作为入口。用来指定数据对那个minion有效
base:
   '*':
     - packages
这个例子定义了packages对所有的minion有效,如果只想对某个minion有效的话:
base:
   '179':
      - packages
可以在tops.sls文件中写入多个条件如:
base:
    '*':
       - packages
    '179':
        - packages
通过例子packeages文件定义不同linux发行版的软件包名字,通过pillar进行中心控制,这样就可以在state文件中引用pillar数据使state看起来更简单
{% if grains['os'] == 'Debian' %}
apache: apache2
{% elif grains['os'] == 'CentOS' %}
apache: httpd
{% endif %}
然后我们在state文件中引用pillar数据:
[root@localhost salt]# cat top.sls
dev:
    '*':
      - apache
[root@localhost dev]# cat apache.sls
apache:
   pkg:
     - installed
     - name: {{ pillar['apache'] }}
执行结果:
[root@localhost dev]# salt '*' state.highstate -v test=True
Executing job with jid 20140227130804329137
-------------------------------------------
179:
----------
    State: - pkg
    Name:      httpd
    Function:  installed
        Result:    True
        Comment:   Package httpd is already installed
        Changes:  
Summary
------------
Succeeded: 1
Failed:    0
------------
Total:     1
6、salt中watch和require的用法
以ntpd服务为例:
ntpd:
    pkg.installed:
      - name: ntp
    service:
           - name: ntpd
           - running
           - reload: True
           - require:
             - pkg: ntp
           - watch:
               - file: /etc/ntp.conf
/etc/ntp.conf:
   file.managed:
     - source: salt://ntp/files/ntp.conf
     - backup: minion
这个例子中,pkg.install指需要安装的包,service中 require告诉salt,要启动ntp服务,必须要先安装ntp,watch表示监控/etc/ntp.conf,如果这个文件发生变动,则重启服务重读配置,backup表示在更新前会备份原有的文件,备份文件在设置的cache目录。