SaltStack实战之配置管理-LAMP自动化部署

学习 SaltStack

1. 部署思路

  1. 将lamp分成3部分:软件包、配置文件、服务;

  2. 确认安装的软件包名、配置文件路径、服务名等;

  3. 按以上信息编写yaml文件;

2. 编写lamp.sls

[root@salt-master112 salt]# pwd /srv/salt [root@salt-master112 salt]# ls dev  init  prod  test  top.sls [root@salt-master112 salt]# cat dev/lamp.sls lamp-pkg-install:   pkg.installed:     - names:       - httpd       - php       - php-fpm       - mysql       - mysql-server       - php-mysql       - php-pdo apache-service:   file.managed:     - name: /etc/httpd/conf/httpd.conf     - source:       - salt://dev/files/httpd.conf     - user: root     - group: root     - mode: 644   service.running:     - name: httpd     - enable: True mysql-service:   file.managed:     - name: /etc/my.cnf     - source:       - salt://dev/files/my.cnf     - user: root     - group: root     - mode: 644   service.running:     - name: mysqld     - enable: True php-fpm-service:   service.running:     - name: php-fpm     - enable: True [root@salt-master112 salt]# cat top.sls base:   '*':     - init.dns dev:   'node*.test.com':   - lamp [root@salt-master112 salt]# ls dev/ files  lamp.sls [root@salt-master112 salt]# ls dev/files/ httpd.conf  my.cnf [root@salt-master112 salt]#

执行salt '*' state.highstate查看结果:

