设为首页 收藏本站
查看: 1518|回复: 0

[经验分享] 实战Puppet 集中配置管理系统(2)——apache与nginx模块配

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-2 08:48:16 | 显示全部楼层 |阅读模式
   本次实验内容紧接上次实验,上次博客主要介绍PUPPET的安装认证与资源定义,这次主要写apache与nginx模块的应用。上次实验内容:    实战Puppet 集中配置管理系统(1)——认证与资源定义


本次实验内容:
1.建立节点文件
2.编写apache模块
3.编写nginx模块
4.模板应用(添加虚拟主机配置)

    1.不同节点的定义
    1.1. 在 puppetmaster(服务器server1端) 编辑 site.pp
# vim  /etc/puppet/manifests/site.pp
    import "nodes/*.pp"
    1.2. 建立节点文件
#mkdir -p /etc/puppet/manifests/nodes
# vi /etc/puppet/manifests/nodes/server2.pp
node 'server2.example.com' {
file { "/var/www/html/index.html":
content => "server2.example.com"
}
}
# vi /etc/puppet/manifests/nodes/server3.pp
node 'server3.example.com' {
file { "/var/www/html/index.html":content => "server3.example.com"
}
}
wKioL1gX3wLCiuF-AAAzJfUXF_0332.png
wKiom1gX3wGA3rvSAAAmCABJmCs423.png
    1.3 在client上测试:
  #puppet agent --server server1.example.com --no-daemonize -vt
wKiom1gX4QnzuFxdAABvF3crQMQ808.png
wKioL1gX4cCzKP-mAAASspdW0tE928.png

2.编写apache模块
#mkdir -p /etc/puppet/modules/httpd/manifests
#mkdir -p /etc/puppet/modules/httpd/files
#cd /etc/puppet/modules/httpd/manifests
#vim install.pp
    class httpd::install {
                package { "httpd" :
                        ensure => present
                }
        }
#vim service.pp
    class httpd::service
    {
service {
"httpd":
ensure => running,
require => Class["httpd::install","httpd::config"]
            }
    }
#vim config.pp
        class httpd::config {

file {
"/etc/httpd/conf/httpd.conf":
source => "puppet:///modules/httpd/httpd.conf",
require => Class["httpd::install"],
notify => Class["httpd::service"]
                }
        }
#vim init.pp
        class httpd {
                include httpd::install,httpd::config,httpd::service
        }
wKiom1gX4kfC84ysAAAsvYhfvPQ852.png
#cd /etc/puppet/modules/httpd/files
#cp /etc/httpd/conf/httpd.conf .
#cd /etc/puppet/manifests/nodes
#vim server2.pp
        node 'server2.example.com' {
        include httpd
        file { "/var/www/html/index.html":
        content => "server2.example.com"
        }
        }
wKiom1gX4w7ANjONAAA5LXKh5jg176.png
在server2上测试:
#puppet agent --server server1.example.com --no-daemonize -vt
wKioL1gX4w_gnwm_AAAzcS1DeW8858.png
wKiom1gX406gCw_2AAAl1IotIDI688.png
wKiom1gX52GiDd8hAADxNWouneY421.png

3.编写nginx模块
1) #mkdir -p /etc/puppet/modules/nginx/manifests
2) #mkdir -p /etc/puppet/modules/nginx/files
3) #cd /etc/puppet/modules/nginx/manifests
    #vim install.pp
        class nginx::install{
        package {
                ["pcre-devel","gcc","openssl-devel"]:
                ensure => present
        }
        file {
                "/mnt/nginx-1.8.0.tar.gz":
                source => "puppet:///modules/nginx/nginx-1.8.0.tar.gz";
                "/mnt/install-nginx.sh":
                source => "puppet:///modules/nginx/install-nginx.sh"
        }
        exec {
                "install nginx":
                command => "sh /mnt/install-nginx.sh",
                path => "/bin:/usr/bin:/sbin:/usr/sbin",
                require => File["/mnt/install-nginx.sh","/mnt/nginx-1.8.0.tar.gz"],
                creates => "/usr/local/lnmp/nginx/sbin/nginx"
                #provider => shell,
        }
        }

#vim service.pp
    class nginx::service {
    exec {

"nginx start":
command => "/usr/local/lnmp/nginx/sbin/nginx",
require => Class["nginx::install"],
creates => "/usr/local/lnmp/nginx/logs/nginx.pid"
    }
    }

#vim config.pp
    class nginx::config {
    file {

"/usr/local/lnmp/nginx/conf/nginx.conf":
source => "puppet:///modules/nginx/nginx.conf",
require => Class["nginx::service"]
    }
    exec {
"nginx reload":
command => "/usr/local/lnmp/nginx/sbin/nginx -s reload",
refreshonly => true,
subscribe => File["/usr/local/lnmp/nginx/conf/nginx.conf"]
    }
    }

#cd /etc/puppet/modules/nginx/files/
#vim install-nginx.sh
#!/bin/bash
    cd /mnt
    tar -zxf nginx-1.8.0.tar.gz
    cd nginx-1.8.0
    ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
    make && make install
5)[iyunv@server1 files]# ls
    install-nginx.sh  nginx-1.8.0.tar.gz  nginx.conf
#cd /etc/puppet/manifests/nodes 
#vim server3.pp
    node 'server3.example.com' {
    include nginx
    }
wKioL1gX52DRyem1AABHp27LEqo681.png
在server3上测试:
  #puppet agent --server server1.example.com --no-daemonize -vt
wKiom1gX6OezLY9cAAAhXdE2gXo281.png
wKioL1gX6R_ROFf4AAA6ojQnwTc267.png

4. 模板应用(添加虚拟主机配置):
文件存放在 templates 目录中,以*.erb 结尾。
# vim /etc/puppet/modules/httpd/manifests/init.pp
  //#添加以下行
    define httpd::vhost($domainname) {
    file { "/etc/httpd/conf.d/${domainname}_vhost.conf":
    content => template("httpd/httpd_vhost.conf.erb"),
    require => Class["httpd::install"],
    notify => Class["httpd::service"]
    }

    file { "/var/www/$domainname":
    ensure => directory
    }

    file { "/var/www/$domainname/index.html":
    content => $domainname
    }

#cd /etc/puppet/modules/httpd/templates/
# vim httpd_vhost.conf.erb
   
    ServerName <%= domainname %>
    DocumentRoot /var/www/<%= domainname %>
    ErrorLog logs/<%= domainname %>_error.log
    CustomLog logs/<%= domainname %>_access.log common
   

#vim /etc/puppet/manifests/nodes/server4.pp
    node 'server2.example.com' {
include httpd
httpd::vhost { 'server2.example.com':
domainname => "server2.example.com",
}
httpd::vhost { 'www2.example.com':
        domainname => "www2.example.com",
        }
    }
# vim /etc/puppet/modules/httpd/files/httpd.conf
    990 NameVirtualHost *:80

5)在server2 上测试:
#puppet agent --server server2.example.com --no-daemonize -vt
//在/var/www下会生成server2.example.com  www2.example.com两个目录
wKiom1gX6R_iuOoNAABC59JxuIs053.png
6)在主机上添加解析,浏览器上测试
访问server2.example.com
  www2.example.com










运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-294527-1-1.html 上篇帖子: 实战Puppet 集中配置管理系统(1)——认证与资源定义 下篇帖子: 实战Puppet 集中配置管理系统(3)——Puppet dashboard与nginx+passen...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表