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实现主从部署各种软件实战参考模型的更多相关文章

  1. 网易OpenStack部署运维实战

    OpenStack自2010年项目成立以来,已经有超过200个公司加入了 OpenStack 项目,目前参与 OpenStack 项目的开发人员有 17,000+,而且这些数字还在增加,作为一个开源的 ...

  2. Puppet安装及部署

    本篇博客主要介绍Puppet的安装部署,后续会更新其他相关内容 一.简介 二.环境介绍 三.安装Puppet 四.配置Puppet-dashboard 五.配置Puppet Kick 一.简介 Pup ...

  3. AMQ学习笔记 - 14. 实践方案:基于ZooKeeper + ActiveMQ + replicatedLevelDB的主从部署

    概述 基于ZooKeeper + ActiveMQ + replicatedLevelDB,在Windows平台的主从部署方案. 主从部署可以提供数据备份.容错[1]的功能,但是不能提供负载均衡的功能 ...

  4. 部署Ambari Server实战案例

    部署Ambari Server实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备三台虚拟机(需要自行安装jdk环境) 1>.角色分配 NameNode节点: h ...

  5. Redis主从 部署和配置

    目录 一.主从简介 主从介绍 主从原理 二.主从部署 环境介绍 主从配置 临时主从 三.主从测试 一.主从简介 主从介绍 Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节 ...

  6. AD域 组策略部署U软件

    1.首先把需要部署的软件放到活动目录共享文件夹中.(只支持MSI格式的软件) 2.打开组策略管理工具. 3.选择域名右键,创建GPO. 4.在弹出的新建GPO窗口中,输入策略名称. 5.在新创建的策略 ...

  7. Redis 主从部署

    Redis 主从部署 http://www.xuchanggang.cn/archives/978.html

  8. SQLServer 2008R2主从部署实战

    说明: 由于临时接到做OA的主从环境,基于Windows 200R2 SQLServer2008 R2,由于搜索的资料都不完整,好多重要之处有遗漏,亲自动手做了好几次,填完了坑,整理以备忘记与分享,如 ...

  9. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

随机推荐

  1. Windows 10 中 Eclipse中无法添加Courier New字体的解决方法!

    1,打开"C:\Windows\Fonts\"文件夹. 2,鼠标右键"Courier New",随后点击"显示",这样你就可以在Eclips ...

  2. 20145305《JAVA程序设计》课程总结

    每周读书笔记链接汇总 问卷调查 第0周学习心得 第1周学习总结 第2周学习总结 第3周学习总结 第4周学习总结 第5周学习总结 第6周学习总结 第7周学习总结 第8周学习总结 第9周学习总结 第10周 ...

  3. testng.xml创建及解析

    项目右键---TestNG -----> Convert to TestNG 会自动产生一个testng.xml的文件 http://www.cnblogs.com/choosewang/art ...

  4. PS 的参考线

    新建参考线 菜单:"视图-新建参考线", 直接输入想要位置的参考线.   参考线对齐 按住Shift键拉辅助线,辅助线会自动对齐到当前标尺的刻度上.           按住Alt ...

  5. C# 中将多个空格替换成一个空格

    2013-04-17 15:36 C# 中如何将多个空格替换成一个空格? 1 myString = Regex.Replace(myString, @"\s+", " & ...

  6. nyoj 102 次方求摸 快速幂

    点击打开链接 次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 求a的b次方对c取余的值 输入 第一行输入一个整数n表示测试数据的组数(n<100) 每组测 ...

  7. (easy)LeetCode 205.Reverse Linked List

    Reverse a singly linked list. 解法一:记录单链表每个节点的val,然后重新为单链表赋值.(取巧,仅仅是将val部分改变,原始node节点并没有改变) 代码如下: /** ...

  8. java重写

    1.当子类重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变,不能从大的范围向小的范围改变,public  protected  private,[权限篇] 2.子类重写父类方法还可以修改 ...

  9. java 的数据类型

    java 的数据类型有基本类型和引用类型 java的类的关系:有继承,有依赖,有关联,聚合,组成.

  10. 论java虚拟类和接口的区别

    如题:Abstract使数据成员虚拟化,而Interface则使方法成员虚拟化.