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

[经验分享] puppet实现主从部署各种软件实战参考模型

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

运维网声明 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-114408-1-1.html 上篇帖子: puppet更新失败 下篇帖子: puppet安装于配置与编写简单模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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