环境说明:

OS :    CentOS5.4                         i686
puppet版本:                               2.7.14
puppetmaster.manzuoinfo.com            192.168.0.12
puppet1.manzuoinfo.com                 192.168.0.64
rsync server                           192.168.0.12

同步需求简介:

需要把 rsync server 192.168.0.12 上的 /tmp/default 和  /tmp/test 目录 分别同步到 puppet1.manzuinfo.com 192.168.0.12 上的 /tmp/test1 下和/tmp/test。

点击(此处)折叠或打开

  1. [root@puppetmaster test]# cd /tmp/
  2. [root@puppetmaster tmp]# ls
  3. default test
  4. [root@puppetmaster tmp]# cd test
  5. /tmp/test
  6. [root@puppetmaster test]# ls -l
  7. total 4
  8. -rw-r--r-- 1 root root 0 Sep 22 17:32 10.txt
  9. -rw-r--r-- 1 root root 0 Sep 22 17:32 1.txt
  10. -rw-r--r-- 1 root root 0 Sep 22 17:32 2.txt
  11. -rw-r--r-- 1 root root 0 Sep 22 17:32 3.txt
  12. -rw-r--r-- 1 root root 0 Sep 22 17:32 4.txt
  13. -rw-r--r-- 1 root root 0 Sep 22 17:32 5.txt
  14. -rw-r--r-- 1 root root 0 Sep 22 17:32 6.txt
  15. -rw-r--r-- 1 root root 0 Sep 22 17:32 7.txt
  16. -rw-r--r-- 1 root root 0 Sep 22 17:32 8.txt
  17. -rw-r--r-- 1 root root 0 Sep 22 17:32 9.txt
  18. -rw-r--r-- 1 root root 17 Sep 22 17:32 test.txt
  19. [root@puppetmaster default]# pwd
  20. /tmp/default
  21. [root@puppetmaster default]# ls
  22. de.txt

一、下载安装rsync 模块

puppet 的rsync 模块在GitHub位置 https://github.com/onyxpoint/pupmod-rsync ,大家可以上去查看。

点击(此处)折叠或打开

  1. [root@puppetmaster ~]# cd /etc/puppet/modules/
  2. [root@puppetmaster modules]# git clone https://github.com/onyxpoint/pupmod-concat && mv pupmod-concat concat
  3. [root@puppetmaster modules]# git clone https://github.com/onyxpoint/pupmod-rsync && mv pupmod-rsync rsync

说明:我这里是使用git,如果机器没有安装,可以使用yum -y install git 来安装,如不想安装git可以下载zip压缩包.解压到相应目录.
注意:在server, clent 端都下载安装concat 和rsync 模块。

二、服务端配置文件

1). 新建node.pp

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# pwd
  2. /etc/puppet/manifests
  3. [root@puppetmaster manifests]# cat node.pp
  4. node 'puppetmaster.manzuoinfo.com' {
  5. include 'rsync::server'
  6. rsync::server::global { 'global':
  7. address => '192.168.0.12'
  8. }
  9. rsync::server::section { 'default':
  10. comment => 'The default file path',
  11. path => '/tmp/default',
  12. hosts_allow => '192.168.0.64'
  13. }
  14. rsync::server::section { 'test':
  15. # auth_users => 'testuser',
  16. comment => 'Test comment',
  17. path => '/tmp/test',
  18. hosts_allow => '192.168.0.64',
  19. outgoing_chmod => 'o-w'
  20. }
  21. }
  22. node 'puppet1.manzuoinfo.com' {
  23. include 'rsync'
  24. }

2). 新建modules.pp 载入rsync 模块

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# pwd
  2. /etc/puppet/manifests
  3. [root@puppetmaster manifests]# cat modules.pp
  4. import "rsync"

3). 把 node.pp modules.pp 包进site.pp

点击(此处)折叠或打开

  1. [root@puppetmaster test]# cat /etc/puppet/manifests/site.pp
  2. import 'node.pp'
  3. import 'modules.pp'

