[轉載]在Puppet中用ERB模板來自動配置Nginx虛擬主機

1. 模板文件是在puppet模塊下面templates目錄中以」.erb」結尾的文件

puppet模板主要用於文件,例如各類服務的配置文件,相同的服務,不一樣的配置就能夠考慮使用模板文件,例如Nginx和Apache的虛擬主機配置就能夠考慮採用ERB模板,nginx的安裝在這裏建議用系統內部自帶的YUM源來安裝或其它第三方YUM源來安裝,若是是用Nginx的官方源來安裝nginx的話,咱們能夠查看下/etc/yum.repos.d/nginx.repo文件內容,以下所示:php

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

2. 第二種方式就是經過createrepo自建本身的YUM源

這種方式更加寧活,咱們能夠在nginx官網去下載適合本身的rpm包,而後添加進本身的YUM源,在自動化運維要求嚴格的定製環境中,絕大多數運維同窗都會選擇這種方法。你們經過此種方式安裝nginx之後會發現,確實比源碼安裝Nginx方便多了,像自動分配了運行nginx的用戶nginx:nginx,Nginx的日誌存放會自動保存在/var/log/nginx下,其工做目錄爲/etc/nginx。
像Puppet其它初級知識點我這裏就略過了,我直接貼上文件內容,/etc/puppet的文件結構以下:html

|-- auth.conf
|-- fileserver.conf
|-- manifests
|   |-- nodes
|   |   |-- client.cn7788.com.pp
|   |   `-- test.cn7788.com.pp
|   `-- site.pp
|-- modules
|   `-- nginx
|       |-- files
|       |-- manifests
|       |   `-- init.pp
|       `-- templates
|           |-- nginx.conf.erb
|           `-- nginx_vhost.conf.erb
`-- puppet.conf

site.pp的文件內容以下:node

import "nodes/*.pp"

client.cn7788.com.pp的文件內容以下所示:nginx

node 'client.cn7788.com' {
include nginx
nginx::vhost {'client.cn7788.com':
sitedomain => "client.cn7788.com" ,
rootdir => "client",
}
}

test.cn7788.com.pp的文件內容以下所示:centos

node 'test.cn7788.com' {
include nginx
nginx::vhost {'test.cn7788.com':
sitedomain => "test.cn7788.com" ,
rootdir => "test",
}
}

/etc/puppet/modules/nginx/manifests/init.pp文件內容以下所示:app

class nginx{
    package{"nginx":
    ensure          =>present,
}
    service{"nginx":
    ensure          =>running,
    require         =>Package["nginx"],
}
file{"nginx.conf":
ensure => present,
mode => 644,owner => root,group => root,
path => "/etc/nginx/nginx.conf",
content=> template("nginx/nginx.conf.erb"),
require=> Package["nginx"],
}
}
define nginx::vhost($sitedomain,$rootdir) {
file{ "/etc/nginx/conf.d/${sitedomain}.conf":
    content => template("nginx/nginx_vhost.conf.erb"),
    require => Package["nginx"],
}
}

/etc/puppet/modules/nginx/templates/nginx.conf.erb文件內容以下所示:運維

user  nginx;
worker_processes  8;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
use epoll; 
worker_connections  51200;
}
http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
access_log  /var/log/nginx/access.log  main;
sendfile        on;
#tcp_nopush     on;
keepalive_timeout  65;
#gzip  on;
include /etc/nginx/conf.d/*.conf;
}

/etc/puppet/modules/nginx/templates/nginx_vhost.conf.erb文件內容以下所示:dom

server {
listen       80;
server_name  <%= sitedomain %>;
access_log /var/log/nginx/<%= sitedomain %>.access.log;
location / {
root /var/www/<%= rootdir %>;
index    index.php index.html index.htm;
}
}
相關文章
相關標籤/搜索