Commit 4ac068809524323d9e3a08779856947f6b6923b7
Committed by
Earth Ugat

1 parent
c197ede2
Version v0.5.1. Make some attributes optional.
Showing
6 changed files
with
47 additions
and
16 deletions
1 | +## 0.5.1 - 2016-12-13 | |
2 | +### Changed | |
3 | +- Attributes :bak_filename and :bak_maxcopies are now optional in the 'db_map' specifications. | |
4 | +### Added | |
5 | +- Node attribute node['cfe-mariadb']['reload']['force'] will now override idempotent run for recipe 'reload_from_s3' if set to true. | |
6 | + | |
1 | 7 | ## 0.5.0 |
2 | 8 | ### Added |
3 | 9 | - Add boolean attributes ':backup' and ':reload' to db_map. They give the option of whether or not to include that database when using the 'backup2s3' and 'reload_from_s3' recipes, respectively. | ... | ... |
... | ... | @@ -67,6 +67,12 @@ Ubuntu 14.04 |
67 | 67 | <td><tt>nil</tt></td> |
68 | 68 | </tr> |
69 | 69 | <tr> |
70 | + <td><tt>['cfe-mariadb']['reload']['false']</tt></td> | |
71 | + <td>Boolean</td> | |
72 | + <td>If the recipe 'reload_from_s3' is run, reload the databases even if it has already been done by a previous run of this recipe.</td> | |
73 | + <td><tt>false</tt></td> | |
74 | + </tr> | |
75 | + <tr> | |
70 | 76 | <td><tt>['cfe-mariadb']['encrypt']['priv_key']</tt></td> |
71 | 77 | <td>String</td> |
72 | 78 | <td>Contents of the private key file used by recipe `reload_from_s3` if encrypted backups are used.</td> | ... | ... |
... | ... | @@ -23,10 +23,10 @@ |
23 | 23 | # 'example_db_name' => { |
24 | 24 | # :db_user => 'example_db_username', |
25 | 25 | # :db_pass => 'example_db_password', |
26 | -# :bak_filename => 'example_db_name.sql', | |
27 | -# :bak_maxcopies => 30 | |
28 | 26 | |
29 | 27 | ## Optional: |
28 | +# :bak_filename => 'example_db_name.sql', # Defaults to {dbname}.sql | |
29 | +# :bak_maxcopies => 30 | |
30 | 30 | # :char_set => 'utf8', |
31 | 31 | # :collate => 'utf8_general_ci', |
32 | 32 | # :bak_encrypted => false, |
... | ... | @@ -73,6 +73,7 @@ default['cfe-mariadb']['backup']['logrotate']['options'] = %w{ |
73 | 73 | notifempty |
74 | 74 | } |
75 | 75 | |
76 | +default['cfe-mariadb']['reload']['force'] = false | |
76 | 77 | default['cfe-mariadb']['reload']['file_stamp'] = |
77 | 78 | "#{node['mariadb']['configuration']['path']}/reloaded.stamp" |
78 | 79 | ... | ... |
... | ... | @@ -4,7 +4,7 @@ maintainer_email 'sysadmin @ chromedia.com' |
4 | 4 | license 'Apache License' |
5 | 5 | description 'Simplifies setup of MariaDB in Chromedia.' |
6 | 6 | long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) |
7 | -version '0.5.0' | |
7 | +version '0.5.1' | |
8 | 8 | |
9 | 9 | { |
10 | 10 | 'mariadb' => '0.3.1', | ... | ... |
... | ... | @@ -31,7 +31,9 @@ manual_creds = node['cfe-mariadb'].has_key?('reload') && |
31 | 31 | tmp_dir = ::File.join(Chef::Config[:file_cache_path], 'db_dumps') |
32 | 32 | priv_key_file = "#{tmp_dir}/priv.key" |
33 | 33 | |
34 | -unless ::File.exist?(node['cfe-mariadb']['reload']['file_stamp']) | |
34 | +if node['cfe-mariadb']['reload']['force'] || | |
35 | + !::File.exist?(node['cfe-mariadb']['reload']['file_stamp']) | |
36 | + | |
35 | 37 | directory(tmp_dir) { recursive true } |
36 | 38 | |
37 | 39 | file priv_key_file do |
... | ... | @@ -50,8 +52,9 @@ unless ::File.exist?(node['cfe-mariadb']['reload']['file_stamp']) |
50 | 52 | end |
51 | 53 | |
52 | 54 | unless dbx.has_key?(:reload) && dbx[:reload] == false |
53 | - keyname = "#{dbx[:bak_filename]}.gz#{dbx[:bak_encrypted] ? '.enc' : ''}" | |
54 | - filepath = "#{tmp_dir}/#{dbx[:bak_filename]}" | |
55 | + bfname = dbx[:bak_filename] || "#{dbx_name}.sql" | |
56 | + keyname = "#{bfname}.gz#{dbx[:bak_encrypted] ? '.enc' : ''}" | |
57 | + filepath = "#{tmp_dir}/#{bfname}" | |
55 | 58 | |
56 | 59 | awscli_s3_file "#{tmp_dir}/#{keyname}" do |
57 | 60 | region node['cfe-mariadb']['s3_region'] |
... | ... | @@ -84,8 +87,11 @@ unless ::File.exist?(node['cfe-mariadb']['reload']['file_stamp']) |
84 | 87 | file("#{filepath}.gz.enc") { action :nothing } |
85 | 88 | file(filepath) { action :nothing } |
86 | 89 | |
87 | - file node['cfe-mariadb']['reload']['file_stamp'] do | |
90 | + stamp = node['cfe-mariadb']['reload']['file_stamp'] | |
91 | + file stamp do | |
88 | 92 | content %x{ date +"%FT%T" } |
93 | + only_if "test -d #{::File.dirname(stamp)} || "\ | |
94 | + "mkdir -p #{::File.dirname(stamp)}" | |
89 | 95 | end |
90 | 96 | end |
91 | 97 | end | ... | ... |
... | ... | @@ -107,6 +107,9 @@ upload_to_s3() { |
107 | 107 | } |
108 | 108 | |
109 | 109 | # First, perform mysqldump on each database (and encrypt if desired): |
110 | +# export_db mydb dbuser 'dbpass' mydb.sql | |
111 | +# compress_backup_file mydb.sql | |
112 | +# encrypt_file mydb.sql.gz | |
110 | 113 | |
111 | 114 | <% @db_map.each do |db| -%> |
112 | 115 | <% if db.is_a?(Array) -%> |
... | ... | @@ -116,26 +119,35 @@ upload_to_s3() { |
116 | 119 | <% db_name = db[:db_name] -%> |
117 | 120 | <% end -%> |
118 | 121 | <% unless db.has_key?(:backup) && db[:backup] == false -%> |
119 | -export_db <%= db_name %> <%= db[:db_user] %> '<%= db[:db_pass] %>' <%= db[:bak_filename] %> | |
120 | -compress_backup_file <%= db[:bak_filename] %> | |
122 | +<% bfname = db[:bak_filename] || "#{db_name}.sql" -%> | |
123 | +export_db <%= db_name %> <%= db[:db_user] %> '<%= db[:db_pass] %>' <%= bfname %> | |
124 | +compress_backup_file <%= bfname %> | |
121 | 125 | <% if db[:bak_encrypted] -%> |
122 | -encrypt_file <%= db[:bak_filename] %>.gz | |
126 | +encrypt_file <%= bfname %>.gz | |
123 | 127 | <% end -%> |
124 | 128 | <% end -%> |
125 | 129 | <% end -%> |
126 | 130 | |
127 | 131 | # Then upload the backup files one by one: |
132 | +# increment_backup_names mydb.sql.gz.enc 30 | |
133 | +# upload_to_s3 mydb.sql.gz.enc | |
128 | 134 | |
129 | 135 | <% @db_map.each do |db| -%> |
130 | -<% if db.is_a?(Array) then db = db[1] end -%> | |
131 | -<% if db[:bak_encrypted] -%> | |
132 | -<% bfname = "#{db[:bak_filename]}.gz.enc" -%> | |
136 | +<% if db.is_a?(Array) -%> | |
137 | +<% db_name = db[0] -%> | |
138 | +<% db = db[1] -%> | |
133 | 139 | <% else -%> |
134 | -<% bfname = "#{db[:bak_filename]}.gz" -%> | |
140 | +<% db_name = db[:db_name] -%> | |
135 | 141 | <% end -%> |
136 | 142 | <% unless db.has_key?(:backup) && db[:backup] == false -%> |
137 | -increment_backup_names <%= bfname %> <%= db[:bak_maxcopies] %> | |
138 | -upload_to_s3 <%= bfname %> | |
143 | +<% bfname = db[:bak_filename] || "#{db_name}.sql" -%> | |
144 | +<% if db[:bak_encrypted] -%> | |
145 | +<% fullname = "#{bfname}.gz.enc" -%> | |
146 | +<% else -%> | |
147 | +<% fullname = "#{bfname}.gz" -%> | |
148 | +<% end -%> | |
149 | +increment_backup_names <%= fullname %> <%= db[:bak_maxcopies] || 30 %> | |
150 | +upload_to_s3 <%= fullname %> | |
139 | 151 | |
140 | 152 | <% end -%> |
141 | 153 | <% end -%> | ... | ... |