4). 测试配置文件

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# puppet agent --server=puppetmaster.manzuoinfo.com --test -v
  2. info: Caching catalog for puppetmaster.manzuoinfo.com
  3. info: /Stage[main]/Rsync/Tidy[/etc/rsync]: File does not exist
  4. info: Applying configuration version '1379830750'
  5. notice: /Stage[main]/Rsync/File[/etc/rsync]/ensure: created
  6. notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[default]/Concat_fragment[rsync+default.section]/content: content changed '' to '[default]
  7. comment = The default file path
  8. path = /home/sky
  9. use chroot = false
  10. max connections = 0
  11. max verbosity = 1
  12. lock file = /var/run/rsyncd.lock
  13. read only = true
  14. write only = false
  15. list = false
  16. uid = root
  17. gid = root
  18. outgoing chmod = o-w
  19. ignore nonreadable = true
  20. transfer logging = true
  21. log format = "%o %h [%a] %m (%u) %f %l"
  22. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  23. hosts allow = 192.168.0.64
  24. hosts deny = *
  25. '
  26. notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Global[global]/Concat_fragment[rsync+global]/content: content changed '' to 'pid file = /var/run/rsyncd.pid
  27. syslog facility = daemon
  28. port = 873
  29. address = 192.168.0.12
  30. '
  31. notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[test]/Concat_fragment[rsync+test.section]/content: content changed '' to '[test]
  32. comment = Test comment
  33. path = /home/skywu
  34. use chroot = false
  35. max connections = 0
  36. max verbosity = 1
  37. lock file = /var/run/rsyncd.lock
  38. read only = true
  39. write only = false
  40. list = false
  41. uid = root
  42. gid = root
  43. outgoing chmod = o-w
  44. ignore nonreadable = true
  45. transfer logging = true
  46. log format = "%o %h [%a] %m (%u) %f %l"
  47. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  48. hosts allow = 192.168.0.64
  49. hosts deny = *
  50. '
  51. notice: /Stage[main]/Rsync::Server/Concat_build[rsync]/target: global*.section used for ordering
  52. notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/mode: mode changed '0644' to '0400'
  53. notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/content: audit change: newly-recorded value {md5}2148062cf8d2f7220279fd0ca07b9329
  54. info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
  55. notice: /Stage[main]/Rsync::Server/Service[rsync]/ensure: ensure changed 'stopped' to 'running'
  56. err: /Stage[main]/Rsync::Server/Service[rsync]: Failed to call refresh: Could not stop Service[rsync]: Execution of '/bin/kill `cat \`grep "pid file" /etc/rsyncd.conf | cut -f4 -d' '\``' returned 1: at /etc/puppet/modules/rsync/manifests/server.pp:56
  57. info: Creating state file /var/lib/puppet/state/state.yaml
  58. notice: Finished catalog run in 2.70 seconds
  59. [root@puppetmaster manifests]#

注意:err: 这里出现了一个错误,请根据自己的情况来修改停止rsync,例如:
    stop => "ps -ef | grep [r]sync |awk '{print $2}'|xargs kill -9",

