fdfe 发表于 2015-9-16 11:24:13

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]
查看完整版本: puppet实现主从部署各种软件实战参考模型