實戰Puppet 集中配置管理系統(2)——apache與nginx模塊配置

    本次實驗內容緊接上次實驗,上次博客主要介紹PUPPET的安裝認證與資源定義,此次主要寫apache與nginx模塊的應用。上次實驗內容:html

    實戰Puppet 集中配置管理系統(1)——認證與資源定義
node


本次實驗內容:nginx

1.創建節點文件shell

2.編寫apache模塊apache

3.編寫nginx模塊vim

4.模板應用(添加虛擬主機配置)瀏覽器


    1.不一樣節點的定義bash

    1.1. 在 puppetmaster(服務器server1端) 編輯 site.pp服務器

# vim  /etc/puppet/manifests/site.ppdom

    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

wKioL1gX4QiifuyyAAASb2CUqDI043.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

        }

wKioL1gX4cCzKP-mAAASspdW0tE928.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"

        }

        }

wKiom1gX4kfC84ysAAAsvYhfvPQ852.png

在server2上測試:

#puppet agent --server server1.example.com --no-daemonize -vt

wKiom1gX4w7ANjONAAA5LXKh5jg176.png

wKioL1gX4w_gnwm_AAAzcS1DeW8858.png

wKiom1gX406gCw_2AAAl1IotIDI688.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)[root@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

    }

wKiom1gX5ciSvxwXAAAstQnlEtM015.png

在server3上測試:

  #puppet agent --server server1.example.com --no-daemonize -vt

wKiom1gX52GiDd8hAADxNWouneY421.png

wKioL1gX52DRyem1AABHp27LEqo681.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

    <VirtualHost *:80>

    ServerName <%= domainname %>

    DocumentRoot /var/www/<%= domainname %>

    ErrorLog logs/<%= domainname %>_error.log

    CustomLog logs/<%= domainname %>_access.log common

    </VirtualHost>


#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兩個目錄

wKiom1gX6OezLY9cAAAhXdE2gXo281.png

6)在主機上添加解析,瀏覽器上測試

訪問server2.example.com

  www2.example.com


wKioL1gX6R_ROFf4AAA6ojQnwTc267.png


wKiom1gX6R_iuOoNAABC59JxuIs053.png

相關文章
相關標籤/搜索