在Puppet中用ERB模板来自动配置Nginx虚拟主机
模板文件是在puppet模塊下面templates目錄中以”.erb”結尾的文件,puppet模板主要用于文件,例如各種服務的配置文件,相同的服務,不同的配置就可以考慮使用模板文件,例如Nginx和Apache的虛擬主機配置就可以考慮采用ERB模板,nginx的安裝在這里建議用系統內部自帶的YUM源來安裝或其它第三方YUM源來安裝,如果是用Nginx的官方源來安裝nginx的話,我們可以查看下/etc/yum.repos.d/nginx.repo文件內容,如下所示:
| 1 2 3 4 5 | [nginx] name=nginx?repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 |
第二種方式就是通過createrepo自建自己的YUM源,這種方式更加寧活,我們可以在nginx官網去下載適合自己的rpm包,然后添加進自己的YUM源,在自動化運維要求嚴格的定制環境中,絕大多數運維同學都會選擇這種方法。大家通過此種方式安裝nginx以后會發現,確實比源碼安裝Nginx方便多了,像自動分配了運行nginx的用戶nginx:nginx,Nginx的日志存放會自動保存在/var/log/nginx下,其工作目錄為/etc/nginx,這一點跟源碼編譯安裝的nginx區別很大,請大家在實驗過程也注意甄別。
像Puppet其它初級知識點我這里就略過了,我直接貼上文件內容,/etc/puppet的文件結構如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |--?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的文件內容如下:
| 1 | import?"nodes/*.pp" |
client.cn7788.com.pp的文件內容如下所示:
| 1 2 3 4 5 6 7 | node?'client.cn7788.com'?{ ??include?nginx ??nginx::vhost?{'client.cn7788.com': ??sitedomain?=>?"client.cn7788.com"?, ??rootdir?=>?"client", } } |
test.cn7788.com.pp的文件內容如下所示:
| 1 2 3 4 5 6 7 | node?'test.cn7788.com'?{ ??include?nginx ??nginx::vhost?{'test.cn7788.com': ??sitedomain?=>?"test.cn7788.com"?, ??rootdir?=>?"test", } } |
/etc/puppet/modules/nginx/manifests/init.pp文件內容如下所示:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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文件內容如下所示:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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文件內容如下所示:
| 1 2 3 4 5 6 7 8 9 | 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; } } |
最后我們可以在節點名為client.cn7788.com和test.cn7788.com的機器驗證效果,命令如下所示:
| 1 | puppetd?--test?--server?server.cn7788.com |
本文轉自 撫琴煮酒 51CTO博客,原文鏈接:http://blog.51cto.com/yuhongchun/1569791,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的在Puppet中用ERB模板来自动配置Nginx虚拟主机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 条件随机场学习
- 下一篇: vue去掉hash值#