频道栏目
首页 > 资讯 > 其他 > 正文

实战Puppet 集中配置管理系统(2)——apache与nginx模块配置

16-11-09        来源:[db:作者]  
收藏   我要投稿

本次实验内容紧接上次实验,上次博客主要介绍PUPPET的安装认证与资源定义,这次主要写apache与nginx模块的应用。上次实验内容:

实战Puppet 集中配置管理系统(1)——认证与资源定义

本次实验内容:

1.建立节点文件

2.编写apache模块

3.编写nginx模块

4.模板应用(添加虚拟主机配置)

 

1.不同节点的定义

1.1. 在 puppetmaster(服务器server1端) 编辑 site.pp

# vim /etc/puppet/manifests/site.pp

import "nodes/*.pp"

1.2. 建立节点文件

#mkdir -p /etc/puppet/manifests/nodes

# vi /etc/puppet/manifests/nodes/server2.pp

node 'server2.example.com' {

file { "/var/www/html/index.html":

content => "server2.example.com"

}

}

# vi /etc/puppet/manifests/nodes/server3.pp

node 'server3.example.com' {

file { "/var/www/html/index.html":content => "server3.example.com"

}

}

wKioL1gX3wLCiuF-AAAzJfUXF_0332.png

wKiom1gX3wGA3rvSAAAmCABJmCs423.png

1.3在client上测试:

  #puppet agent --server server1.example.com --no-daemonize -vt

wKiom1gX4QnzuFxdAABvF3crQMQ808.png

wKioL1gX4QiifuyyAAASb2CUqDI043.png

 

2.编写apache模块

#mkdir -p /etc/puppet/modules/httpd/manifests

#mkdir -p /etc/puppet/modules/httpd/files

#cd /etc/puppet/modules/httpd/manifests

#vim install.pp

class httpd::install {

package { "httpd" :

ensure => present

}

}

#vim service.pp

class httpd::service

{

service {

"httpd":

ensure => running,

require => Class["httpd::install","httpd::config"]

}

}

#vim config.pp

class httpd::config {

 

file {

"/etc/httpd/conf/httpd.conf":

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

require => Class["httpd::install"],

notify => Class["httpd::service"]

}

}

#vim init.pp

class httpd {

include httpd::install,httpd::config,httpd::service

}

wKioL1gX4cCzKP-mAAASspdW0tE928.png

#cd /etc/puppet/modules/httpd/files

#cp /etc/httpd/conf/httpd.conf .

#cd /etc/puppet/manifests/nodes

#vim server2.pp

node 'server2.example.com' {

include httpd

file { "/var/www/html/index.html":

content => "server2.example.com"

}

}

wKiom1gX4kfC84ysAAAsvYhfvPQ852.png

在server2上测试:

#puppet agent --server server1.example.com --no-daemonize -vt

wKiom1gX4w7ANjONAAA5LXKh5jg176.png

wKioL1gX4w_gnwm_AAAzcS1DeW8858.png

wKiom1gX406gCw_2AAAl1IotIDI688.png

 

3.编写nginx模块

1) #mkdir -p /etc/puppet/modules/nginx/manifests

2) #mkdir -p /etc/puppet/modules/nginx/files

3) #cd /etc/puppet/modules/nginx/manifests

#vim install.pp

class nginx::install{

package {

["pcre-devel","gcc","openssl-devel"]:

ensure => present

}

file {

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

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

"/mnt/install-nginx.sh":

source => "puppet:///modules/nginx/install-nginx.sh"

}

exec {

"install nginx":

command => "sh /mnt/install-nginx.sh",

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

require => File["/mnt/install-nginx.sh","/mnt/nginx-1.8.0.tar.gz"],

creates => "/usr/local/lnmp/nginx/sbin/nginx"

#provider => shell,

}

}

  

#vim service.pp

class nginx::service {

exec {

"nginx start":

command => "/usr/local/lnmp/nginx/sbin/nginx",

require => Class["nginx::install"],

creates => "/usr/local/lnmp/nginx/logs/nginx.pid"

}

}

 

#vim config.pp

class nginx::config {

file {

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

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

require => Class["nginx::service"]

}

exec {

"nginx reload":

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

refreshonly => true,

subscribe => File["/usr/local/lnmp/nginx/conf/nginx.conf"]

}

}

 

#cd /etc/puppet/modules/nginx/files/

#vim install-nginx.sh

#!/bin/bash

cd /mnt

tar -zxf nginx-1.8.0.tar.gz

cd nginx-1.8.0

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module

make && make install

5)[root@server1 files]# ls

install-nginx.sh nginx-1.8.0.tar.gz nginx.conf

#cd /etc/puppet/manifests/nodes 

#vim server3.pp

node 'server3.example.com' {

include nginx

}

wKiom1gX5ciSvxwXAAAstQnlEtM015.png

在server3上测试:

  #puppet agent --server server1.example.com --no-daemonize -vt

wKiom1gX52GiDd8hAADxNWouneY421.png

wKioL1gX52DRyem1AABHp27LEqo681.png

 

4.模板应用(添加虚拟主机配置):

文件存放在 templates 目录中,以*.erb 结尾。

# vim /etc/puppet/modules/httpd/manifests/init.pp

  //#添加以下行

define httpd::vhost($domainname) {

file { "/etc/httpd/conf.d/${domainname}_vhost.conf":

content => template("httpd/httpd_vhost.conf.erb"),

require => Class["httpd::install"],

notify => Class["httpd::service"]

}

 

file { "/var/www/$domainname":

ensure => directory

}

 

file { "/var/www/$domainname/index.html":

content => $domainname

}

 

#cd /etc/puppet/modules/httpd/templates/

# vim httpd_vhost.conf.erb

ServerName <%= domainname="">

相关TAG标签
上一篇:SQL Server监控全解析
下一篇:win7激活工具_小马win7激活工具64位_win7激活工具密钥(绿色无毒)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站