puppet实现主从部署各种软件实战参考模型
puppet实现主从部署各种软件实战参考模型实验要求:
1.我将准备三个节点 node2 , node3 ,node4
2.我们想让节点node3部署ntp,nginx ;节点node4部署ntp,memcached
PS:这三个节点必须要能相互解析,并且时间要同步, 还要相互之间通信无需输入密码
上面条件准备好以后,接下就是安装 puppet的服务端/客户端节点(master/agent)
我这里用的是puppet-2.7版本
节点node2 (master)
# ls
facter-1.7.5-1.el6.x86_64.rpmpuppet-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
# yum -y localinstall facter-1.7.5-1.el6.x86_64.rpm puppet-2.7.25-1.el6.noarch.rpmpuppet-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下的 里边增加一行代码
server = node2.stu21.com
这样做的目的是是从的能够指向主的。
节点node3 (agent)
# vim /etc/puppet/puppet.conf
节点node4 (agent)
# vim /etc/puppet/puppet.conf
节点node2 (master)
我们可以安装一下模型进行创建文件
# cd /etc/puppet/modules/
# mkdir -pv ./{ntp,nginx,memcached}/{manifests,files,templates}
接下来我们要在模块里边编写三个类(ntp,nginx ,memcached)
# ls
memcachednginxntp
# cd nginx/
# ls
filesmanifeststemplates
#
我们要在nginx资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:
# cd manifests/
# vim init.pp
class nginx {
package{'nginx':
ensure => latest,
}
service{'nginx':
enable => true,
ensure => running,
require =>Package['nginx'],
}
}
接下来我再来按照同样的思路配置memcached 模块
首先切换到memcached类目录下
# ls
memcachednginxntp
# cd memcached/
# ls
filesmanifeststemplates
我们要在memcached的资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:
# cd manifests/
# vim init.pp
class memcached {
package{'memcached':
ensure => latest,
}
service{'memcached':
enable => true,
ensure => running,
require =>Package['memcached'],
}
}
还有一个ntp的类需要配置,思路同上
# ls
memcachednginxntp
# cd ntp
# ls
filesmanifeststemplates
我们要在ntp的资源清单(manifests)目录下,创建init.pp文件,并且配置步骤如下:
# cd manifests/
# ls
init.pp
# 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
这样,我们需要主服务与从服务连接起来,那么站点清单就是我们设置的关键:
# pwd
/etc/puppet/manifests
# vim nginx.pp
node 'node3.stu21.com' {
include ntp::synctime
include nginx
}
# vim memcached.pp
node 'node4.stu21.com' {
include ntp::synctime
include memcached
}
接下来,我将配置站点清单/etc/puppet/manifests/site.pp
# cd /etc/puppet/
# ls
auth.conffileserver.confmanifestsmodulespuppet.conf
# cd manifests/
# vim site.pp
import "nginx.pp"
import "memcached.pp"
接下来我们就来测试阶段:
主节点上,让它运行在前台上
# puppet master -d -v --no-daemonize
从节点上
# puppet agent -d -v --no-daemonize
# puppet agent -d -v --no-daemonize
实验心得:
一直困惑我的事如果在站点清单的sit.pp文件里 设置
import "*.pp"
然后测试,总是出现
出现这样的原因是因为我在/etc/puppet/manifests/ 目录 创建啦 memcached.pp,nginx.pp site.pp 所以出错提示是我们的import "*.pp"也把自己包含进去啦
# pwd
/etc/puppet/manifests
如若想要import "*.pp" ,解决办法是 在/etc/puppet/manifests/创建任意一个目录,我这里创建 1,再把memcached.pp,nginx.pp 移到 1 目录下
# ls
1site.pp
# cd 1
# ls
memcached.ppnginx.pp
而site.pp只需要下面设置从1 目录下读取 *.pp
# cat site.pp
import "1/*.pp"
页:
[1]