在Puppet中用ERB模板来自动配置Nginx虚拟主机

在Puppet中用ERB模板来自动配置Nginx虚拟主机,第1张

在Puppet中用ERB模板来自动配置Nginx虚拟主机

模板是以“.”结尾的文件。ERB”在木偶模块下的模板目录中。puppet模板主要用于文件,比如各种服务的配置文件。对于相同的服务和不同的配置,可以考虑使用模板文件。比如Nginx和Apache的虚拟主机配置可以考虑使用erb模板。这里推荐nginx的安装使用系统自带的YUM源码或者其他第三方YUM源码来安装Nginx。如果使用nginx的官方源码来安装NGINX,我们可以查看文件/etc/yum.repos.d/nginx.repo的内容,如下图:

[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,nginx的日志存储会自动保存在/var/log/nginx下,其工作目录为/etc/nginx,与用源代码编译安装Nginx有很大区别。实验时也请注意筛选。

其他像Puppet这样的初级知识点我在这里就跳过了,直接粘贴文件内容。/etc/puppet的文件结构如下:

|-- 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的文件内容如下:

import "nodes/*.pp"

client.cn7788.com.pp的文档内容如下:

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

test.cn7788.com.pp的文档内容如下:

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

/etc/puppet/modules/nginx/manifests/init.PP文件的内容如下:

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文件的内容如下:

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的机器上验证效果。该命令如下:

puppetd --test --server server.cn7788.com

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/784303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存