由于之前有位大师已经详细的讲解了如何搭建puppet+svn+func,在这里我就不多说了,要不然就算不上原创了,需要了解如何搭建就请参考以下地址吧

http://blog.chinaunix.net/uid-14880689-id-3201948.html

在这里我主要说一下我安装时碰到的一些问题

1、svn触发脚本

触发脚本的名称是post-commit,这个脚本需要手动创建,触发脚本放在hooks目录下。每个人的svn根目录不一样,我的是/opt/svndata/puppet/hooks。当使用commit提交svn时就会触发这个脚本。

2、触发脚本中使用sudo报错

我在编辑post-commit脚本是发现,执行某些命令权限不足,于是加了sudo,却发现报错

解决方法:编辑/etc/sudoers,将Defaultsrequiretty注释掉

3、触发脚本中调用的一条shell语句

ssh -np 33777 root@192.168.7.156 “svn up svn://192.168.7.135:9999/puppet /etc/puppet –username=puppet –password=puppet;sh /www/leary/run_client.sh”

这条语句刚开始不是很明白,后来自己仔细的捋了一下流程,才发现这个是puppet服务端更新svn客户端用的,就是说在puppet服务器上安装一个svn客户端,这个命令就是用来更新svn的。

所以这条命令涉及到了两个问题:

    (1)、linux版本svn客户端安装

    subversion-1.6.15.tar.gz

    subversion-deps-1.6.15.tar.gz

    tar zxvfsubversion-1.6.15.tar.gz

    tar zxvfsubversion-deps-1.6.15.tar.gz

    ./configure --prefix=/opt/svn

    make && make install

    将svn命令链接到/usr/local/bin目录下

    ln -s /usr/local/subversion/bin/svn /usr/local/bin

    执行svn help 如果出现命令列表,则表示已经链接成功

    建立svn目录

    执行svn co http://192.168.7.135:999/svn/puppet /etc/ --username=puppet --password=puppet

    执行成功后会在/etc/下生成puppet目录

  (2)、不用密码使用ssh直接登录服务器

    登陆svn服务器

    [root@localhost /]# ssh-keygen (回车,回车,一直回车)

    在/root/.ssh/下面会生成两个文件

    私有密钥id_rsa

    公共密钥id_rsa.pub

    将私有密钥id_rsa复制到puppet服务器/root/.ssh/下面,并重命名为authorized_keys