三个文件夹:

pkg 安装软件包

file  管理配置文件

service   服务管理


思路: lamp需要安装的软件包有  httpd, php, mysql, mysql-server, php-mysql, php-pdo


cd  /srv/salt/dev/


mkdir   /srv/salt/dev/files/      ##放配置文件


vim  /srv/salt/dev/lamp.sls 

lamp配置文件如下:

lamp-pkg-install:

  pkg.installed:

    - names:

      - php

      - mysql

      - php-cli

      - php-common

      - php-mysql

      - php-pdo

apache-service:

  pkg.installed:

    - name: httpd

  file.managed:

    - name: /etc/httpd/conf/httpd.conf

    - source: salt://files/httpd.conf

    - user: root

    - group: root

    - mode: 644

    - require:         

      - pkg: apache-service

  service.running:

    - name: httpd

    - enable: True

    - reload: True

    - watch:                      

      - file: apache-service

mysql-service:

  pkg.installed:

    - name: mysql-server

    - require_in:    

      - file: mysql-service

  file.managed:

    - name: /etc/my.cnf

    - source: salt://files/my.cnf

    - user: root

    - group: root

    - mode: 644

    - watch_in:    

      - service: mysql-service

  service.running:

    - name: mysqld

    - enable: True

vim  /srv/salt/top.sls    

dev:

  'web2.coohx.com':

    - lamp

执行: 

 salt 'web2*' state.highstate

[root@web1 salt]# salt 'web2*' state.highstate

web2.coohx.com:

....

...

----------

          ID: apache-service

    Function: file.managed

        Name: /etc/httpd/conf/httpd.conf

      Result: True

     Comment: File /etc/httpd/conf/httpd.conf updated

     Started: 19:22:16.063742

    Duration: 56.123 ms

     Changes:

              ----------

              diff:

                  ---

                  +++

                  @@ -273,7 +273,7 @@

                   # You will have to access it by its address anyway, and this will make

                   # redirections work in a sensible way.

                   #

                  -#ServerName www.example.com:80

                  +ServerName www.coohx.com:80

                   #

                   # UseCanonicalName: Determines how Apache constructs self-referencing

----------

          ID: apache-service

    Function: service.running

        Name: httpd

      Result: True

     Comment: Service reloaded

     Started: 19:22:16.189186

    Duration: 267.497 ms

     Changes:

              ----------

              httpd:

                  True

----------

          ID: mysql-service

    Function: pkg.installed

        Name: mysql-server

      Result: True

     Comment: Package mysql-server is already installed.

     Started: 19:22:16.457774

    Duration: 4.411 ms

     Changes:

----------

          ID: mysql-service

    Function: file.managed

        Name: /etc/my.cnf

      Result: True

     Comment: File /etc/my.cnf updated

     Started: 19:22:16.463750

    Duration: 25.095 ms

     Changes:

              ----------

              diff:

                  ---

                  +++

                  @@ -13,6 +13,8 @@

                   # If you want to know which options a program supports, run the program

                   # with the "--help" option.

                  +#web2.coohx.com

                  +

                   # The following options will be passed to all MySQL clients

                   [client]

                   #password    = your_password

                  @@ -24,7 +26,7 @@

                   # The MySQL server

                   [mysqld]

                   port         = 3306

                  -socket               = /var/lib/mysql/mysql.sock

                  +socket               = /tmp/mysql.sock

                   character_set_server = utf8

                   skip-locking

                   key_buffer_size = 256M

----------

          ID: mysql-service

    Function: service.running

        Name: mysqld

      Result: False

     Comment: Failed to restart the service

     Started: 19:22:16.548901

    Duration: 2260.008 ms

     Changes:

              ----------

              mysqld:

                  False

Summary

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

Succeeded: 11 (changed=4)

Failed:     1

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

Total states run:     12