puppet使用rsync模块同步目录和文件
分类: LINUX
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。
点击(此处)折叠或打开
- [root@puppetmaster test]# cd /tmp/
- [root@puppetmaster tmp]# ls
- default test
- [root@puppetmaster tmp]# cd test
- /tmp/test
- [root@puppetmaster test]# ls -l
- total 4
- -rw-r--r-- 1 root root 0 Sep 22 17:32 10.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 1.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 2.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 3.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 4.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 5.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 6.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 7.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 8.txt
- -rw-r--r-- 1 root root 0 Sep 22 17:32 9.txt
- -rw-r--r-- 1 root root 17 Sep 22 17:32 test.txt
- [root@puppetmaster default]# pwd
- /tmp/default
- [root@puppetmaster default]# ls
- de.txt
一、下载安装rsync 模块
puppet 的rsync 模块在GitHub位置 https://github.com/onyxpoint/pupmod-rsync ,大家可以上去查看。
点击(此处)折叠或打开
- [root@puppetmaster ~]# cd /etc/puppet/modules/
- [root@puppetmaster modules]# git clone https://github.com/onyxpoint/pupmod-concat && mv pupmod-concat concat
- [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
点击(此处)折叠或打开
- [root@puppetmaster manifests]# pwd
- /etc/puppet/manifests
- [root@puppetmaster manifests]# cat node.pp
- node 'puppetmaster.manzuoinfo.com' {
- include 'rsync::server'
- rsync::server::global { 'global':
- address => '192.168.0.12'
- }
- rsync::server::section { 'default':
- comment => 'The default file path',
- path => '/tmp/default',
- hosts_allow => '192.168.0.64'
- }
- rsync::server::section { 'test':
- # auth_users => 'testuser',
- comment => 'Test comment',
- path => '/tmp/test',
- hosts_allow => '192.168.0.64',
- outgoing_chmod => 'o-w'
- }
- }
- node 'puppet1.manzuoinfo.com' {
- include 'rsync'
- }
2). 新建modules.pp 载入rsync 模块
点击(此处)折叠或打开
- [root@puppetmaster manifests]# pwd
- /etc/puppet/manifests
- [root@puppetmaster manifests]# cat modules.pp
- import "rsync"
3). 把 node.pp modules.pp 包进site.pp
点击(此处)折叠或打开
- [root@puppetmaster test]# cat /etc/puppet/manifests/site.pp
- import 'node.pp'
- import 'modules.pp'
4). 测试配置文件
点击(此处)折叠或打开
- [root@puppetmaster manifests]# puppet agent --server=puppetmaster.manzuoinfo.com --test -v
- info: Caching catalog for puppetmaster.manzuoinfo.com
- info: /Stage[main]/Rsync/Tidy[/etc/rsync]: File does not exist
- info: Applying configuration version '1379830750'
- notice: /Stage[main]/Rsync/File[/etc/rsync]/ensure: created
- notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[default]/Concat_fragment[rsync+default.section]/content: content changed '' to '[default]
- comment = The default file path
- path = /home/sky
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- '
- 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
- syslog facility = daemon
- port = 873
- address = 192.168.0.12
- '
- notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[test]/Concat_fragment[rsync+test.section]/content: content changed '' to '[test]
- comment = Test comment
- path = /home/skywu
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- '
- notice: /Stage[main]/Rsync::Server/Concat_build[rsync]/target: global*.section used for ordering
- notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/mode: mode changed '0644' to '0400'
- notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/content: audit change: newly-recorded value {md5}2148062cf8d2f7220279fd0ca07b9329
- info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
- notice: /Stage[main]/Rsync::Server/Service[rsync]/ensure: ensure changed 'stopped' to 'running'
- 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
- info: Creating state file /var/lib/puppet/state/state.yaml
- notice: Finished catalog run in 2.70 seconds
- [root@puppetmaster manifests]#
注意:err: 这里出现了一个错误,请根据自己的情况来修改停止rsync,例如:
stop => "ps -ef | grep [r]sync |awk '{print $2}'|xargs kill -9",
5). 在server 端生成rsync配置
点击(此处)折叠或打开
- [root@puppetmaster manifests]# puppetd --test --server puppetmaster.manzuoinfo.com
- info: Caching catalog for puppetmaster.manzuoinfo.com
- notice: /Stage[main]/Rsync/Tidy[/etc/rsync]: Tidying File[/etc/rsync]
- info: /File[/etc/rsync]: Duplicate generated resource; skipping
- info: Applying configuration version '1379837152'
- notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[default]/Concat_fragment[rsync+default.section]/content: content changed '[default]
- comment = The default file path
- path = /home/sky
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- ' to '[default]
- comment = The default file path
- path = /tmp/default
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- '
- notice: /Stage[main]//Node[puppetmaster.manzuoinfo.com]/Rsync::Server::Section[test]/Concat_fragment[rsync+test.section]/content: content changed '[test]
- comment = Test comment
- path = /home/skywu
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- ' to '[test]
- comment = Test comment
- path = /tmp/test
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- '
- notice: /Stage[main]/Rsync::Server/Concat_build[rsync]/target: global*.section used for ordering
- notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/mode: mode changed '0644' to '0400'
- notice: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]/content: audit change: previously recorded value {md5}2148062cf8d2f7220279fd0ca07b9329 has been changed to {md5}8063eb4c3129b055fb0106eb2cfd7912
- info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
- info: /Stage[main]/Rsync::Server/File[/etc/rsyncd.conf]: Scheduling refresh of Service[rsync]
- notice: /Stage[main]/Rsync::Server/Service[rsync]/ensure: ensure changed 'stopped' to 'running'
- notice: /Stage[main]/Rsync::Server/Service[rsync]: Triggered 'refresh' from 2 events
- notice: Finished catalog run in 3.66 seconds
注意:/etc/rsyncd.conf 是生成的,而不是手动创建的。
内容如下:
点击(此处)折叠或打开
- [root@puppetmaster manifests]# cat /etc/rsyncd.conf
- pid file = /var/run/rsyncd.pid
- syslog facility = daemon
- port = 873
- address = 192.168.0.12
- [default]
- comment = The default file path
- path = /tmp/default
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- [test]
- comment = Test comment
- path = /tmp/test
- use chroot = false
- max connections = 0
- max verbosity = 1
- lock file = /var/run/rsyncd.lock
- read only = true
- write only = false
- list = false
- uid = root
- gid = root
- outgoing chmod = o-w
- ignore nonreadable = true
- transfer logging = true
- log format = "%o %h [%a] %m (%u) %f %l"
- dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.jar *.pdf *.sar *.war
- hosts allow = 192.168.0.64
- hosts deny = *
- [root@puppetmaster manifests]#
6). 启动rsync 服务
点击(此处)折叠或打开
- [root@puppetmaster manifests]# /etc/init.d/xinetd restart
- Stopping xinetd: [ OK ]
- Starting xinetd: [ OK ]
- [root@puppetmaster manifests]# ps -ef | grep rsync
- root 13227 1 0 16:16 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
- root 13266 3142 0 16:19 pts/0 00:00:00 grep rsync
7). 客户端需要执行rsync类中,我们编辑puppetmaster上的代码文件,添加default 和test。
点击(此处)折叠或打开
- [root@puppetmaster manifests]# vim /etc/puppet/modules/rsync/manifests/init.pp
- class rsync {
- package { "rsync": ensure => "latest" }
- # This define provides a useful abstraction for common rsync client side
- # activities.
- exec { "rsync_stub":
- command => "/bin/true",
- refreshonly => true
- }
- file { '/etc/rsync':
- ensure => 'directory',
- owner => 'root',
- group => 'root',
- mode => '750'
- }
- tidy { '/etc/rsync':
- size => "0b",
- recurse => 'true',
- rmdirs => 'true'
- }
- rsync { 'default':
- source => 'default',
- target => '/tmp/test1',
- server => '192.168.0.12'
- }
- rsync { 'test':
- source => 'test',
- target => '/tmp/test',
- server => '192.168.0.12'
- }
- }
三、puppet1 客户端测试
点击(此处)折叠或打开
- [root@puppet1 tmp]# puppetd --test --server puppetmaster.manzuoinfo.com
- info: Caching catalog for puppet1.manzuoinfo.com
- notice: /Stage[main]/Rsync/Tidy[/etc/rsync]: Tidying File[/etc/rsync]
- info: /File[/etc/rsync]: Duplicate generated resource; skipping
- info: Applying configuration version '1379841152'
- notice: /Stage[main]/Rsync/Rsync[test]/do: executed successfully
- notice: Finished catalog run in 0.75 seconds
- 或者用命令:
- [root@puppet1 tmp]# puppet agent --test --server puppetmaster.manzuoinfo.com
点击(此处)折叠或打开
- [root@puppet1 test1]# pwd
- /tmp/test1
- [root@puppet1 test1]# ls
- de.txt
- [root@puppet1 test]# pwd
- /tmp/test
- [root@puppet1 test]# ls -l
- total 4
- -rw-r--r-- 1 root root 0 Sep 23 11:42 10.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 1.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 2.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 3.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 4.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 5.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 6.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 7.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 8.txt
- -rw-r--r-- 1 root root 0 Sep 23 11:42 9.txt
- -rw-r--r-- 1 root root 17 Sep 23 11:42 test.txt
在客户端查看/tmp/test 和 /tmp/test1 目录及文件已经同步过来了。
puppet使用rsync模块同步目录和文件的更多相关文章
- puppet使用rsync模块
puppet使用rsync模块同步目录和文件 环境说明: OS : CentOS5.4 i686puppet版本: ...
- rsync 排除指定目录或文件进行同步
很常见的情况:我想同步/myweb下的 一些php文件 , 但是不想复制/myweb/log/里边的一些日志文件,因为这些文件太大了,备份也是没有意义的. 现在如果想避开某个路径 直接添加—exc ...
- 使用rsync, 向另外一台服务器同步目录和文件的脚本
#!/bin/bash #亚特兰蒂斯-同步目录#定时任务ini_file="/usr/local/sunlight/conf/rsync-file.ini"target_ip=&q ...
- Linux同步目录 保留文件修改时间和权限 rsync
scp copy文件夹的时候,会强行覆盖文件,导致增量同步的时候不方便,而rsync则能很好解决这个问题. rsync -avz ubuntu@192.168.1.208:/home/ubuntu/m ...
- 记一次rsync增量同步远程服务器文件
rsync remote shell 增量方式同步数据 rsync同步文件有两种方式,一种是daemon的方式(rsync daemon)另一种方式是通过远程shell方式(rsync remote ...
- rsync用于同步目录
rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输.rsync中一项与其他大部分类似程序或协定中所未见的重要特性是 ...
- 类unix系统同步目录,却不同步目录中文件
rsync -av --del -f '+ */' -f '- *' src/ dst/;用此条命令即可同步同主机间不同目录到一个位置,或是同步道不同主机同位置. 或是用以下命令: ssh 10.18 ...
- Python shutil模块(目录和文件操作)
import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, le ...
- Linux实战教学笔记21:Rsync数据同步工具
第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...
随机推荐
- caoz的梦呓:创业公司如何做好信息安全
猫宁!!! 参考链接:https://mp.weixin.qq.com/s/gCWjzHBRfbPFhNeg2VtFhA https://mp.weixin.qq.com/s/bmifCmD2CHV1 ...
- 'Python.exe' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
说明python不能被调用,需要为他制定正确的路径.0=0(win10想要打开任何东西,左下角搜索框) 1.打开 python,输入import os 输入os.getcwd,得到路径. 2.打开 编 ...
- NOIp2018D1T2 货币系统【分析&完全背包】
题目传送门 看到题目瞬间想起某凯的疑惑,感觉不会做....然后观察样例可以知道,去掉原来货币系统中能够被其他币值凑出来的数就是答案(样例分析法),然后就完事了(huaji). 简单理解一下吧: 首先, ...
- nginx文件路径配置(root|alias)
nginx指定文件路径主要有两种方式:root|alias. 那么他们究竟有什么区别呢? 指令的使用方法和作用域: [root] 语法:root path 默认值:root html 配置段:http ...
- 【NOIP2017】跳房子
这题我0分. 比赛时,我一眼出正解,哈哈,太水了! 这题不就是一个二分+DP+单调队列吗? 然而,细节决定成败. 我错了许多细节,就挂了. 我只考了0分... 首先,这题满足一个条件: 保证g变大后, ...
- bfs(太空电梯)
http://oj.jxust.edu.cn/contest/problem?id=1563&pid=4 题目描述 公元9012年,Q博士发明了一部太空电梯,与一般电梯不同,太空电梯不能直接到 ...
- C++练习 | 单向链表类模板(包含类模板中静态变量初始化格式)
#include <iostream> #include <string> using namespace std; template <class T> clas ...
- 从入门到自闭之Python序列化
序列化(背) json :将数据类型转换成字符串(序列化),将字符串装换成原数据类型(反序列),支持dict,list,tuple等,序列后都变成了列表 dumps,loads ------ 用于网络 ...
- spark教程(14)-共享变量
spark 使用的架构是无共享的,数据分布在不同节点,每个节点有独立的 CPU.内存,不存在全局的内存使得变量能够共享,驱动程序和任务之间通过消息共享数据 举例来说,如果一个 RDD 操作使用了驱动程 ...
- Python 并发网络库
Python 并发网络库 Tornado VS Gevent VS Asyncio Tornado:并发网络库,同时也是一个 web 微框架 Gevent:绿色线程(greenlet)实现并发,猴子补 ...