[root@salt-master112 salt]# salt-key -L Accepted Keys: master.test.com node1.test.com node2.test.com Denied Keys: Unaccepted Keys: Rejected Keys: [root@salt-master112 salt]# salt '*' state.highstate master.test.com: ----------           ID: /etc/resolv.conf     Function: file.managed       Result: True      Comment: File /etc/resolv.conf is in the correct state      Started: 23:20:50.495770     Duration: 23.706 ms      Changes:   Summary for master.test.com ------------ Succeeded: 1 Failed:    0 ------------ Total states run:     1 Total run time:  23.706 ms node1.test.com: ----------           ID: /etc/resolv.conf     Function: file.managed       Result: True      Comment: File /etc/resolv.conf is in the correct state      Started: 15:23:33.990342     Duration: 32.918 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: httpd       Result: True      Comment: Package httpd is already installed      Started: 15:23:34.603609     Duration: 649.913 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-pdo       Result: True      Comment: Package php-pdo is already installed      Started: 15:23:35.253716     Duration: 0.539 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-fpm       Result: True      Comment: Package php-fpm is already installed      Started: 15:23:35.254347     Duration: 0.359 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: mysql-server       Result: True      Comment: Package mysql-server is already installed      Started: 15:23:35.254807     Duration: 0.346 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-mysql       Result: True      Comment: Package php-mysql is already installed      Started: 15:23:35.255233     Duration: 0.367 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: mysql       Result: True      Comment: Package mysql is already installed      Started: 15:23:35.255688     Duration: 0.355 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php       Result: True      Comment: Package php is already installed      Started: 15:23:35.256129     Duration: 0.348 ms      Changes:   ----------           ID: apache-service     Function: file.managed         Name: /etc/httpd/conf/httpd.conf       Result: False      Comment: Unable to manage file: none of the specified sources were found      Started: 15:23:35.256569     Duration: 6.275 ms      Changes:   ----------           ID: apache-service     Function: service.running         Name: httpd       Result: False      Comment: Service httpd has been enabled, and is dead      Started: 15:23:35.275736     Duration: 230.013 ms      Changes:                 ----------               httpd:                   True ----------           ID: mysql-service     Function: file.managed         Name: /etc/my.cnf       Result: False      Comment: Unable to manage file: none of the specified sources were found      Started: 15:23:35.505956     Duration: 6.35 ms      Changes:   ----------           ID: mysql-service     Function: service.running         Name: httpd       Result: False      Comment: Service httpd is already enabled, and is dead      Started: 15:23:35.512412     Duration: 134.002 ms      Changes:   ----------           ID: php-fpm-service     Function: service.running         Name: php-fpm       Result: True      Comment: Service php-fpm is already enabled, and is running      Started: 15:23:35.646635     Duration: 196.639 ms      Changes:                 ----------               php-fpm:                   True Summary for node1.test.com ------------ Succeeded: 9 (changed=2) Failed:    4 ------------ Total states run:    13 Total run time:   1.258 s node2.test.com: ----------           ID: /etc/resolv.conf     Function: file.managed       Result: True      Comment: File /etc/resolv.conf is in the correct state      Started: 15:23:34.682679     Duration: 103.617 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: httpd       Result: True      Comment: The following packages were installed/updated: httpd      Started: 15:23:38.021487     Duration: 46521.648 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-59.el6.centos                   old:               httpd-tools:                   ----------                   new:                       2.2.15-59.el6.centos                   old:               mailcap:                   ----------                   new:                       2.1.31-2.el6                   old: ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-pdo       Result: True      Comment: The following packages were installed/updated: php-pdo      Started: 15:24:24.562565     Duration: 8749.133 ms      Changes:                 ----------               php-common:                   ----------                   new:                       5.3.3-49.el6                   old:               php-pdo:                   ----------                   new:                       5.3.3-49.el6                   old: ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-fpm       Result: True      Comment: The following packages were installed/updated: php-fpm      Started: 15:24:33.336866     Duration: 8477.529 ms      Changes:                 ----------               php-fpm:                   ----------                   new:                       5.3.3-49.el6                   old: ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: mysql-server       Result: True      Comment: The following packages were installed/updated: mysql-server      Started: 15:24:41.843441     Duration: 28414.553 ms      Changes:                 ----------               mysql:                   ----------                   new:                       5.1.73-8.el6_8                   old:               mysql-libs:                   ----------                   new:                       5.1.73-8.el6_8                   old:               mysql-server:                   ----------                   new:                       5.1.73-8.el6_8                   old:               perl-DBD-MySQL:                   ----------                   new:                       4.013-3.el6                   old:               perl-DBI:                   ----------                   new:                       1.609-4.el6                   old: ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php-mysql       Result: True      Comment: The following packages were installed/updated: php-mysql      Started: 15:25:10.289755     Duration: 8122.46 ms      Changes:                 ----------               php-mysql:                   ----------                   new:                       5.3.3-49.el6                   old: ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: mysql       Result: True      Comment: Package mysql is already installed      Started: 15:25:18.458202     Duration: 1.519 ms      Changes:   ----------           ID: lamp-pkg-install     Function: pkg.installed         Name: php       Result: True      Comment: The following packages were installed/updated: php      Started: 15:25:18.459996     Duration: 14374.708 ms      Changes:                 ----------               php:                   ----------                   new:                       5.3.3-49.el6                   old:               php-cli:                   ----------                   new:                       5.3.3-49.el6                   old: ----------           ID: apache-service     Function: file.managed         Name: /etc/httpd/conf/httpd.conf       Result: False      Comment: Unable to manage file: none of the specified sources were found      Started: 15:25:32.846614     Duration: 38.9 ms      Changes:   ----------           ID: apache-service     Function: service.running         Name: httpd       Result: False      Comment: Service httpd has been enabled, and is dead      Started: 15:25:32.916084     Duration: 674.943 ms      Changes:                 ----------               httpd:                   True ----------           ID: mysql-service     Function: file.managed         Name: /etc/my.cnf       Result: False      Comment: Unable to manage file: none of the specified sources were found      Started: 15:25:33.591498     Duration: 23.162 ms      Changes:   ----------           ID: mysql-service     Function: service.running         Name: httpd       Result: False      Comment: Service httpd is already enabled, and is dead      Started: 15:25:33.614954     Duration: 357.977 ms      Changes:   ----------           ID: php-fpm-service     Function: service.running         Name: php-fpm       Result: True      Comment: Service php-fpm is already enabled, and is running      Started: 15:25:33.973402     Duration: 512.95 ms      Changes:                 ----------               php-fpm:                   True Summary for node2.test.com ------------ Succeeded: 9 (changed=8) Failed:    4 ------------ Total states run:    13 Total run time: 116.373 s ERROR: Minions returned with non-zero exit code [root@salt-master112 salt]#

上面结果中有报错 

Unable to manage file: none of the specified sources were found

需要修改路径,把dev去掉。因为在top.sls配置文件中,lamp是定义在dev下面的,因此salt://应该是从dev目录下为起始的。

- salt://files/httpd.conf