5). 在server 端生成rsync配置

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# puppetd --test --server puppetmaster.manzuoinfo.com
  2. info: Caching catalog for puppetmaster.manzuoinfo.com
  3. notice: /Stage[main]/Rsync/Tidy[/etc/rsync]: Tidying File[/etc/rsync]
  4. info: /File[/etc/rsync]: Duplicate generated resource; skipping
  5. info: Applying configuration version '1379837152'
  6. notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[default]/Concat_fragment[rsync+default.section]/content: content changed '[default]
  7. comment = The default file path
  8. path = /home/sky
  9. use chroot = false
  10. max connections = 0
  11. max verbosity = 1
  12. lock file = /var/run/rsyncd.lock
  13. read only = true
  14. write only = false
  15. list = false
  16. uid = root
  17. gid = root
  18. outgoing chmod = o-w
  19. ignore nonreadable = true
  20. transfer logging = true
  21. log format = "%o %h [%a] %m (%u) %f %l"
  22. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  23. hosts allow = 192.168.0.64
  24. hosts deny = *
  25. ' to '[default]
  26. comment = The default file path
  27. path = /tmp/default
  28. use chroot = false
  29. max connections = 0
  30. max verbosity = 1
  31. lock file = /var/run/rsyncd.lock
  32. read only = true
  33. write only = false
  34. list = false
  35. uid = root
  36. gid = root
  37. outgoing chmod = o-w
  38. ignore nonreadable = true
  39. transfer logging = true
  40. log format = "%o %h [%a] %m (%u) %f %l"
  41. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  42. hosts allow = 192.168.0.64
  43. hosts deny = *
  44. '
  45. notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[test]/Concat_fragment[rsync+test.section]/content: content changed '[test]
  46. comment = Test comment
  47. path = /home/skywu
  48. use chroot = false
  49. max connections = 0
  50. max verbosity = 1
  51. lock file = /var/run/rsyncd.lock
  52. read only = true
  53. write only = false
  54. list = false
  55. uid = root
  56. gid = root
  57. outgoing chmod = o-w
  58. ignore nonreadable = true
  59. transfer logging = true
  60. log format = "%o %h [%a] %m (%u) %f %l"
  61. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  62. hosts allow = 192.168.0.64
  63. hosts deny = *
  64. ' to '[test]
  65. comment = Test comment
  66. path = /tmp/test
  67. use chroot = false
  68. max connections = 0
  69. max verbosity = 1
  70. lock file = /var/run/rsyncd.lock
  71. read only = true
  72. write only = false
  73. list = false
  74. uid = root
  75. gid = root
  76. outgoing chmod = o-w
  77. ignore nonreadable = true
  78. transfer logging = true
  79. log format = "%o %h [%a] %m (%u) %f %l"
  80. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  81. hosts allow = 192.168.0.64
  82. hosts deny = *
  83. '
  84. notice: /Stage[main]/Rsync::Server/Concat_build[rsync]/target: global*.section used for ordering
  85. notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/mode: mode changed '0644' to '0400'
  86. notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/content: audit change: previously recorded value {md5}2148062cf8d2f7220279fd0ca07b9329 has been changed to {md5}8063eb4c3129b055fb0106eb2cfd7912
  87. info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
  88. info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
  89. notice: /Stage[main]/Rsync::Server/Service[rsync]/ensure: ensure changed 'stopped' to 'running'
  90. notice: /Stage[main]/Rsync::Server/Service[rsync]: Triggered 'refresh' from 2 events
  91. notice: Finished catalog run in 3.66 seconds

注意:/etc/rsyncd.conf 是生成的,而不是手动创建的。

内容如下:

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# cat /etc/rsyncd.conf
  2. pid file = /var/run/rsyncd.pid
  3. syslog facility = daemon
  4. port = 873
  5. address = 192.168.0.12
  6. [default]
  7. comment = The default file path
  8. path = /tmp/default
  9. use chroot = false
  10. max connections = 0
  11. max verbosity = 1
  12. lock file = /var/run/rsyncd.lock
  13. read only = true
  14. write only = false
  15. list = false
  16. uid = root
  17. gid = root
  18. outgoing chmod = o-w
  19. ignore nonreadable = true
  20. transfer logging = true
  21. log format = "%o %h [%a] %m (%u) %f %l"
  22. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  23. hosts allow = 192.168.0.64
  24. hosts deny = *
  25. [test]
  26. comment = Test comment
  27. path = /tmp/test
  28. use chroot = false
  29. max connections = 0
  30. max verbosity = 1
  31. lock file = /var/run/rsyncd.lock
  32. read only = true
  33. write only = false
  34. list = false
  35. uid = root
  36. gid = root
  37. outgoing chmod = o-w
  38. ignore nonreadable = true
  39. transfer logging = true
  40. log format = "%o %h [%a] %m (%u) %f %l"
  41. dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
  42. hosts allow = 192.168.0.64
  43. hosts deny = *
  44. [root@puppetmaster manifests]#

