博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
saltstack数据系统及其相关应用
阅读量:6335 次
发布时间:2019-06-22

本文共 18649 字,大约阅读时间需要 62 分钟。

hot3.png

grains

grains是静态的,只有minion启动才加载
[root@salt-master ~]# salt '*' grains.items

[root@salt-master ~]# salt '*' grains.get hwaddr_interfaces

salt-minion:
    ----------
    eth1:
        00:0c:29:38:1e:f7
    lo:
        00:00:00:00:00:00
[root@salt-master ~]# salt '*' grains.get hwaddr_interfaces:eth1
salt-minion:
    00:0c:29:38:1e:f7

[root@salt-master ~]# salt '*' grains.get ip_interfaces

salt-minion:
    ----------
    eth1:
        - 192.168.1.201
        - fe80::20c:29ff:fe38:1ef7
    lo:
        - 127.0.0.1
        - ::1

[root@salt-master ~]# salt '*' grains.get ip_interfaces:eth1

salt-minion:
    - 192.168.1.201
    - fe80::20c:29ff:fe38:1ef7

pillar

存储在master端,存放需要提供给minion的信息
敏感信息
变量
其它任何数据
target和state使用

打开pillar

pillar_roots:
  base:
    - /srv/pillar

{% if grains['os'] == 'CentOS' %}

apache: httpd
yum: yum
yys: yys
{% elif grains['os'] == 'Debian' %}
apache: apache2
yum: apt-get
{% endif %}

[root@salt-master pillar]# salt '*' pillar.get apache

salt-minion:
    httpd
[root@salt-master pillar]# salt '*' pillar.get yys
salt-minion:
    yys
[root@salt-master pillar]# salt 'salt-minion' pillar.get yum
salt-minion:
    yum

grains VS pillar

用途不通:grains用于存储客户端的minion的基本数据信息,pillar用于存储master分配给minion的数据信息
存储区域不同:grains存储在minion端,pillar存储在master端
更新方式不同:grains在minion启动时进行更新也可以通过saltutil.sync_grains进行刷新,pillar存储在master端,使用saltutil.refresh_pillar进行刷新效率更高也更为灵活

1.选择角色

这个是使用grains
[root@salt-master pillar]# salt -G 'os:CentOS' test.ping
salt-minion:
    True

pillar应用

[root@salt-master pillar]# vim roles.sls 

roles: web

[root@salt-master pillar]# vim top.sls 

base:

  'salt-minion':
    - nginx.nginx
    - packages
    - roles

[root@salt-master pillar]# salt '*' saltutil.refresh_pillar

[root@salt-master pillar]# salt 'salt-minion' pillar.get roles
salt-minion:
    web
[root@salt-master pillar]# salt -I 'roles:web' test.ping
salt-minion:
    True

[root@salt-master pillar]# salt '*' -b 10 test.ping 每次执行10台   

require:

    require:本state执行需要先执行那些state
    require_in:与require相反
    watch:除了require外,也会检测state状态
    watch_in:与watch相反

1.安装httpd

[root@salt-master salt]# vim sls_file/apache.sls 

apache:

  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
  service.running:
    - enable: True
    - name: httpd
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache
salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: The following packages were installed/updated: httpd
     Started: 23:12:47.966648
    Duration: 18553.182 ms
     Changes:   
              ----------
              apr:
                  ----------
                  new:
                      1.3.9-5.el6_2
                  old:
              apr-util:
                  ----------
                  new:
                      1.3.9-3.el6_0.1
                  old:
              apr-util-ldap:
                  ----------
                  new:
                      1.3.9-3.el6_0.1
                  old:
              httpd:
                  ----------
                  new:
                      2.2.15-53.el6.centos
                  old:
              httpd-tools:
                  ----------
                  new:
                      2.2.15-53.el6.centos
                  old:
              mailcap:
                  ----------
                  new:
                      2.1.31-2.el6
                  old:
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:13:06.522558
    Duration: 7.874 ms
     Changes:   
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: False
     Comment: Service httpd has been enabled, and is dead
     Started: 23:13:06.531651
    Duration: 138.213 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 2 (changed=2)
