博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Puppet中用ERB模板来自动配置Nginx虚拟主机
阅读量:6534 次
发布时间:2019-06-24

本文共 2995 字,大约阅读时间需要 9 分钟。

模板文件是在puppet模块下面templates目录中以”.erb”结尾的文件,puppet模板主要用于文件,例如各种服务的配置文件,相同的服务,不同的配置就可以考虑使用模板文件,例如Nginx和Apache的虚拟主机配置就可以考虑采用ERB模板,nginx的安装在这里建议用系统内部自带的YUM源来安装或其它第三方YUM源来安装,如果是用Nginx的官方源来安装nginx的话,我们可以查看下/etc/yum.repos.d/nginx.repo文件内容,如下所示:

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

第二种方式就是通过createrepo自建自己的YUM源,这种方式更加宁活,我们可以在nginx官网去下载适合自己的rpm包,然后添加进自己的YUM源,在自动化运维要求严格的定制环境中,绝大多数运维同学都会选择这种方法。大家通过此种方式安装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

转载地址:http://yswdo.baihongyu.com/

你可能感兴趣的文章
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
就是要你懂TCP -- 握手和挥手
查看>>
Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
查看>>
《Python游戏编程快速上手》一1.3 如何使用本书
查看>>
《Visual Studio程序员箴言》----1.2 滚动与导航
查看>>
Processing编程学习指南2.7 Processing参考文档
查看>>
架构师速成-架构目标之伸缩性\安全性
查看>>
执行可运行jar包时读取jar包中的文件
查看>>
linux下ExtMail邮件使用及管理平台
查看>>
linux中iptables设置自建dns服务器的端口
查看>>
基于Yum安装zabbix3.0
查看>>
Master-work模式
查看>>
RT-Thread--时间管理
查看>>
BUPT 63T 高才生 找最佳基站
查看>>
linux 学习(二)防火墙
查看>>
scala001
查看>>
android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替...
查看>>
自己选择的路,跪着走完吧——一个兔纸的话
查看>>
三端稳压器各个参数解释
查看>>
算法(Algorithms)第4版 练习 1.3.14
查看>>