6). 启动rsync 服务

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# /etc/init.d/xinetd restart
  2. Stopping xinetd: [ OK ]
  3. Starting xinetd: [ OK ]
  4. [root@puppetmaster manifests]# ps -ef | grep rsync
  5. root 13227 1 0 16:16 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
  6. root 13266 3142 0 16:19 pts/0 00:00:00 grep rsync

7). 客户端需要执行rsync类中,我们编辑puppetmaster上的代码文件,添加default 和test。

点击(此处)折叠或打开

  1. [root@puppetmaster manifests]# vim /etc/puppet/modules/rsync/manifests/init.pp
  2. class rsync {
  3. package { "rsync": ensure => "latest" }
  4. # This define provides a useful abstraction for common rsync client side
  5. # activities.
  6. exec { "rsync_stub":
  7. command => "/bin/true",
  8. refreshonly => true
  9. }
  10. file { '/etc/rsync':
  11. ensure => 'directory',
  12. owner => 'root',
  13. group => 'root',
  14. mode => '750'
  15. }
  16. tidy { '/etc/rsync':
  17. size => "0b",
  18. recurse => 'true',
  19. rmdirs => 'true'
  20. }
  21. rsync { 'default':
  22. source => 'default',
  23. target => '/tmp/test1',
  24. server => '192.168.0.12'
  25. }
  26. rsync { 'test':
  27. source => 'test',
  28. target => '/tmp/test',
  29. server => '192.168.0.12'
  30. }
  31. }

三、puppet1 客户端测试

点击(此处)折叠或打开

  1. [root@puppet1 tmp]# puppetd --test --server puppetmaster.manzuoinfo.com
  2. info: Caching catalog for puppet1.manzuoinfo.com
  3. notice: /Stage[main]/Rsync/Tidy[/etc/rsync]: Tidying File[/etc/rsync]
  4. info: /File[/etc/rsync]: Duplicate generated resource; skipping
  5. info: Applying configuration version '1379841152'
  6. notice: /Stage[main]/Rsync/Rsync[test]/do: executed successfully
  7. notice: Finished catalog run in 0.75 seconds
  8. 或者用命令:
  9. [root@puppet1 tmp]# puppet agent --test --server puppetmaster.manzuoinfo.com

点击(此处)折叠或打开

  1. [root@puppet1 test1]# pwd
  2. /tmp/test1
  3. [root@puppet1 test1]# ls
  4. de.txt
  5. [root@puppet1 test]# pwd
  6. /tmp/test
  7. [root@puppet1 test]# ls -l
  8. total 4
  9. -rw-r--r-- 1 root root 0 Sep 23 11:42 10.txt
  10. -rw-r--r-- 1 root root 0 Sep 23 11:42 1.txt
  11. -rw-r--r-- 1 root root 0 Sep 23 11:42 2.txt
  12. -rw-r--r-- 1 root root 0 Sep 23 11:42 3.txt
  13. -rw-r--r-- 1 root root 0 Sep 23 11:42 4.txt
  14. -rw-r--r-- 1 root root 0 Sep 23 11:42 5.txt
  15. -rw-r--r-- 1 root root 0 Sep 23 11:42 6.txt
  16. -rw-r--r-- 1 root root 0 Sep 23 11:42 7.txt
  17. -rw-r--r-- 1 root root 0 Sep 23 11:42 8.txt
  18. -rw-r--r-- 1 root root 0 Sep 23 11:42 9.txt
  19. -rw-r--r-- 1 root root 17 Sep 23 11:42 test.txt

在客户端查看/tmp/test 和 /tmp/test1 目录及文件已经同步过来了。

参考文档:http://www.mysqlops.com/2012/02/20/puppet-rsync.html

