圣凤凌霜 发表于 2018-8-3 09:40:43

puppet安装与使用--模块结构(iptables与rsync模块)

  puppet安装与使用--模块结构(iptables与rsync模块)
  模块结构
  一个模块就是一个/etc/puppet/modules目录下面的一个目录和它的子目录,在puppet的主文件site.pp里面用import   modulename可以插入模块。新版本的puppet可以自动插入/etc/puppet/modules目录下的模块。引入模块,可以结构化代码,便于分享和管理。
  例如关于apache的所有配置都写到apache模块下面。一个模块目录下面通常包括三个目录:files,manifests,templates。manifests   里面必须要包括一个init.pp的文件,这是该模块的初始(入口)文件,导入一个模块的时候,会从init.pp开始执行。可以把所有的代码都写到init.pp里面,也可以分成多个pp文件,init   再去包含其他文件。files目录是该模块的文件发布目录,puppet提供一个文件分发机制,类似rsync的模块。templates   目录包含erb模型文件,这个和file资源的template属性有关。
  网上有好多结构图,还不错
  
  结构类似,自己也可以跟着创建相应目录,如下图,我的测试机器上目录结构:

  结构与上叙述完全相同,每个模块下manifests下总会有一个init.pp文件,总规是一个套一个
  
  iptalbes模块例子使用
  结构与上,在/etc/puppet/modules模块下增加rsync模块

  事先要把给客户端定制好的iptables.sh脚本放入files下,编写init.pp

  创建一个class 类,在模块modules.pp中调用即可,主入口为site.pp,所以在site.pp要调用modules.pp
  上图中难理解的就是source => "puppet://$fileserver/iptables/iptables.sh",这个是puppet代码中就写好的,每个模块files下面的文件,都可以写成 puppet://$fileserver/模块名/files文件下的文件名" 来调用 notify指定了顺序,在执行exec前执行file,因为puppet程序里面定义的资源是同时执行的,不分先后,所以控制先后顺序必须的利用某个参数
  模块写好后,看/etc/puppet下文件 内容,如下:
  在modules.pp中 import "模块名”,在site.pp里面 import modules.pp

  还有个节点pp,可义为nodes.pp,在init.pp里也有import,nodes.pp里面可以这样写
  node default {
  include 'iptables'}
  对默认节点使用iptables,要结某个节点使用iptables,可以node '节点名' {}
  
  
  
  
  
  验证测试

  
  
  rsync模块例子使用
  Puppet结合rsync同步文件是参考网上一篇文章,模块是由别人写的,可以下载自由使用,但测试后,发现rsync客户端同步还是有问题,所以自己在里面填了部分client,可以实现文件同步
  参考文章网址:http://www.mysqlops.com/2012/02/20/puppet-rsync.html#comment-1564
  当然,同步文件也可以使用puppet文件服务器,要用到fileserver.conf文件 ,同步小文件可以,但考虑到要同步大文件还是考虑用rsyncx效率要高点
  
  根据文章中,先下载两个模块到modules
  cd /etc/puppet/modules/
  git clone https://github.com/onyxpoint/pupmod-concat && mv pupmod-concat concat
  git clone https://github.com/onyxpoint/pupmod-rsync && mv pupmod-rsync rsync
  Git如果没有装的话,yum下,git好象类似svn(有待研究),git时可能会报个错,如下解决即可
  Cloning into cancan…
  error: SSL certificate problem, verify that the CA cert is OK. Details:
  error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while
  
  。。。。。
  解决办法:
  git config --global http.sslVerify false
  下载后,就该配rsync服务了,我选择puppet1(server)作为rsync-server,在node.pp里面如下配置

  在puppet1运行 puppetd --test --server puppet1 ,即可生成rsyncd.conf文件,启动rsync服务
  (注意:防火墙中要过滤873服务端口)

  rsyncd的配置文件 应该大家不默认,不多说了
  
  服务端配置好后,需要配置客户端了,但按上面那个链接来做,我没有成功,可能跟版本有关,大家可以尝试下他的做法,我现在共享下我的做法
  cd /etc/puppet/modules/rsync/manifests/
  进到下载的模块后,有init.ppserverserver.pp 3个文件,观察里面内容,可自己编写
  client.ppclient/rs.pp

  回到note.pp 对节点puppet2做下面配置,

  注:上面rsync在服务端配置两模块,default和test,对应路径都为puppet1下/usr/local/src
  在note.pp对节点2中,我写的是定义的模块名,所以意思就是把puppet1/usr/local/src下的文件同步到puppet2下的/tmp/test /tmp/test1
  
  验证测试:
  在puppet1上,有两文件

  在puppet2上

  同步成功
  
  
  Puppet 功能非常强大,自身包括了很多的资源,根据自己的爱好和自己工作实际所需,可以有选择有研究,还有cron也是很好用的,并且配置也是比较简单的,有兴趣的可以一起研究
页: [1]
查看完整版本: puppet安装与使用--模块结构(iptables与rsync模块)