pupppet 搭建lnmp架构:

[root@server1 puppet]# tree modules/

modules/

|-- httpd

|   |-- files

|   |   `-- httpd.conf

|   `-- manifests

|       |-- config.pp

|       |-- init.pp

|       |-- install.pp

|       `-- service.pp

|-- mysqld

|   |-- files

|   |   |-- cmake-2.8.4.tar.gz

|   |   |-- my.cnf

|   |   |-- mysql-5.5.12.tar.gz

|   |   `-- mysql_install.sh

|   `-- manifests

|       |-- config.pp

|       |-- init.pp

|       |-- install.pp

|       `-- service.pp

|-- nginx

|   |-- files

|   |   |-- nginx-1.10.1.tar.gz

|   |   |-- nginx.conf

|   |   `-- nginx_install.sh

|   `-- manifests

|       |-- config.pp

|       |-- init.pp

|       |-- install.pp

|       `-- service.pp

`-- php

    |-- files

    |   |-- libmcrypt-2.5.8.tar.bz2

    |   |-- php-5.3.6.tar.bz2

    |   |-- php-fpm.conf

    |   `-- php_install.sh

    `-- manifests

        |-- config.pp

        |-- init.pp

        |-- install.pp

        `-- service.pp

 

12 directories, 28 files

nginx模块:

[root@server1 manifests]# ls

config.pp  init.pp  install.pp  service.pp

[root@server1 manifests]# cat init.pp 

class nginx {

include nginx::install,nginx::config,nginx::service

}

[root@server1 manifests]# cat install.pp 

class nginx::install {

file {

"/mnt/nginx-1.10.1.tar.gz":

source => "puppet:///modules/nginx/nginx-1.10.1.tar.gz";

"/mnt/nginx_install.sh":

source => "puppet:///modules/nginx/nginx_install.sh",

mode => 775

}

exec {

"nginx-install":

command => '/mnt/nginx_install.sh',

timeout => 9999,

path => '/bin:/sbin:/usr/bin:/usr/sbin',

creates => '/usr/local/nginx/sbin/nginx',

require => File ["/mnt/nginx_install.sh"],

}

}

[root@server1 manifests]# cat config.pp 

class nginx::config {

file {

"/usr/local/nginx/conf/nginx.conf":

source => "puppet:///modules/nginx/nginx.conf",

notify => Exec["reload-nginx"],

require => Class[nginx::install]

}

}

[root@server1 manifests]# cat service.pp 

class nginx::service {

exec {

"start-nginx":

command =>'/usr/local/nginx/sbin/nginx',

require => Class['nginx::config'],

creates => '/usr/local/nginx/logs/nginx.pid'

}

exec {

"reload-nginx":

command => '/usr/local/nginx/sbin/nginx -s reload',

refreshonly => true

}

}

[root@server1 manifests]# 

 

 

[root@server1 nginx]# cd files/

[root@server1 files]# ls

nginx-1.10.1.tar.gz  nginx.conf  nginx_install.sh

[root@server1 files]# cat nginx_install.sh 

#!/bin/bash

yum install -y gcc  pcre-devel openssl-devel zlib-devel &>/dev/null

cd /mnt/

tar -xf nginx-1.10.1.tar.gz &>/dev/null

cd nginx-1.10.1

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module &> /dev/null

sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc

make &> /dev/null 

make install &> /dev/null

[root@server1 files]# 

 

mysql模块:

[root@server1 nginx]# ls

files  manifests

[root@server1 nginx]# cd manifests/

[root@server1 manifests]# cat init.pp 

class nginx {

include nginx::install,nginx::config,nginx::service

}

[root@server1 manifests]# cat install.pp 

class nginx::install {

file {

"/mnt/nginx-1.10.1.tar.gz":

source => "puppet:///modules/nginx/nginx-1.10.1.tar.gz";

"/mnt/nginx_install.sh":

source => "puppet:///modules/nginx/nginx_install.sh",

mode => 775

}

exec {

"nginx-install":

command => '/mnt/nginx_install.sh',

timeout => 9999,

path => '/bin:/sbin:/usr/bin:/usr/sbin',

creates => '/usr/local/nginx/sbin/nginx',

require => File ["/mnt/nginx_install.sh"],

}

}

[root@server1 manifests]# cat config.pp 

class nginx::config {

file {

"/usr/local/nginx/conf/nginx.conf":

source => "puppet:///modules/nginx/nginx.conf",

notify => Exec["reload-nginx"],

require => Class[nginx::install]

}

}

[root@server1 manifests]# cat service.pp 

class nginx::service {

exec {

"start-nginx":

command =>'/usr/local/nginx/sbin/nginx',

require => Class['nginx::config'],

creates => '/usr/local/nginx/logs/nginx.pid'

}

exec {

"reload-nginx":

command => '/usr/local/nginx/sbin/nginx -s reload',

refreshonly => true

}

}

[root@server1 nginx]# cd files/

[root@server1 files]# ls

nginx-1.10.1.tar.gz  nginx.conf  nginx_install.sh

[root@server1 files]# cat nginx_install.sh 

#!/bin/bash

yum install -y gcc  pcre-devel openssl-devel zlib-devel &>/dev/null

cd /mnt/

tar -xf nginx-1.10.1.tar.gz &>/dev/null

cd nginx-1.10.1

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module &> /dev/null

sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc

make &> /dev/null 

make install &> /dev/null

useradd mysql

cd /usr/local/lnmp/mysql

cd support-files

cp my-large.cnf  /etc/my.cnf

cp mysql.server  /etc/init.d/mysqld

sed -i '10s/^/#/g' ~/.bash_profile

echo "PATH=\$PATH:\$HOME/bin:/usr/local/lnmp/mysql/bin" >> ~/.bash_profile

source ~/.bash_profile

chown -R mysql:mysql /usr/local/lnmp/mysql/

cd /usr/local/lnmp/mysql/scripts

./mysql_install_db --user=mysql --basedir=/usr/local/lnmp/mysql --datadir=/usr/local/lnmp/mysql/data

chown -R root.root /usr/local/lnmp/mysql/

cd /usr/local/lnmp/mysql/

chown  mysql data/ -R

[root@server1 files]# 

 

[root@server1 files]# 

 

[root@server1 php]# cd manifests/

[root@server1 manifests]# vim in

init.pp     install.pp  

[root@server1 manifests]# vim init.pp 

[root@server1 manifests]# cat init.pp 

class php {

include php::install,php::config,php::service

}

[root@server1 manifests]# cat install.pp 

class php::install {

file {

"/mnt/php_install.sh":

source => 'puppet:///modules/php/php_install.sh',

mode => 775;

"/mnt/php-5.3.6.tar.bz2":

source => 'puppet:///modules/php/php-5.3.6.tar.bz2';

"/mnt/libmcrypt-2.5.8.tar.bz2":

source => 'puppet:///modules/php/libmcrypt-2.5.8.tar.bz2';


}

exec {

"php-install":

command => '/mnt/php_install.sh ',

timeout =>99999,

path =>'/bin:/usr/bin:/usr/sbin:/sbin',

creates => '/etc/init.d/php-fpm',

require => File ["/mnt/php_install.sh"]


}

 

}

[root@server1 manifests]# cat config.pp 

class php::config {

file {

"/usr/local/lnmp/php/etc/php-fpm.conf":

source =>'puppet:///modules/php/php-fpm.conf',

notify =>Exec["php-fpm_reload"],

require =>Class[php::install]

}


}

[root@server1 manifests]# cat service.pp 

class php::service {

service {

"php-fpm":

ensure =>running,

require =>Class['php::config'],

#creates => '/usr/local/lnmp/php/data/server3.example.com.pid'

}

exec {

"php-fpm_reload":

command =>'/etc/init.d/php-fpm reload',

refreshonly => true

}

}

[root@server1 manifests]# 

[root@server1 php]# cd files/

[root@server1 files]# ls

libmcrypt-2.5.8.tar.bz2  php-5.3.6.tar.bz2  php-fpm.conf  php_install.sh

[root@server1 files]# cat php_install.sh 

#!/bin/bash

cd /mnt/

tar -xf libmcrypt-2.5.8.tar.bz2

cd libmcrypt-2.5.8

./configure --libdir=/usr/local/lib64 &>/dev/null

make && make install &>/dev/null

cd libltdl/

./configure libdir=/usr/local/lib64 --enable-ltdl-install &>/dev/null

make &> /dev/null

make install &> /dev/null

yum install -y net-snmp-devel curl-devel libxml2-devel libpng-devel libjpeg-devel freetype-devel gmp-devel &>/dev/null

cd /mnt/

tar jxf php-5.3.6.tar.bz2

cd php-5.3.6

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=/usr/local/lnmp/mysql/lib/ --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir  --with-pear --with-gettext --with-gmp --with-mcrypt --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --with-mysqli=/usr/local/lnmp/mysql/bin/mysql_config --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-libdir=lib64 &> /dev/null

ln -s /usr/local/lnmp/mysql/lib /usr/local/lnmp/mysql/lib64

make &> /dev/null 

make install &> /dev/null

 

#make test

cp /usr/local/lnmp/php/etc/php.ini-production /usr/local/lnmp/php/etc/php.ini

cp /mnt/php-5.3.6/sapi/fpm/php-fpm /etc/init.d/

chmod +x /etc/init.d/php-fpm

sed -i "843a cgi.fix_pathinfo=0" /usr/local/lnmp/php/etc/php.ini

sed -i "998a date.timezone = Asia/Shanghai" /usr/local/lnmp/php/etc/php.ini

sed -i " 152a pm.start_servers = 10 \n pm.min_spare_servers = 5 \n pm.max_spare_servers = 15 \n pm.max_requests = 500" /usr/local/lnmp/php/etc/php-fpm.conf

 

 

 

[root@server1 files]#