Failed:    1
------------
Total states run:     3
[root@salt-master salt]# vim /etc/^C
[root@salt-master salt]# vim config_file/
httpd.conf   nginx/       script/      vsftpd.conf  
[root@salt-master salt]# vim config_file/httpd.conf 
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache
salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:13:43.435408
    Duration: 222.893 ms
     Changes:   
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:13:43.660646
    Duration: 12.437 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 80
                  +Listen 9999
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is running
     Started: 23:13:43.673420
    Duration: 69.659 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3    

上面有一个报错因为我本身启动了nginx占用了80所以需要改一下httpd配置文件即可完成

调式:

[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache test=True
salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:16:26.512596
    Duration: 217.712 ms
     Changes:   
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: The file /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:16:26.732353
    Duration: 2.549 ms
     Changes:   
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 23:16:26.735312
    Duration: 26.744 ms
     Changes:   

Summary

------------
Succeeded: 3
Failed:    0
------------
Total states run:     3
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache test=True
salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:16:54.945258
    Duration: 224.859 ms
     Changes:   
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: The file /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:16:55.172223
    Duration: 2.861 ms
     Changes:   
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: None
     Comment: Service httpd is set to start
     Started: 23:16:55.175418
    Duration: 18.232 ms
     Changes:   

Summary

------------
Succeeded: 3 (unchanged=1)
Failed:    0
------------
Total states run:     3

不会真实执行调式完毕之后再执行

2.增加requisites
[root@salt-master salt]# vim sls_file/apache.sls 

apache:

  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: apache#就是我取的这个id配置文件管理之前保证软件安装
  service.running:
    - enable: True
    - name: httpd
    - watch:#检测状态改变执行重启
      - pkg: apache#检测apache软件是否会有变化,有则执行重启
      - file: apache#配置文件是否有变化,有则重启

nginx:

  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx#就是我取的这个id
  service.running:
    - enable: True
    - name: httpd
    - watch:#检测状态改变执行重启
      - pkg: nginx#检测apache是否会有变化,有则执行重启
      - file: nginx#配置文件是否有变化,有则重启
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 
salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:30:25.526678
    Duration: 213.372 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:30:25.742436
    Duration: 3.268 ms
     Changes:   
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 23:30:25.746117
    Duration: 25.382 ms
     Changes:   

Summary

------------
Succeeded: 3
Failed:    0
------------
Total states run:     3
可以看到apache只是一个id或者理解为名称

[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 

salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:26:30.382684
    Duration: 216.614 ms
     Changes:   
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:26:30.601524
    Duration: 2.687 ms
     Changes:   
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 23:26:30.604611
    Duration: 26.028 ms
     Changes:   

Summary

------------
Succeeded: 3
Failed:    0
------------
Total states run:     3
[root@salt-master salt]# vim config_file/httpd.conf 
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 
salt-minion:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:26:52.667503
    Duration: 219.51 ms
     Changes:   
----------
          ID: apache
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:26:52.889209
    Duration: 12.14 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 9999
                  +Listen 9998
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service restarted
     Started: 23:26:52.928307
    Duration: 215.437 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3

可以看到改变2个操作

重启和配置文件改变

3.变量使用

[root@salt-master salt]# vim sls_file/apache.sls 

nginx:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:#defaults
        port: 9997
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx
[root@salt-master salt]# vim config_file/httpd.conf 
Listen {
{ port }}   

[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 

salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:34:02.107754
    Duration: 219.02 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:34:02.328933
    Duration: 21.308 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 9998
                  +Listen 9997
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service restarted
     Started: 23:34:02.375926
    Duration: 214.444 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3

[root@salt-master salt]# salt 'salt-minion' cmd.run 'netstat -anutlp|grep httpd'

salt-minion:
    tcp        0      0 :::9997                     :::*                        LISTEN      4429/httpd
可以看到修改生效    

4.每个主机端口不一样
nginx:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:
        {% if grains['id'] == 'salt-minion'%}
        port: 9997
        {% elif grains['id'] == 'salt-minion02'%}
        port: 9998
        {% else %}
        port: 9999
        {% endif %}
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx

[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 

salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:39:51.984573
    Duration: 217.182 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 23:39:52.203991
    Duration: 14.981 ms
     Changes:   
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is in the desired state
     Started: 23:39:52.219407
    Duration: 25.886 ms
     Changes:   

Summary

------------
Succeeded: 3
Failed:    0
------------
Total states run:     3
[root@salt-master salt]# salt 'salt-minion' cmd.run 'netstat -anutlp|grep httpd'
salt-minion:
    tcp        0      0 :::9997                     :::*                        LISTEN      4429/httpd

 可以看到和原来一样

 
 我们现在改一下端口         
nginx:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:
        {% if grains['id'] == 'salt-minion'%}
        port: 9998
        {% elif grains['id'] == 'salt-minion02'%}
        port: 9997
        {% else %}
        port: 9999
        {% endif %}
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx

salt-minion为9998

salt-minion02为9997
[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 
salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:41:45.652814
    Duration: 218.351 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:41:45.873363
    Duration: 17.753 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 9997
                  +Listen 9998
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service restarted
     Started: 23:41:45.917686
    Duration: 209.181 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3
[root@salt-master salt]# salt 'salt-minion' cmd.run 'netstat -anutlp|grep httpd'
salt-minion:
    tcp        0      0 :::9998                     :::*                        LISTEN      4853/http
可以看到端口变为9998生效

现在我们验证一下没有匹配到的情况    

nginx:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:
        {% if grains['id'] == 'salt-minion01'%}
        port: 9998
        {% elif grains['id'] == 'salt-minion02'%}
        port: 9997
        {% else %}
        port: 9999
        {% endif %}
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx

现在主机包含在其它的情况中

[root@salt-master salt]# salt 'salt-minion' state.sls sls_file.apache 
salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:43:14.444092
    Duration: 215.958 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:43:14.662291
    Duration: 17.061 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 9998
                  +Listen 9999
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service restarted
     Started: 23:43:14.706464
    Duration: 203.308 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3
[root@salt-master salt]# salt 'salt-minion' cmd.run 'netstat -anutlp|grep httpd'
salt-minion:
    tcp        0      0 :::9999                     :::*                        LISTEN      5017/httpd

现在变为9999也是生效的
这样就可以实现不通的minion id配置不同的端口

优化:

sls描述处理逻辑,业务数据不应该在sls上
用pillar来做
apache:
  {% if grains['id'] == 'salt-minion'%}
  port: 9999
  {% elif grains['id'] == 'salt-minion02'%}
  port: 9997
  {% else %}
  port: 9998
  {% endif %}

[root@salt-master apache]# salt '*' pillar.get apache
salt-minion:
    ----------
    port:
        9999

修改sls

nginx:
  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:
        port: {
{ salt['pillar.get']('apache:port',9995)}}#使用pillar获取的值,什么都没有的话会默认为9995
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx

[root@salt-master apache]# salt '*' cmd.run 'netstat -anutlp|grep httpd'
salt-minion:
    tcp        0      0 :::9998                     :::*                        LISTEN      5311/httpd
[root@salt-master apache]# salt 'salt-minion' state.sls sls_file.apache 
salt-minion:
----------
          ID: nginx
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 23:54:51.542798
    Duration: 216.563 ms
     Changes:   
----------
          ID: nginx
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Started: 23:54:51.761655
    Duration: 17.513 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -133,7 +133,7 @@
                   # prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
                   #
                   #Listen 12.34.56.78:80
                  -Listen 9998
                  +Listen 9999
                   
                   #
                   # Dynamic Shared Object (DSO) Support
----------
          ID: nginx
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service restarted
     Started: 23:54:51.806378
    Duration: 199.891 ms
     Changes:   
              ----------
              httpd:
                  True

Summary

------------
Succeeded: 3 (changed=2)
Failed:    0
------------
Total states run:     3
[root@salt-master apache]# salt '*' cmd.run 'netstat -anutlp|grep httpd'
salt-minion:
    tcp        0      0 :::9999                     :::*                        LISTEN      5692/httpd

这里就有一个技巧:
把数据放到pillar中这样我就只需要修改pillar就完成配置数据的管理,而配置管理的逻辑或者功能则用sls来来具体执行

例如:

[root@salt-master ~]# vim /srv/pillar/top.sls 

base:

  'salt-minion':
    - nginx.nginx
    - packages
    - roles
    - apache
  '*':
   - system
对salt-minion进行nginx和apache的安装及配置管理
对所有主机进行系统设置
apache:
  {% if grains['id'] == 'salt-minion'%}
  port: 9999
  {% elif grains['id'] == 'salt-minion02'%}
  port: 9997
  {% else %}
  port: 9998
  {% endif %}

nofile: 102400

下面是sls文件
nofile_soft:
   cmd.run:
     - name: echo '*    soft    nofile    {
{ salt['pillar.get']('nofile',10240) }}' >> /etc/security/limits.conf
nofile_hard:
   cmd.run:
     - name: echo '*    hard    nofile    {
{ salt['pillar.get']('nofile',10240) }}' >> /etc/security/limits.conf

nginx:

  pkg.installed:
    - name: httpd
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://config_file/httpd.conf
    - require:
      - pkg: nginx
    - template: jinja
    - context:
        port: {
{ salt['pillar.get']('apache:port',9995)}}
  service.running:
    - enable: True
    - name: httpd
    - watch:
      - pkg: nginx
      - file: nginx
这样功能就实现安装apache系统设置就完成nofile的修改
但是数据只改pillar就可以实现了,不用在sls中进行数据修改,只需在sls中进行逻辑功能编写即可

周期执行sls文件

pillar中top.sls
base:
  'salt-minion':
    - nginx.nginx
    - packages
    - roles
    - apache
  '*':
   - system
[root@salt-master pillar]# vim nginx/nginx.sls 

schedule:

  nginx:
    function: state.sls
    minutes: 1#seconds秒级
    args:
      - 'sls_file.nginx'

等价于:

salt 'salt-minion' state.sls sls_file.nginx
[root@salt-master pillar]# vim /srv/salt/sls_file/nginx.sls 

nginx:

  pkg:
    - installed
  service:
    - running
    - enable: True
    - reload: True
    - watch:
      - pkg: nginx
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf:
  file.managed:
    - source: salt://config_file/nginx/nginx.conf
    - user: root
    - group: root
    - mode: 644
/etc/nginx/conf.d/default.conf:
  file.managed:
    - source: salt://config_file/nginx/conf.d/default.conf
    - user: root
    - group: root
    - mode: 644
注意:不写name就默认把取名的id作为name
- name :/etc/nginx/conf.d/default.conf
以上相当于每分钟执行一次
salt 'salt-minion' state.sls sls_file.nginx

转载于:https://my.oschina.net/eddylinux/blog/706698

你可能感兴趣的文章
C++程序设计:原理与实践(进阶篇)16.9 容器算法
查看>>
《面向对象的思考过程(原书第4版)》一1.7 使用类图作为可视化工具
查看>>
《用于物联网的Arduino项目开发:实用案例解析》—— 2.2 Arduino Uno的有线连接(以太网)...
查看>>
《21天学通Java(第7版)》—— 1.5 组织类和类行为
查看>>
《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.2 常用位操作符...
查看>>
阿里副总裁车品觉:无数据不成活
查看>>
《Hadoop海量数据处理:技术详解与项目实战》一 3.2 HDFS读取文件和写入文件
查看>>
《C++游戏编程入门(第4版)》——第2章 真值、分支与游戏循环:Guess My Number...
查看>>
《面向机器智能的TensorFlow实践》一2.2 Jupyter Notebook与matplotlib
查看>>
感知生态变化路线
查看>>
在纽约,与世界握手
查看>>
程序员,你可以更健康!
查看>>
我买了个阿里云服务器并在上面部署了一个项目
查看>>
《OpenStack云计算实战手册(第2版)》——1.6 配置角色
查看>>
Linux有问必答:如何在Debian下安装闭源软件包
查看>>
《ActionScript 3.0基础教程》——2.3 代码注释
查看>>
linux ubuntu/centos git 客户端编译安装升级
查看>>
JDK8 Fork/Join Work Stealing
查看>>
打包volley
查看>>
NavigationBar 和StatusBar同时消失出现
查看>>