天天看点

Puppet管理Nginx主机

一:介绍

Puppet管理Nginx主机,将nginx主机加入到puppet中,实现自动安装、配置、和启动服务

二:nginx模块结构

[root@master modules]# tree /etc/puppet/modules/nginx/

/etc/puppet/modules/nginx/

├── files

├── manifests

│  ├── conf.pp

│  ├── init.pp

│  └── install.pp

└── templates

    ├── nginx.conf.erb

    └── vhost.erb

三:配置解释

install.pp为安装nginx的配置文件

[root@master manifests]# cat install.pp

class nginx::install {

    package {"nginx":

    ensure => present,

    }

}

conf.pp为配置nginx的配置文件

[root@master manifests]# cat conf.pp

class nginx::conf {

    define nginx::vhost($port,$hostname,$rootdir,$filename=$title){

    file {"/etc/nginx/conf.d":

        ensure => directory,

        owner => "root",

        group => "root",

        mode => "744",

        recurse => true,

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

    }

    file {"$filename":

        owner => "root",

        group => "root",

        mode => "644",

        path => "/etc/nginx/conf.d/${filename}",

        content => template("nginx/vhost.erb"),

        require => File["/etc/nginx/conf.d"],

    }

}

nginx::vhost{"www.puppet.com.conf":

    port => "80",

    hostname => "www.puppet.com",

    rootdir => "/var/www/puppet",

    }

}

init.pp为nginx模块的入口文件

[root@master manifests]# cat init.pp

class nginx {

    include nginx::install,nginx::conf

}

templates下面为nginx配置文件模板:

[root@master templates]# cat vhost.erb

server {

listen <%= port %>;

server_name <%= hostname %>;

root <%= rootdir %>;

index index.php;

location ~ .*\.php {

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_headers_hash_max_size 512;

fastcgi_index index.php;

fastcgi_pass 127.0.0.1:9000;

include fastcgi.conf;

}

location ~ \.(css|js)?$ {

expires 2h;

}

location ~ .*\.(mp3|jpg|jpeg|rar|png|zip|wmv|rm|doc|ppt|gif|bmp|xls|pdf|swf)$ {

expires 5d;

}

}

Puppet 学习系列:

Puppet 学习一:安装及简单实例应用 http://www.linuxidc.com/Linux/2013-08/88710.htm

Puppet学习二:简单模块配置和应用 http://www.linuxidc.com/Linux/2013-08/88711.htm