码迷,mamicode.com
首页 > 其他好文 > 详细

puppet实现主从部署各种软件实战参考模型

时间:2015-02-03 22:34:55      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:

puppet实现主从部署各种软件实战参考模型

?

实验要求:

?

?

1.我将准备三个节点 node2 , node3 , node4

2.我们想让节点node3部署ntp,nginx ;节点node4部署ntp,memcached

?

PS:这三个节点必须要能相互解析,并且时间要同步, 还要相互之间通信无需输入密码

?

?

上面条件准备好以后,接下就是安装 puppet的服务端/客户端节点(master/agent)

我这里用的是puppet-2.7版本

?

?

节点node2 (master)

?

[root@node2 2.7.25]# ls

facter-1.7.5-1.el6.x86_64.rpm puppet-dashboard-1.2.23-1.el6.noarch.rpm

puppet-2.7.25-1.el6.noarch.rpm puppet-server-2.7.25-1.el6.noarch.rpm

?

?

[root@node2 2.7.25]# yum -y localinstall facter-1.7.5-1.el6.x86_64.rpm puppet-2.7.25-1.el6.noarch.rpm puppet-server-2.7.25-1.el6.noarch.rpm

?

ps:" facter-1.7.5-1.el6.x86_64.rpm" 是获取系统相关信息,"puppet-2.7.25-1.el6.noarch.rpm" 是puppet 的客户端的 ,"puppet-server-2.7.25-1.el6.noarch.rpm"是puppet的服务端

?

?

?

?

?

配置从节点配置文件,在/etc/puppet/puppet.conf 下的 [agent] 里边增加一行代码

server = node2.stu21.com

这样做的目的是是从的能够指向主的。

?

?

?

?

?

?

?

?

节点node3 (agent)

?

[root@node3 ~]# vim /etc/puppet/puppet.conf

技术分享

?

节点node4 (agent)

[root@node4 ~]# vim /etc/puppet/puppet.conf

技术分享

?

?

?

?

?

?

?

?

?

?

?

节点node2 (master)

?

我们可以安装一下模型进行创建文件

?

技术分享

?

[root@node2 ~]# cd /etc/puppet/modules/

?

[root@node2 modules]# mkdir -pv ./{ntp,nginx,memcached}/{manifests,files,templates}

?

接下来我们要在模块里边编写三个类(ntp,nginx ,memcached)

?

[root@node2 modules]# ls

memcached nginx ntp

[root@node2 modules]# cd nginx/

[root@node2 nginx]# ls

files manifests templates

[root@node2 nginx]#

?

我们要在nginx资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:

?

[root@node2 nginx]# cd manifests/

?

[root@node2 manifests]# vim init.pp

?

class nginx {

package{‘nginx‘:

ensure => latest,

}

service{‘nginx‘:

enable => true,

ensure => running,

require =>Package[‘nginx‘],

}

}

?

?

接下来我再来按照同样的思路配置memcached 模块

?

首先切换到memcached类目录下

[root@node2 modules]# ls

memcached nginx ntp

?

[root@node2 modules]# cd memcached/

[root@node2 memcached]# ls

files manifests templates

?

?

我们要在memcached的资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:

?

[root@node2 memcached]# cd manifests/

[root@node2 manifests]# vim init.pp

?

class memcached {

package{‘memcached‘:

ensure => latest,

}

service{‘memcached‘:

enable => true,

ensure => running,

require =>Package[‘memcached‘],

}

}

?

?

?

?

还有一个ntp的类需要配置,思路同上

?

[root@node2 modules]# ls

memcached nginx ntp

[root@node2 modules]# cd ntp

[root@node2 ntp]# ls

files manifests templates

?

我们要在ntp的资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:

?

[root@node2 ntp]# cd manifests/

[root@node2 manifests]# ls

init.pp

[root@node2 manifests]# vim init.pp

?

class ntp {

}

class ntp::synctime inherits ntp {

cron{‘synctime‘:

ensure => present,

minute => ‘*/5‘,

command => ‘/usr/sbin/ntpdate 172.16.0.1 &> /dev/null‘,

name => ‘sync time from ntp server‘,

}

}

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

我打算节点node3 配置ntp与nginx , 节点node4 配置ntp与memcached

这样,我们需要主服务与从服务连接起来,那么站点清单就是我们设置的关键:

?

[root@node2 manifests]# pwd

/etc/puppet/manifests

[root@node2 manifests]# vim nginx.pp

?

node ‘node3.stu21.com‘ {

include ntp::synctime

include nginx

}

?

?

?

[root@node2 manifests]# vim memcached.pp

node ‘node4.stu21.com‘ {

include ntp::synctime

include memcached

}

?

?

?

接下来,我将配置站点清单 /etc/puppet/manifests/site.pp

?

?

[root@node2 ~]# cd /etc/puppet/

[root@node2 puppet]# ls

auth.conf fileserver.conf manifests modules puppet.conf

[root@node2 puppet]# cd manifests/

[root@node2 manifests]# vim site.pp

import "nginx.pp"

import "memcached.pp"

?

?

?

接下来我们就来测试阶段:

主节点上,让它运行在前台上

[root@node2 ~]# puppet master -d -v --no-daemonize

?

?

从节点上

[root@node3 ~]# puppet agent -d -v --no-daemonize

[root@node4 ~]# puppet agent -d -v --no-daemonize

?

?

实验心得:

?

?

一直困惑我的事如果在站点清单的 sit.pp文件里 设置

????????import "*.pp"

?

然后测试,总是出现

技术分享

?

出现这样的原因是因为我在 /etc/puppet/manifests/ 目录 创建啦 memcached.pp ,nginx.pp site.pp 所以出错提示是我们的import "*.pp"也把自己包含进去啦

?

[root@node2 manifests]# pwd

/etc/puppet/manifests

?

?

?

如若想要 import "*.pp" ,解决办法是 在 /etc/puppet/manifests/ 创建任意一个目录,我这里创建 1 ,再把memcached.pp ,nginx.pp 移到 1 目录下

?

[root@node2 manifests]# ls

1 site.pp

[root@node2 manifests]# cd 1

[root@node2 1]# ls

memcached.pp nginx.pp

?

而site.pp只需要下面设置从 1 目录下读取 *.pp

[root@node2 manifests]# cat site.pp

import "1/*.pp"

?

?

?

?

puppet实现主从部署各种软件实战参考模型

标签:

原文地址:http://www.cnblogs.com/na2po2lun/p/4271045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!