puppet使用rsync模块的更多相关文章

  1. puppet使用rsync模块同步目录和文件

    puppet使用rsync模块同步目录和文件 2013-09-23 14:28:57 分类: LINUX 环境说明: OS :    CentOS5.4                         ...

  2. Puppet主机、模块、类、资源、变量、参数、标签命名规范

    Puppet命名规范: 约定说明: 小写字母:"a-z" 大写字母:"A-Z" 数字: "0-9" 句号: "." 下划 ...

  3. puppet工作原理之模块使用

    一.模块介绍 1.什么是模块 通常情况把manifest文件分解成易于理解得结构,例如类文件,配置文件分类存放,并通过某种机制整合使用,这种机制就是模块,有助于结构化.层次化的方式使用puppet,p ...

  4. 自动化运维工具之Puppet模块

    前文我们了解来puppet的变量.流程控制.正则表达式.类和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14079208.html:今天我们来 ...

  5. Puppet

    一个完整的自动化运维包括系统安装.配置管理.服务监控三个方面.那今天咱们大家一起来学习一下Puppet实际运维中的案例.仅供参考,欢迎大家提更多的意见! 一.应用背景 某公司新到500台服务器,需要安 ...

  6. Puppet的搭建和应用

    Puppet的部署与应用 1. 案例概述 作为一名系统管理员,维护服务器正常运行是最基本的职责,在管理几台到几十台服务器时,大部分管理员喜欢自己写小工具来维护,但随着服务器的数量曾多,任务量也逐渐增多 ...

  7. puppet自动化运维

    Puppet实现自动化运维 一.案例分析 1.案例概述: 随着服务器数量的增多,系统管理员任务量也逐渐增加,这时就需要简洁的.强大的框架来完成系统管理任务为实现这一目的,我们将引入一批工具,这批工具是 ...

  8. Puppet全面详解

    1.  概述 puppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署,如google利用p ...

  9. 运维自动化工具---Puppet

    案例环境:-----------------------------------------------------------------主机  操作系统   IP地址  主要软件--------- ...

随机推荐

  1. 记一次 Vue 组件内存泄漏的坑

    概述 最近在开发 Vue 项目的时候遇到了内存泄漏问题,记录下来,供以后开发时参考,相信对其他人也有用. 背景 背景是需要用 three.min.js 和 vanta.net.min.js 给首页加上 ...

  2. python学习笔记:(六)str(字符串)常用方法

    注意点: 1.字符串是不可变的: 2.%格式化操作符:左侧放置字符串,右侧放置希望被格式化的值. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应 ...

  3. Selenium学习之==>Css Selector使用方法

    一.什么是Css Selector Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器后,下载插件,FireFinder ...

  4. scala加载spark MLlib等所有相关jar的问题

    1.找到spark安装目录 E:\spackLearn\spark-2.3.3-bin-hadoop2.7\jars 里面放的是spark的所有依赖jar包 2.从idea里面javalib导入即可调 ...

  5. HTTPS测试

    1.首先理解HTTPS的含义,清楚http与HTTPS的区别 2.相对于http而言,https更加安全,因 3.使用数字证书使传输更安全,数字证书使用keytool工具生成 测试准备: 创建公钥和秘 ...

  6. spring -boot定时任务 quartz 基于 JobDetailFactoryBean实现

    这个有点小问题 尚未解决  后期优化 基于 JobDetailFactoryBean实现 依赖包 <dependencies> <dependency> <groupId ...

  7. centos6.9 安装mysql8

    centos6.9 安装 mysql8 # 安装mysql8 1.下载https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.16-2.el6.x86 ...

  8. P2010回文日期

    这道题是2016年普及组的题,难度等级为普及-. 这道题仍然是个模拟题.有两种策略:1.枚举回文,看日期是否存在2.枚举日期,看是否是回文.显然,前者要快很多,并且准确.本蒟蒻第一次便使用了后者,bu ...

  9. React事件绑定的几种方式对比

    React事件绑定 由于类的方法默认不会绑定this,因此在调用的时候如果忘记绑定,this的值将会是undefined.通常如果不是直接调用,应该为方法绑定this.绑定方式有以下几种: 1. 在构 ...

  10. PHP 中一个 False 引发的问题,差点让公司损失一百万

    PHP 中一个 False 引发的问题,差点让公司损失一百万 一.场景描述 上周我一个在金融公司的同学,他在线上写一个 Bug,差点造成公司损失百万.幸好他及时发现了这个问题并修复了.这是一个由 PH ...