1.需求

    使用sls安装nginx并管理nginx的配置文件,当nginx配置文件被修改时,自动更新配置文件,并重启nginx。

2.配置

    1.在master端上写好nginx.sls文件

        mkdir -p /srv/salt/nginx

        cd /srv/salt/nginx

            vim init.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://etc/nginx/nginx.conf

    - user: root

    - group: root

    - mode: 644

/etc/nginx/conf.d/default.conf:

  file.managed:

    - source: salt://etc/nginx/conf.d/default.conf

    - user: root

    - group: root

    - mode: 644

保存退出

    2.在master端上安装nginx,方便生成nginx的配置文件(生产环境中其实是不需要安装的)

        yum -y install nginx

    3.创建nginx同步目录

        mkdir /srv/salt/etc/nginx/conf.d -p

    4.拷贝nginx的配置文件到/srv/salt/etc/nginx/目录下

        cp /etc/nginx/nginx.conf /srv/salt/etc/nginx/

    5.拷贝default.conf配置文件到/srv/salt/nginx/conf.d/目录下

        cp /etc/nginx/conf.d/default.conf /srv/salt/etc/nginx/conf.d/

    6.下发安装指令[root@Admin1-saltstack nginx]# salt '*' state.sls nginx

Admin3-saltstack.littlebee.com:

----------

          ID: nginx

    Function: pkg.installed

      Result: True

     Comment: The following packages were installed/updated: nginx

     Started: 16:00:54.241160

    Duration: 100771.423 ms

     Changes:   

              ----------

              GeoIP:

                  ----------

                  new:

                      1.6.5-1.el6

                  old:

              GeoIP-GeoLite-data:

                  ----------

                  new:

                      2015.04-2.el6

                  old:

              GeoIP-GeoLite-data-extra:

                  ----------

                  new:

                      2015.04-2.el6

                  old:

              gd:

                  ----------

                  new:

                      2.0.35-11.el6

                  old:

              geoipupdate:

                  ----------

                  new:

                      2.2.1-2.el6

                  old:

              libXpm:

                  ----------

                  new:

                      3.5.10-2.el6

                  old:

              libxslt:

                  ----------

                  new:

                      1.1.26-2.el6_3.1

                  old:

              nginx:

                  ----------

                  new:

                      1.0.15-11.el6

                  old:

              nginx-filesystem:

                  ----------

                  new:

                      1.0.15-11.el6

                  old:

----------

          ID: /etc/nginx/nginx.conf

    Function: file.managed

      Result: True

     Comment: File /etc/nginx/nginx.conf is in the correct state

     Started: 16:02:35.422030

    Duration: 3.826 ms

     Changes:   

----------

          ID: /etc/nginx/conf.d/default.conf

    Function: file.managed

      Result: True

     Comment: File /etc/nginx/conf.d/default.conf is in the correct state

     Started: 16:02:35.430801

    Duration: 2.863 ms

     Changes:   

----------

          ID: nginx

    Function: service.running

      Result: True

     Comment: Service nginx has been enabled, and is running

     Started: 16:02:35.440698

    Duration: 583.024 ms

     Changes:   

              ----------

              nginx:

                  True


Summary

------------

Succeeded: 4 (changed=2)

Failed:    0

------------

Total states run:     4

Admin2-saltstack.littlebee.com:

----------

          ID: nginx

    Function: pkg.installed

      Result: True

     Comment: The following packages were installed/updated: nginx

     Started: 16:00:53.829498

    Duration: 145884.537 ms

     Changes:   

              ----------

              GeoIP:

                  ----------

                  new:

                      1.6.5-1.el6

                  old:

              GeoIP-GeoLite-data:

                  ----------

                  new:

                      2015.04-2.el6

                  old:

              GeoIP-GeoLite-data-extra:

                  ----------

                  new:

                      2015.04-2.el6

                  old:

              gd:

                  ----------

                  new:

                      2.0.35-11.el6

                  old:

              geoipupdate:

                  ----------

                  new:

                      2.2.1-2.el6

                  old:

              libXpm:

                  ----------

                  new:

                      3.5.10-2.el6

                  old:

              libxslt:

                  ----------

                  new:

                      1.1.26-2.el6_3.1

                  old:

              nginx:

                  ----------

                  new:

                      1.0.15-11.el6

                  old:

              nginx-filesystem:

                  ----------

                  new:

                      1.0.15-11.el6

                  old:

----------

          ID: /etc/nginx/nginx.conf

    Function: file.managed

      Result: True

     Comment: File /etc/nginx/nginx.conf is in the correct state

     Started: 16:03:20.181447

    Duration: 5.708 ms

     Changes:   

----------

          ID: /etc/nginx/conf.d/default.conf

    Function: file.managed

      Result: True

     Comment: File /etc/nginx/conf.d/default.conf is in the correct state

     Started: 16:03:20.198217

    Duration: 4.887 ms

     Changes:   

----------

          ID: nginx

    Function: service.running

      Result: True

     Comment: Service nginx has been enabled, and is running

     Started: 16:03:20.214405

    Duration: 340.608 ms

     Changes:   

              ----------

              nginx:

                  True


Summary

------------

Succeeded: 4 (changed=2)

Failed:    0

------------

Total states run:     4

出现上面的信息则表示安装成功了

也可以在minion端看服务是否起来:

[root@Admin2-saltstack tmp]# /etc/init.d/nginx status

nginx (pid  3046) is running...

[root@Admin3-saltstack nginx]# /etc/init.d/nginx status

nginx (pid  2876) is running...