功能模块之php安装
创建php安装目录
[root@salt-master ~]# mkdir /srv/salt/prod/php
[root@salt-master ~]# mkdir /srv/salt/prod/app/php/files/php -p
[root@salt-master ~]# mkdir /srv/salt/prod/php/files/
将安装包拷贝到files目录下:
[root@salt-master ~]# ls /srv/salt/prod/php/files/
php-5.4.40.tar.bz2
解决php安装的依赖关系:
[root@salt-master ~]# vi /srv/salt/prod/pkg/pkg-php.sls
pkg-php:
pkg.installed:
- names:
- libxml2-devel
编写sls文件:
[root@salt-master ~]# vi /srv/salt/prod/php/install.sls
include:
- pkg.pkg-php
php-install:
file.managed:
- name: /usr/local/src/php-5.4.40.tar.bz2
- source: salt://php/files/php-5.4.40.tar.bz2
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src/ && tar xf php-5.4.40.tar.bz2 && cd php-5.4.40 && ./configure --prefix=/usr/local/php --enable-fpm --with-openssl && make && make install
- unless: test -d /usr/local/php
- require:
- pkg: pkg-php
- file: php-install
执行安装:
[root@salt-master ~]#salt '*' state.sls php.install env=prod
业务模块之php配置管理
php文件下发脚本内容为:
[root@salt-master ~]# vi /srv/salt/prod/app/php.sls
include:
- php.install
php-ini:
file.managed:
- name: /etc/php.ini
- source: salt://app/files/php/php.ini
- user: root
- group: root
- mode: 644
php-fpm-conf:
file.managed:
- name: /usr/local/php/etc/php-fpm.conf
- source: salt://app/files/php/php-fpm.conf
- user: root
- group: root
- mode: 644
php-init:
file.managed:
- name: /etc/init.d/php-fpm
- source: salt://app/files/php/php-fpm.init
- user: root
- group: root
- mode: 755
cmd.run:
- name: chkconfig --add php-fpm
- unless: chkconfig --list | grep php-fpm
- require:
- file: php-init
service.running:
- name: php-fpm
- enable: True
- watch:
- file: php-ini
执行配置下发:
[root@salt-master ~]# salt 'centos-test[3-4]' state.sls app.php env=prod
现在,将nginx.sls和php,sls写入top file文件:
[root@salt-master ~]#vim top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'salt-minion.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'centos-test3':
- app.nginx
- app.php
'centos-test4':
- app.nginx
- app.php
创建php安装目录
[root@salt-master ~]# mkdir /srv/salt/prod/php
[root@salt-master ~]# mkdir /srv/salt/prod/app/php/files/php -p
[root@salt-master ~]# mkdir /srv/salt/prod/php/files/
将安装包拷贝到files目录下:
[root@salt-master ~]# ls /srv/salt/prod/php/files/
php-5.4.40.tar.bz2
解决php安装的依赖关系:
[root@salt-master ~]# vi /srv/salt/prod/pkg/pkg-php.sls
pkg-php:
pkg.installed:
- names:
- libxml2-devel
编写sls文件:
[root@salt-master ~]# vi /srv/salt/prod/php/install.sls
include:
- pkg.pkg-php
php-install:
file.managed:
- name: /usr/local/src/php-5.4.40.tar.bz2
- source: salt://php/files/php-5.4.40.tar.bz2
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src/ && tar xf php-5.4.40.tar.bz2 && cd php-5.4.40 && ./configure --prefix=/usr/local/php --enable-fpm --with-openssl && make && make install
- unless: test -d /usr/local/php
- require:
- pkg: pkg-php
- file: php-install
执行安装:
[root@salt-master ~]#salt '*' state.sls php.install env=prod
业务模块之php配置管理
php文件下发脚本内容为:
[root@salt-master ~]# vi /srv/salt/prod/app/php.sls
include:
- php.install
php-ini:
file.managed:
- name: /etc/php.ini
- source: salt://app/files/php/php.ini
- user: root
- group: root
- mode: 644
php-fpm-conf:
file.managed:
- name: /usr/local/php/etc/php-fpm.conf
- source: salt://app/files/php/php-fpm.conf
- user: root
- group: root
- mode: 644
php-init:
file.managed:
- name: /etc/init.d/php-fpm
- source: salt://app/files/php/php-fpm.init
- user: root
- group: root
- mode: 755
cmd.run:
- name: chkconfig --add php-fpm
- unless: chkconfig --list | grep php-fpm
- require:
- file: php-init
service.running:
- name: php-fpm
- enable: True
- watch:
- file: php-ini
执行配置下发:
[root@salt-master ~]# salt 'centos-test[3-4]' state.sls app.php env=prod
现在,将nginx.sls和php,sls写入top file文件:
[root@salt-master ~]#vim top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'salt-minion.2018.com':
- cluster.haproxy-outside
- cluster.haproxy-outside-keepalived
'centos-test3':
- app.nginx
- app.php
'centos-test4':
- app.nginx
- app.php