Commit b8a7ea9e59bb661876a5f7d9637d6595aadcb6ae

Authored by Earth Ugat
1 parent d006aa8f

Version v0.4.0

  1 +## 0.4.0 - 2016-12-13
  2 +### Added
  3 +- AWS bucket and region can now be specified per element of the attribute `node['backup-file2s3']['backups']`. If not specified, bucket and region will default to the global node attributes `node['backup-file2s3']['bucket']` and `node['backup-file2s3']['region']`, respectively.
  4 +
  5 +### Fixed
  6 +- Fixed a logic bug when trying to determine if at least one enabled path specification is encrypted or not.
  7 +
1 8 ## 0.3.3 - 2016-11-29
2 9 ### Fixed
3 10 - A typo in the backup script (missing end quotes).
... ...
... ... @@ -22,14 +22,14 @@ Ubuntu 14.04
22 22 <tr>
23 23 <td><tt>['backup-file2s3']['bucket']</tt></td>
24 24 <td>String</td>
25   - <td>The S3 bucket where backup tarballs will be stored.</td>
  25 + <td>The default S3 bucket where backup tarballs will be stored.</td>
26 26 <td><tt>nil</tt></td>
27 27 </tr>
28 28 <tr>
29 29 <td><tt>['backup-file2s3']['region']</tt></td>
30 30 <td>String</td>
31   - <td>AWS region of the bucket.</td>
32   - <td><tt>'us-east-1'</tt></td>
  31 + <td>Default AWS region.</td>
  32 + <td><tt>nil</tt></td>
33 33 </tr>
34 34 <tr>
35 35 <td><tt>['backup-file2s3']['backups']</tt></td>
... ... @@ -40,7 +40,7 @@ Ubuntu 14.04
40 40 <tr>
41 41 <td><tt>['backup-file2s3']['cron']['sched']</tt></td>
42 42 <td>String</td>
43   - <td>Crontab syntax for scheduling how often the backup script will run.</td>
  43 + <td>Crontab syntax for scheduling how often the backup script/s will run.</td>
44 44 <td><tt>'0 0 * * *'</tt></td>
45 45 </tr>
46 46 <tr>
... ...
... ... @@ -18,8 +18,10 @@
18 18 # limitations under the License.
19 19 #
20 20
21   -default['backup-file2s3']['bucket'] = 'bucketname'
22   -default['backup-file2s3']['region'] = 'us-east-1'
  21 +# Defaults if bucket and region are not included in the specifications
  22 +# for 'backups' or when using the 'aws_tar_extract' definition.
  23 +default['backup-file2s3']['bucket'] = nil
  24 +default['backup-file2s3']['region'] = nil
23 25
24 26 # Contains hashes with details of file/directories to be backed up to S3.
25 27 default['backup-file2s3']['backups'] = [
... ... @@ -27,6 +29,8 @@ default['backup-file2s3']['backups'] = [
27 29 # :script_name => 'default', # default: 'default', but only
28 30 # # one default can exist at a time
29 31 # :enable => true # default: true
  32 +# :bucket => nil, # default: node attribute
  33 +# :region => nil, # default: node attribute
30 34 # :paths => [
31 35 # {
32 36 # :path => '/my/dir',
... ...
... ... @@ -21,11 +21,11 @@
21 21 # Gets a tarball from AWS S3, then unpack it into a directory.
22 22 # Parameters:
23 23 # :name | :file => The name of the backup tarball, without the extension
24   -# :region => AWS region
25   -# :bucket => AWS bucket
26 24 # :target_dir => Where the tarball is to be unpacked. If not
27 25 # exists, it will be created
28 26 # :creates => A file path used for idempotency
  27 +# :region => (Optional) AWS region. Defaults to node attribute.
  28 +# :bucket => (Optional) AWS bucket. Defaults to node attribute.
29 29 # :encrypted => (Optional) Boolean. Whether backup files are encrypted.
30 30 # :priv_key => (Optional) String. Contents of private key, if used.
31 31
... ...
... ... @@ -4,7 +4,7 @@ maintainer_email 'sysadmin@chromedia.com'
4 4 license 'Apache License'
5 5 description 'Creates a script to backup directories into an S3 bucket.'
6 6 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
7   -version '0.3.3'
  7 +version '0.4.0'
8 8
9 9 depends 'awscli', '~> 1.0.1'
10 10 depends 'cron', '~> 1.7.4'
... ...
... ... @@ -28,8 +28,13 @@ directory attribs['script_dir'] { recursive true }
28 28 directory attribs['log_dir'] { recursive true }
29 29
30 30 is_any_enc = attribs['backups'].any? do |back|
31   - back[:paths].any? do |path|
32   - path[:bak_encrypted]
  31 + enable = back.has_key?(:enable) ? back[:enable] : true
  32 + if enable
  33 + back[:paths].any? do |path|
  34 + path[:bak_encrypted]
  35 + end
  36 + else
  37 + false
33 38 end
34 39 end
35 40 if !attribs['encrypt']['pub_key'] && is_any_enc
... ... @@ -37,12 +42,12 @@ if !attribs['encrypt']['pub_key'] && is_any_enc
37 42 end
38 43
39 44 file pub_key_file do
40   - content attribs['encrypt']['pub_key']
  45 + content attribs['encrypt']['pub_key']
41 46 mode 0600
42 47 owner 'root'
43 48 group 'root'
44 49 sensitive true
45   - only_if { attribs['encrypt']['pub_key'] }
  50 + only_if { is_any_enc }
46 51 end
47 52
48 53 attribs['backups'].each do |back|
... ... @@ -57,8 +62,8 @@ attribs['backups'].each do |back|
57 62 :aws_bin => attribs['aws_bin'],
58 63 :tar_bin => attribs['tar_bin'],
59 64 :tmp_dir => attribs['tmp_dir'],
60   - :bucket => attribs['bucket'],
61   - :region => attribs['region'],
  65 + :bucket => back[:bucket] || attribs['bucket'],
  66 + :region => back[:region] || attribs['region'],
62 67 :pub_key_file => pub_key_file,
63 68 :paths => back[:paths]
64 69 )
... ...
... ... @@ -18,7 +18,7 @@ region=<%= @region %>
18 18 bak_dir=<%= @tmp_dir %>
19 19
20 20 aws_bin=<%= @aws_bin %>
21   -tar_bin=<%= @tar_bin || '/bin/tar' %>
  21 +tar_bin=<%= @tar_bin %>
22 22
23 23 pub_key_file=<%= @pub_key_file %>
24 24
... ...