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


    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"

     

     

     

     

  • 相关阅读:
    获取资源文件 r.drawable中的图片转换为drawable、bitmap
    Android 启动白屏或者黑屏闪现解决
    Android应用截图方法
    史上最全的变量、作用域和内存问题
    RunLoop总结:RunLoop的应用场景(四)
    poj3436 ACM Computer Factory, 最大流,输出路径
    android开发——从相冊中选择图片不裁剪
    <html>
    poj3073
    poj 2482 Stars in Your Window (线段树扫描线)
  • 原文地址:https://www.cnblogs.com/na2po2lun/p/4271045.html
Copyright © 2020-2023  润新知