puppet filebucket命令通常用来做文件的备份、获取和还原,支持远程操作.

puppet 节点会在每次更新之前,将该节点运行的环境配置文件以md5的形式存储到/var/lib/puppet/bucket目录,里面包含了每个配置文件的内容、路径和名称,通过filebucket命令指定文件的md5值可将指定文件恢复.

puppet filebucket参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[root@puppet ~] # puppet filebucket -h
puppet-filebucket(8) -- Store and retrieve files  in  a filebucket
========
SYNOPSIS
--------
A stand-alone Puppet filebucket client.
USAGE
-----
puppet filebucket <mode> [-h|--help] [-V|--version] [-d|--debug]
   [- v |--verbose] [-l|-- local ] [-r|--remote] [-s|--server <server>]
   [-b|--bucket <directory>] < file > < file > ...
Puppet filebucket can operate  in  three modes, with only one mode per call:
backup:
   Send one or  more  files to the specified  file  bucket. Each sent  file  is
   printed with its resulting md5  sum .
get:
   Return the text associated with an md5  sum . The text is printed to
   stdout, and only one  file  can be retrieved at a  time .
restore:
   Given a  file  path and an md5  sum , store the content associated with
   the  sum  into the specified  file  path. You can specify an entirely new
   path to this argument; you are not restricted to restoring the content
   to its original location.
DESCRIPTION
-----------
This is a stand-alone filebucket client  for  sending files to a  local  or
central filebucket.
Note that  'filebucket'  defaults to using a network-based filebucket
available on the server named  'puppet' . To use this, you'll have to be
running as a user with valid Puppet certificates. Alternatively, you can
use your  local  file  bucket by specifying  '--local' .
OPTIONS
-------
Note that any setting that's valid  in  the configuration
file  is also a valid long argument. For example,  'ssldir'  is a valid
setting, so you can specify  '--ssldir <directory>'  as an
argument.
See the configuration  file  documentation at
http: //docs .puppetlabs.com /references/stable/configuration .html  for  the
full list of acceptable parameters. A commented list of all
configuration options can also be generated by running puppet with
'--genconfig' .
* --debug:     #开启debug调试模式
   Enable full debugging.
* --help:
   Print this help message
* -- local :     #使用本地的filebucket,这将使用默认配置.
   Use the  local  filebucket. This will use the default configuration
   information.
* --remote:     #使用远程的filebucket,将使用默认配置信息.
   Use a remote filebucket. This will use the default configuration
   information.
* --server:     #使用服务器发送的文件而不是局部(agent)。
   The server to send the  file  to, instead of locally.
* --verbose:
   Print extra information.
* --version:
   Print version information.
EXAMPLE
-------
     $ puppet filebucket backup  /etc/passwd
     /etc/passwd : 429b225650b912a2ee067b0a4cf1e949
     $ puppet filebucket restore  /tmp/passwd  429b225650b912a2ee067b0a4cf1e949
AUTHOR
------
Luke Kanies
COPYRIGHT
---------
Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License


示例:

#备份/etc/passwd文件.

1
2
[root@sh-web1 ~] # puppet filebucket backup /etc/passwd
/etc/passwd : 1e8d610ffbe27bf880c7d734386dbde1

