舒畅 发表于 2018-8-2 10:31:23

Puppet整合SVN(三):Puppet整合SVN

  1、检查
# ll /etc/puppet/  
总用量 32
  
-rw-r--r--1 root root 4178 11月5 16:10 auth.conf
  
-rw-r--r--1 root root   11 11月5 16:10 autosign.conf
  
drwxr-xr-x5 root root 4096 11月5 16:10 environments
  
-rw-r--r--1 root root 1561 11月5 16:10 fileserver.conf
  
drwxr-xr-x2 root root 4096 11月 13 11:40 manifests
  
drwxr-xr-x1 root root 4096 11月 12 15:21 modules
  
-rw-r--r--1 root root915 11月5 16:10 puppet.conf
  2、导入
  将puppet配置导入到版本库中,但此时原文件还没有被版本控制:
# svn import /etc/puppet http://10.188.1.73:8080/svn -m "import puppet" --username puppet --password 123456 --no-auth-cache
  检查版本库中是否已存在导入的puppet文件:
# svn list http://10.188.1.73:8080/svn--username puppet --password 123456 --no-auth-cache  
  3、删除
# rm -fr /etc/puppet  
# ll /etc/puppet/
  4、检出
  检出到/etc/puppet目录上,使其被版本控制:
# svn co http://10.188.1.73:8080/svn /etc/puppet --username puppet --password 123456 --no-auth-cache  
# ll /etc/puppet/
  在windows管理机器上检出,以后就直接在这里添加修改文件,提交到服务器:

  windows下的svn客户端TortoiseSVN下载地址:
  http://tortoisesvn.net/downloads.html
  5、更新
  (1)计划任务更新方式(不建议)
# crontab -e  
*/5 * * * * /usr/local/bin/svn update /etc/puppet --username puppet --password 123456--no-auth-cache
  
# service crond restart
  每5分钟更新/etc/puppet目录。
  (2)SVN勾子更新方式(强力推荐)
# cd /usr/local/svn/puppet/hooks  
# cp post-commit.tmpl post-commit
  
# vi post-commit
  
#!/bin/sh
  
# POST-COMMIT HOOK
  
REPOS="$1"
  
REV="$2"
  
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
  
export LANG=en_US.UTF-8
  
SVN=/usr/local/bin/svn
  
PUPPET_DIR=/etc/puppet
  
$SVN update $PUPPET_DIR --username puppet --password 123456--no-auth-cache
  
# chmod 777 /etc/puppet
  只要客户端一提交,就会触发post-commit中的update命令更新/etc/puppet目录,节省资源又有效率。
  6、提交(不建议)
  当需要在服务端修改/etc/puppet目录中的文件时(比如将ssh的配置文件sshd.config复制到ssh模块目录下时),需要提交到版本库。
  先使用svn add添加新建的文件,再用svn ci提交:
# svn add /etc/puppet/modules/ssh/files/sshd.config  
# svn ci /etc/puppet/ -m "commit"
  
警告: post-commit hook failed (exit code 1) with output: svn: E155004: Working copy '/etc/puppet' locked. svn: E155004: '/etc/puppet' is already locked.
  
# cd /etc/puppet/
  
# svn cleanup   #清除后再重新添加、提交
  注意:不建议在服务端操作,容易出现锁死问题,最好统一在管理机器上进行提交。
  在管理机器上提交时出现以下错误:

  客户端提交属于“其他”用户,因此需要给/etc/puppet “其他用户”的写权限:
  # chmod 777 /etc/puppet
  另外在服务端svn ci后再在客户端提交也会出现locked问题,解决方式是不使用同一账号,最好就不在服务端操作。
  参考自关于windows环境SVN服务器问题:http://blog.sina.com.cn/s/blog_69265fe101017y0v.html
  7、重启
# service puppetmaster restart
页: [1]
查看完整版本: Puppet整合SVN(三):Puppet整合SVN