一:介绍
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; } } |