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

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

模块结构
    一个模块就是一个/etc/puppet/modules目录下面的一个目录和它的子目录,在puppet的主文件site.pp里面用import   modulename可以插入模块。新版本的puppet可以自动插入/etc/puppet/modules目录下的模块。引入模块,可以结构化代码,便于分享和管理。

    例如关于apache的所有配置都写到apache模块下面。一个模块目录下面通常包括三个目录:filesmanifeststemplatesmanifests   里面必须要包括一个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.pp  server  server.pp 3个文件,观察里面内容,可自己编写
client.pp  client/rs.pp


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


注:上面rsync在服务端配置两模块,defaulttest,对应路径都为puppet1/usr/local/src

note.pp对节点2中,我写的是定义的模块名,所以意思就是把puppet1/usr/local/src下的文件同步到puppet2下的/tmp/test /tmp/test1

验证测试:
puppet1上,有两文件

puppet2


同步成功

Puppet 功能非常强大,自身包括了很多的资源,根据自己的爱好和自己工作实际所需,可以有选择有研究,还有cron也是很好用的,并且配置也是比较简单的,有兴趣的可以一起研究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章