#在agent端获取备份文件的内容.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@sh-web1 ~] # puppet filebucket get 1e8d610ffbe27bf880c7d734386dbde1
root:x:0:0:root: /root : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin
sync :x:5:0: sync : /sbin : /bin/sync
shutdown :x:6:0: shutdown : /sbin : /sbin/shutdown
halt:x:7:0:halt: /sbin : /sbin/halt
mail:x:8:12:mail: /var/spool/mail : /sbin/nologin
uucp:x:10:14:uucp: /var/spool/uucp : /sbin/nologin
operator:x:11:0:operator: /root : /sbin/nologin
games:x:12:100:games: /usr/games : /sbin/nologin
gopher:x:13:30:gopher: /var/gopher : /sbin/nologin
ftp :x:14:50:FTP User: /var/ftp : /sbin/nologin
nobody:x:99:99:Nobody:/: /sbin/nologin
dbus:x:81:81:System message bus:/: /sbin/nologin
vcsa:x:69:69:virtual console memory owner: /dev : /sbin/nologin
rpc:x:32:32:Rpcbind Daemon: /var/cache/rpcbind : /sbin/nologin
abrt:x:173:173:: /etc/abrt : /sbin/nologin
rpcuser:x:29:29:RPC Service User: /var/lib/nfs : /sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User: /var/lib/nfs : /sbin/nologin
haldaemon:x:68:68:HAL daemon:/: /sbin/nologin
ntp:x:38:38:: /etc/ntp : /sbin/nologin
saslauth:x:499:76: "Saslauthd user" : /var/empty/saslauth : /sbin/nologin
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
sshd:x:74:74:Privilege-separated SSH: /var/empty/sshd : /sbin/nologin
tcpdump:x:72:72::/: /sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile: /home/oprofile : /sbin/nologin
puppet:x:52:52:Puppet: /var/lib/puppet : /sbin/nologin
[root@sh-web1 ~] # cat /etc/passwd | wc -l
29


#将备份文件恢复到/tmp/passwd(支持远程备份恢复,在另一台节点恢复).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@sh-proxy2 puppet] # puppet filebucket restore /tmp/passwd 1e8d610ffbe27bf880c7d734386dbde1
[root@sh-proxy2 puppet] # cat /tmp/passwd 
root:x:0:0:root: /root : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin
sync :x:5:0: sync : /sbin : /bin/sync
shutdown :x:6:0: shutdown : /sbin : /sbin/shutdown
halt:x:7:0:halt: /sbin : /sbin/halt
mail:x:8:12:mail: /var/spool/mail : /sbin/nologin
uucp:x:10:14:uucp: /var/spool/uucp : /sbin/nologin
operator:x:11:0:operator: /root : /sbin/nologin
games:x:12:100:games: /usr/games : /sbin/nologin
gopher:x:13:30:gopher: /var/gopher : /sbin/nologin
ftp :x:14:50:FTP User: /var/ftp : /sbin/nologin
nobody:x:99:99:Nobody:/: /sbin/nologin
dbus:x:81:81:System message bus:/: /sbin/nologin
vcsa:x:69:69:virtual console memory owner: /dev : /sbin/nologin
rpc:x:32:32:Rpcbind Daemon: /var/cache/rpcbind : /sbin/nologin
abrt:x:173:173:: /etc/abrt : /sbin/nologin
rpcuser:x:29:29:RPC Service User: /var/lib/nfs : /sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User: /var/lib/nfs : /sbin/nologin
haldaemon:x:68:68:HAL daemon:/: /sbin/nologin
ntp:x:38:38:: /etc/ntp : /sbin/nologin
saslauth:x:499:76: "Saslauthd user" : /var/empty/saslauth : /sbin/nologin
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
sshd:x:74:74:Privilege-separated SSH: /var/empty/sshd : /sbin/nologin
tcpdump:x:72:72::/: /sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile: /home/oprofile : /sbin/nologin
puppet:x:52:52:Puppet: /var/lib/puppet : /sbin/nologin
[root@sh-proxy2 puppet] # cat /tmp/passwd | wc -l
29

扩展命令:puppet file 不常用.

在sh-proxy2 agent端通过md5方式下载sh-web1 agent的备份文件.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@sh-proxy2 puppet] # puppet file download {md5}1e8d610ffbe27bf880c7d734386dbde1
Notice: Saved {md5}1e8d610ffbe27bf880c7d734386dbde1 to filebucket
[root@sh-proxy2 bucket] # tree 
.
└── 1
     └── e
         └── 8
             └── d
                 └── 6
                     └── 1
                         └── 0
                             └── f
                                 └── 1e8d610ffbe27bf880c7d734386dbde1
                                     ├── contents
                                     └── paths
9 directories, 2 files

默认备份路径:

1
2
[root@sh-proxy2 bucket] # pwd
/var/lib/puppet/bucket