server_maint 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,42 @@
1
+ ## v2.1.0:
2
+
3
+ * [COOK-1669] - Using platform("ubuntu") in default attributes always
4
+ returns true
5
+ * [COOK-1694] - Added additional my.cnf fields and reorganized
6
+ cookbook to avoid race conditions with mysql startup and sql script
7
+ execution
8
+ * [COOK-1851] - Support server-id and binlog_format settings
9
+ * [COOK-1929] - Update msyql server attributes file because setting
10
+ attributes without specifying a precedence is deprecated
11
+ * [COOK-1999] - Add read_only tunable useful for replication slave
12
+ servers
13
+
14
+ ## v2.0.2:
15
+
16
+ * [COOK-1967] - mysql: trailing comma in server.rb platform family
17
+
18
+ ## v2.0.0:
19
+
20
+ **Important note for this release**
21
+
22
+ Under Chef Solo, you must set the node attributes for the root, debian
23
+ and repl passwords or the run will completely fail. See COOK-1737 for
24
+ background on this.
25
+
26
+ * [COOK-1390] - MySQL service cannot start after reboot
27
+ * [COOK-1610] - Set root password outside preseed (blocker for drop-in mysql
28
+ replacements)
29
+ * [COOK-1624] - Mysql cookbook fails to even compile on windows
30
+ * [COOK-1669] - Using platform("ubuntu") in default attributes always returns true
31
+ * [COOK-1686] - Add mysql service start
32
+ * [COOK-1687] - duplicate `innodb_buffer_pool_size` attribute
33
+ * [COOK-1704] - mysql cookbook fails spec tests when minitest-handler cookbook enabled
34
+ * [COOK-1737] - Fail a chef-solo run when `server_root_password`,
35
+ `server_debian_password`, and/or `server_repl_password` is not set
36
+ * [COOK-1769] - link to database recipe in mysql README goes to old opscode/cookbooks
37
+ repo instead of opscode-cookbook organization
38
+ * [COOK-1963] - use `platform_family`
39
+
1
40
  ## v1.3.0:
2
41
 
3
42
  **Important note for this release**
@@ -20,10 +20,10 @@
20
20
  # to debian_before_squeeze? and ubuntu_before_lucid?
21
21
  ::Chef::Node.send(:include, Opscode::Mysql::Helpers)
22
22
 
23
- case node['platform']
24
- when "centos", "redhat", "suse", "fedora", "scientific", "amazon"
23
+ case node['platform_family']
24
+ when "rhel", "suse", "fedora"
25
25
  default['mysql']['client']['packages'] = %w{mysql mysql-devel}
26
- when "ubuntu","debian"
26
+ when "debian"
27
27
  if debian_before_squeeze? || ubuntu_before_lucid?
28
28
  default['mysql']['client']['packages'] = %w{mysql-client libmysqlclient15-dev}
29
29
  else
@@ -19,25 +19,46 @@
19
19
 
20
20
  default['mysql']['bind_address'] = attribute?('cloud') ? cloud['local_ipv4'] : ipaddress
21
21
  default['mysql']['port'] = 3306
22
+ default['mysql']['nice'] = 0
22
23
 
23
- case node["platform"]
24
- when "centos", "redhat", "fedora", "suse", "scientific", "amazon"
24
+ case node["platform_family"]
25
+ when "debian"
26
+ default['mysql']['server']['packages'] = %w{mysql-server}
27
+ default['mysql']['service_name'] = "mysql"
28
+ default['mysql']['basedir'] = "/usr"
29
+ default['mysql']['data_dir'] = "/var/lib/mysql"
30
+ default['mysql']['root_group'] = "root"
31
+ default['mysql']['mysqladmin_bin'] = "/usr/bin/mysqladmin"
32
+ default['mysql']['mysql_bin'] = "/usr/bin/mysql"
33
+
34
+ default['mysql']['conf_dir'] = '/etc/mysql'
35
+ default['mysql']['confd_dir'] = '/etc/mysql/conf.d'
36
+ default['mysql']['socket'] = "/var/run/mysqld/mysqld.sock"
37
+ default['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
38
+ default['mysql']['old_passwords'] = 0
39
+ default['mysql']['grants_path'] = "/etc/mysql/grants.sql"
40
+ when "rhel", "fedora", "suse"
41
+ if node["mysql"]["version"].to_f >= 5.5
42
+ default['mysql']['service_name'] = "mysql"
43
+ default['mysql']['pid_file'] = "/var/run/mysql/mysql.pid"
44
+ else
45
+ default['mysql']['service_name'] = "mysqld"
46
+ default['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
47
+ end
25
48
  default['mysql']['server']['packages'] = %w{mysql-server}
26
- default['mysql']['service_name'] = "mysqld"
27
49
  default['mysql']['basedir'] = "/usr"
28
50
  default['mysql']['data_dir'] = "/var/lib/mysql"
29
51
  default['mysql']['root_group'] = "root"
30
52
  default['mysql']['mysqladmin_bin'] = "/usr/bin/mysqladmin"
31
53
  default['mysql']['mysql_bin'] = "/usr/bin/mysql"
32
54
 
33
- set['mysql']['conf_dir'] = '/etc'
34
- set['mysql']['confd_dir'] = '/etc/mysql/conf.d'
35
- set['mysql']['socket'] = "/var/lib/mysql/mysql.sock"
36
- set['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
37
- set['mysql']['old_passwords'] = 1
38
- set['mysql']['grants_path'] = "/etc/mysql_grants.sql"
55
+ default['mysql']['conf_dir'] = '/etc'
56
+ default['mysql']['confd_dir'] = '/etc/mysql/conf.d'
57
+ default['mysql']['socket'] = "/var/lib/mysql/mysql.sock"
58
+ default['mysql']['old_passwords'] = 1
59
+ default['mysql']['grants_path'] = "/etc/mysql_grants.sql"
39
60
  # RHEL/CentOS mysql package does not support this option.
40
- set['mysql']['tunable']['innodb_adaptive_flushing'] = false
61
+ default['mysql']['tunable']['innodb_adaptive_flushing'] = false
41
62
  when "freebsd"
42
63
  default['mysql']['server']['packages'] = %w{mysql55-server}
43
64
  default['mysql']['service_name'] = "mysql-server"
@@ -47,12 +68,12 @@ when "freebsd"
47
68
  default['mysql']['mysqladmin_bin'] = "/usr/local/bin/mysqladmin"
48
69
  default['mysql']['mysql_bin'] = "/usr/local/bin/mysql"
49
70
 
50
- set['mysql']['conf_dir'] = '/usr/local/etc'
51
- set['mysql']['confd_dir'] = '/usr/local/etc/mysql/conf.d'
52
- set['mysql']['socket'] = "/tmp/mysqld.sock"
53
- set['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
54
- set['mysql']['old_passwords'] = 0
55
- set['mysql']['grants_path'] = "/var/db/mysql/grants.sql"
71
+ default['mysql']['conf_dir'] = '/usr/local/etc'
72
+ default['mysql']['confd_dir'] = '/usr/local/etc/mysql/conf.d'
73
+ default['mysql']['socket'] = "/tmp/mysqld.sock"
74
+ default['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
75
+ default['mysql']['old_passwords'] = 0
76
+ default['mysql']['grants_path'] = "/var/db/mysql/grants.sql"
56
77
  when "windows"
57
78
  default['mysql']['server']['packages'] = ["MySQL Server 5.5"]
58
79
  default['mysql']['version'] = '5.5.21'
@@ -62,14 +83,14 @@ when "windows"
62
83
 
63
84
  default['mysql']['service_name'] = "mysql"
64
85
  default['mysql']['basedir'] = "#{ENV['SYSTEMDRIVE']}\\Program Files (x86)\\MySQL\\#{mysql['server']['packages'].first}"
65
- default['mysql']['data_dir'] = "#{mysql['basedir']}\\Data"
66
- default['mysql']['bin_dir'] = "#{mysql['basedir']}\\bin"
67
- default['mysql']['mysqladmin_bin'] = "#{mysql['bin_dir']}\\mysqladmin"
68
- default['mysql']['mysql_bin'] = "#{mysql['bin_dir']}\\mysql"
86
+ default['mysql']['data_dir'] = "#{node['mysql']['basedir']}\\Data"
87
+ default['mysql']['bin_dir'] = "#{node['mysql']['basedir']}\\bin"
88
+ default['mysql']['mysqladmin_bin'] = "#{node['mysql']['bin_dir']}\\mysqladmin"
89
+ default['mysql']['mysql_bin'] = "#{node['mysql']['bin_dir']}\\mysql"
69
90
 
70
- default['mysql']['conf_dir'] = "#{mysql['basedir']}"
91
+ default['mysql']['conf_dir'] = node['mysql']['basedir']
71
92
  default['mysql']['old_passwords'] = 0
72
- default['mysql']['grants_path'] = "#{mysql['conf_dir']}\\grants.sql"
93
+ default['mysql']['grants_path'] = "#{node['mysql']['conf_dir']}\\grants.sql"
73
94
  when "mac_os_x"
74
95
  default['mysql']['server']['packages'] = %w{mysql}
75
96
  default['mysql']['basedir'] = "/usr/local/Cellar"
@@ -86,12 +107,12 @@ else
86
107
  default['mysql']['mysqladmin_bin'] = "/usr/bin/mysqladmin"
87
108
  default['mysql']['mysql_bin'] = "/usr/bin/mysql"
88
109
 
89
- set['mysql']['conf_dir'] = '/etc/mysql'
90
- set['mysql']['confd_dir'] = '/etc/mysql/conf.d'
91
- set['mysql']['socket'] = "/var/run/mysqld/mysqld.sock"
92
- set['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
93
- set['mysql']['old_passwords'] = 0
94
- set['mysql']['grants_path'] = "/etc/mysql/grants.sql"
110
+ default['mysql']['conf_dir'] = '/etc/mysql'
111
+ default['mysql']['confd_dir'] = '/etc/mysql/conf.d'
112
+ default['mysql']['socket'] = "/var/run/mysqld/mysqld.sock"
113
+ default['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
114
+ default['mysql']['old_passwords'] = 0
115
+ default['mysql']['grants_path'] = "/etc/mysql/grants.sql"
95
116
  end
96
117
 
97
118
  if attribute?('ec2')
@@ -102,52 +123,118 @@ end
102
123
 
103
124
  default['mysql']['reload_action'] = "restart" # or "reload" or "none"
104
125
 
105
- default['mysql']['use_upstart'] = node.platform?("ubuntu") && node.platform_version.to_f >= 10.04
126
+ default['mysql']['use_upstart'] = node['platform'] == "ubuntu" && node['platform_version'].to_f >= 10.04
106
127
 
107
128
  default['mysql']['auto-increment-increment'] = 1
108
129
  default['mysql']['auto-increment-offset'] = 1
109
130
 
110
131
  default['mysql']['allow_remote_root'] = false
132
+ default['mysql']['tunable']['character-set-server'] = "utf8"
133
+ default['mysql']['tunable']['collation-server'] = "utf8_general_ci"
111
134
  default['mysql']['tunable']['back_log'] = "128"
112
135
  default['mysql']['tunable']['key_buffer'] = "256M"
136
+ default['mysql']['tunable']['myisam_sort_buffer_size'] = "8M"
137
+ default['mysql']['tunable']['myisam_max_sort_file_size'] = "2147483648"
138
+ default['mysql']['tunable']['myisam_repair_threads'] = "1"
139
+ default['mysql']['tunable']['myisam_recover'] = "BACKUP"
113
140
  default['mysql']['tunable']['max_allowed_packet'] = "16M"
114
141
  default['mysql']['tunable']['max_connections'] = "800"
115
- default['mysql']['tunable']['max_heap_table_size'] = "32M"
142
+ default['mysql']['tunable']['max_connect_errors'] = "10"
143
+ default['mysql']['tunable']['concurrent_insert'] = "2"
144
+ default['mysql']['tunable']['connect_timeout'] = "10"
145
+ default['mysql']['tunable']['tmp_table_size'] = "32M"
146
+ default['mysql']['tunable']['max_heap_table_size'] = node['mysql']['tunable']['tmp_table_size']
147
+ default['mysql']['tunable']['bulk_insert_buffer_size'] = node['mysql']['tunable']['tmp_table_size']
116
148
  default['mysql']['tunable']['myisam_recover'] = "BACKUP"
117
149
  default['mysql']['tunable']['net_read_timeout'] = "30"
118
150
  default['mysql']['tunable']['net_write_timeout'] = "30"
119
151
  default['mysql']['tunable']['table_cache'] = "128"
120
- default['mysql']['tunable']['table_open_cache'] = "128"
152
+
121
153
  default['mysql']['tunable']['thread_cache'] = "128"
122
154
  default['mysql']['tunable']['thread_cache_size'] = 8
123
155
  default['mysql']['tunable']['thread_concurrency'] = 10
124
156
  default['mysql']['tunable']['thread_stack'] = "256K"
157
+ default['mysql']['tunable']['sort_buffer_size'] = "2M"
158
+ default['mysql']['tunable']['read_buffer_size'] = "128k"
159
+ default['mysql']['tunable']['read_rnd_buffer_size'] = "256k"
160
+ default['mysql']['tunable']['join_buffer_size'] = "128k"
125
161
  default['mysql']['tunable']['wait_timeout'] = "180"
162
+ default['mysql']['tunable']['open-files-limit'] = "8192"
163
+ default['mysql']['tunable']['open-files'] = "1024"
164
+
165
+ default['mysql']['tunable']['sql_mode'] = nil
166
+
167
+ default['mysql']['tunable']['skip-character-set-client-handshake'] = false
168
+ default['mysql']['tunable']['skip-name-resolve'] = false
169
+
126
170
 
171
+ default['mysql']['tunable']['server_id'] = nil
127
172
  default['mysql']['tunable']['log_bin'] = nil
128
173
  default['mysql']['tunable']['log_bin_trust_function_creators'] = false
129
- default['mysql']['tunable']['relay_log'] = nil
174
+
175
+ default['mysql']['tunable']['relay_log'] = nil
176
+ default['mysql']['tunable']['relay_log_index'] = nil
130
177
  default['mysql']['tunable']['log_slave_updates'] = false
178
+
131
179
  default['mysql']['tunable']['sync_binlog'] = 0
132
180
  default['mysql']['tunable']['skip_slave_start'] = false
181
+ default['mysql']['tunable']['read_only'] = false
133
182
 
134
183
  default['mysql']['tunable']['log_error'] = nil
184
+ default['mysql']['tunable']['log_warnings'] = false
135
185
  default['mysql']['tunable']['log_queries_not_using_index'] = true
136
186
  default['mysql']['tunable']['log_bin_trust_function_creators'] = false
137
187
 
138
- default['mysql']['tunable']['innodb_buffer_pool_size'] = "128M"
139
188
  default['mysql']['tunable']['innodb_log_file_size'] = "5M"
189
+ default['mysql']['tunable']['innodb_buffer_pool_size'] = "128M"
190
+ default['mysql']['tunable']['innodb_buffer_pool_instances'] = "4"
140
191
  default['mysql']['tunable']['innodb_additional_mem_pool_size'] = "8M"
141
192
  default['mysql']['tunable']['innodb_data_file_path'] = "ibdata1:10M:autoextend"
142
- default['mysql']['tunable']['innodb_flush_log_at_trx_commit'] = "1"
143
193
  default['mysql']['tunable']['innodb_flush_method'] = false
144
194
  default['mysql']['tunable']['innodb_log_buffer_size'] = "8M"
195
+ default['mysql']['tunable']['innodb_write_io_threads'] = "4"
196
+ default['mysql']['tunable']['innodb_io_capacity'] = "200"
197
+ default['mysql']['tunable']['innodb_file_per_table'] = true
198
+ default['mysql']['tunable']['innodb_lock_wait_timeout'] = "60"
199
+ if node['cpu'].nil? or node['cpu']['total'].nil?
200
+ default['mysql']['tunable']['innodb_thread_concurrency'] = "8"
201
+ default['mysql']['tunable']['innodb_commit_concurrency'] = "8"
202
+ default['mysql']['tunable']['innodb_read_io_threads'] = "8"
203
+ default['mysql']['tunable']['innodb_flush_log_at_trx_commit'] = "8"
204
+ else
205
+ default['mysql']['tunable']['innodb_thread_concurrency'] = "#{(Integer(node['cpu']['total'])) * 2}"
206
+ default['mysql']['tunable']['innodb_commit_concurrency'] = "#{(Integer(node['cpu']['total'])) * 2}"
207
+ default['mysql']['tunable']['innodb_read_io_threads'] = "#{(Integer(node['cpu']['total'])) * 2}"
208
+ default['mysql']['tunable']['innodb_flush_log_at_trx_commit'] = "#{(Integer(node['cpu']['total'])) * 2}"
209
+ end
210
+ default['mysql']['tunable']['innodb_support_xa'] = true
211
+ default['mysql']['tunable']['innodb_table_locks'] = true
212
+ default['mysql']['tunable']['skip-innodb-doublewrite'] = false
213
+
214
+ default['mysql']['tunable']['transaction-isolation'] = nil
145
215
 
146
216
  default['mysql']['tunable']['query_cache_limit'] = "1M"
147
217
  default['mysql']['tunable']['query_cache_size'] = "16M"
148
218
 
149
219
  default['mysql']['tunable']['log_slow_queries'] = "/var/log/mysql/slow.log"
220
+ default['mysql']['tunable']['slow_query_log'] = node['mysql']['tunable']['log_slow_queries'] # log_slow_queries is deprecated
221
+ # in favor of slow_query_log
150
222
  default['mysql']['tunable']['long_query_time'] = 2
151
223
 
152
224
  default['mysql']['tunable']['expire_logs_days'] = 10
153
225
  default['mysql']['tunable']['max_binlog_size'] = "100M"
226
+ default['mysql']['tunable']['binlog_cache_size'] = "32K"
227
+
228
+ default['mysql']['tmpdir'] = ["/tmp"]
229
+ default['mysql']['read_only'] = false
230
+
231
+ default['mysql']['log_dir'] = node['mysql']['data_dir']
232
+ default['mysql']['log_files_in_group'] = false
233
+ default['mysql']['innodb_status_file'] = false
234
+
235
+ unless node['platform_family'] && node['platform_version'].to_i < 6
236
+ # older RHEL platforms don't support these options
237
+ default['mysql']['tunable']['event_scheduler'] = 0
238
+ default['mysql']['tunable']['table_open_cache'] = "128"
239
+ default['mysql']['tunable']['binlog_format'] = "statement" if node['mysql']['tunable']['log_bin']
240
+ end
@@ -29,7 +29,7 @@ describe 'mysql::server' do
29
29
  end
30
30
  describe 'debian' do
31
31
  it 'creates a config file for service control' do
32
- skip unless ['debian', 'ubuntu'].include?(node[:platform])
32
+ skip unless ['debian'].include?(node['platform_family'])
33
33
  file("#{node['mysql']['conf_dir']}/debian.cnf").must_exist
34
34
  end
35
35
  end
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,13 +21,13 @@ module Opscode
21
21
  module Helpers
22
22
 
23
23
  def debian_before_squeeze?
24
- platform?("debian") && (node.platform_version.to_f < 6.0)
24
+ (node['platform'] == "debian") && (node['platform_version'].to_f < 6.0)
25
25
  end
26
26
 
27
27
  def ubuntu_before_lucid?
28
- platform?("ubuntu") && (node.platform_version.to_f < 10.0)
28
+ (node['platform'] == "ubuntu") && (node['platform_version'].to_f < 10.0)
29
29
  end
30
30
 
31
31
  end
32
32
  end
33
- end
33
+ end
@@ -4,7 +4,7 @@ maintainer_email "cookbooks@opscode.com"
4
4
  license "Apache 2.0"
5
5
  description "Installs and configures mysql for client or server"
6
6
  long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
7
- version "1.3.0"
7
+ version "2.1.0"
8
8
  recipe "mysql", "Includes the client recipe to configure a client"
9
9
  recipe "mysql::client", "Installs packages required for mysql clients using run_action magic"
10
10
  recipe "mysql::server", "Installs packages required for mysql servers w/o manual intervention"
@@ -30,18 +30,19 @@ if Chef::Config[:solo]
30
30
 
31
31
  if !missing_attrs.empty?
32
32
  Chef::Application.fatal!([
33
- "You must set #{missing_attrs.join(', ')} in chef-solo mode.",
34
- "For more information, see https://github.com/opscode-cookbooks/mysql#chef-solo-note"
35
- ].join(' '))
33
+ "You must set #{missing_attrs.join(', ')} in chef-solo mode.",
34
+ "For more information, see https://github.com/opscode-cookbooks/mysql#chef-solo-note"
35
+ ].join(' '))
36
36
  end
37
37
  else
38
38
  # generate all passwords
39
39
  node.set_unless['mysql']['server_debian_password'] = secure_password
40
40
  node.set_unless['mysql']['server_root_password'] = secure_password
41
41
  node.set_unless['mysql']['server_repl_password'] = secure_password
42
+ node.save
42
43
  end
43
44
 
44
- if platform?(%w{debian ubuntu})
45
+ if platform_family?(%w{debian})
45
46
 
46
47
  directory "/var/cache/local/preseeding" do
47
48
  owner "root"
@@ -60,7 +61,7 @@ if platform?(%w{debian ubuntu})
60
61
  owner "root"
61
62
  group node['mysql']['root_group']
62
63
  mode "0600"
63
- notifies :run, resources(:execute => "preseed mysql-server"), :immediately
64
+ notifies :run, "execute[preseed mysql-server]", :immediately
64
65
  end
65
66
 
66
67
  template "#{node['mysql']['conf_dir']}/debian.cnf" do
@@ -72,7 +73,7 @@ if platform?(%w{debian ubuntu})
72
73
 
73
74
  end
74
75
 
75
- if platform? 'windows'
76
+ if platform_family?('windows')
76
77
  package_file = node['mysql']['package_file']
77
78
 
78
79
  remote_file "#{Chef::Config[:file_cache_path]}/#{package_file}" do
@@ -92,19 +93,27 @@ end
92
93
  node['mysql']['server']['packages'].each do |package_name|
93
94
  package package_name do
94
95
  action :install
96
+ notifies :start, "service[mysql]", :immediately
95
97
  end
96
98
  end
97
99
 
98
- unless platform?(%w{mac_os_x})
99
-
100
- directory node['mysql']['confd_dir'] do
101
- owner "mysql" unless platform? 'windows'
102
- group "mysql" unless platform? 'windows'
103
- action :create
104
- recursive true
100
+ unless platform_family?(%w{mac_os_x})
101
+
102
+ [File.dirname(node['mysql']['pid_file']),
103
+ File.dirname(node['mysql']['tunable']['slow_query_log']),
104
+ node['mysql']['confd_dir'],
105
+ node['mysql']['confd_dir'],
106
+ node['mysql']['log_dir'],
107
+ node['mysql']['data_dir']].each do |directory_path|
108
+ directory directory_path do
109
+ owner "mysql" unless platform? 'windows'
110
+ group "mysql" unless platform? 'windows'
111
+ action :create
112
+ recursive true
113
+ end
105
114
  end
106
115
 
107
- if platform? 'windows'
116
+ if platform_family? 'windows'
108
117
  require 'win32/service'
109
118
 
110
119
  windows_path node['mysql']['bin_dir'] do
@@ -117,17 +126,6 @@ unless platform?(%w{mac_os_x})
117
126
  end
118
127
  end
119
128
 
120
- service "mysql" do
121
- service_name node['mysql']['service_name']
122
- if node['mysql']['use_upstart']
123
- restart_command "restart mysql"
124
- stop_command "stop mysql"
125
- start_command "start mysql"
126
- end
127
- supports :status => true, :restart => true, :reload => true
128
- action :enable
129
- end
130
-
131
129
  skip_federated = case node['platform']
132
130
  when 'fedora', 'ubuntu', 'amazon'
133
131
  true
@@ -136,30 +134,30 @@ unless platform?(%w{mac_os_x})
136
134
  else
137
135
  false
138
136
  end
137
+ end
139
138
 
140
- template "#{node['mysql']['conf_dir']}/my.cnf" do
141
- source "my.cnf.erb"
142
- owner "root" unless platform? 'windows'
143
- group node['mysql']['root_group'] unless platform? 'windows'
144
- mode "0644"
145
- case node['mysql']['reload_action']
146
- when 'restart'
147
- notifies :restart, resources(:service => "mysql"), :immediately
148
- when 'reload'
149
- notifies :reload, resources(:service => "mysql"), :immediately
150
- else
151
- Chef::Log.info "my.cnf updated but mysql.reload_action is #{node['mysql']['reload_action']}. No action taken."
152
- end
153
- variables :skip_federated => skip_federated
139
+ # Homebrew has its own way to do databases
140
+ if platform_family?(%w{mac_os_x})
141
+ execute "mysql-install-db" do
142
+ command "mysql_install_db --verbose --user=`whoami` --basedir=\"$(brew --prefix mysql)\" --datadir=#{node['mysql']['data_dir']} --tmpdir=/tmp"
143
+ environment('TMPDIR' => nil)
144
+ action :run
145
+ creates "#{node['mysql']['data_dir']}/mysql"
146
+ end
147
+ else
148
+ execute 'mysql-install-db' do
149
+ command "mysql_install_db"
150
+ action :run
151
+ not_if { File.exists?(node['mysql']['data_dir'] + '/mysql/user.frm') }
154
152
  end
155
- end
156
153
 
157
- unless Chef::Config[:solo]
158
- ruby_block "save node data" do
159
- block do
160
- node.save
154
+ service "mysql" do
155
+ service_name node['mysql']['service_name']
156
+ if node['mysql']['use_upstart']
157
+ provider Chef::Provider::Service::Upstart
161
158
  end
162
- action :create
159
+ supports :status => true, :restart => true, :reload => true
160
+ action :enable
163
161
  end
164
162
  end
165
163
 
@@ -171,32 +169,23 @@ execute "assign-root-password" do
171
169
  only_if "\"#{node['mysql']['mysql_bin']}\" -u root -e 'show databases;'"
172
170
  end
173
171
 
174
- # Homebrew has its own way to do databases
175
- if platform?(%w{mac_os_x})
176
-
177
- execute "mysql-install-db" do
178
- command "mysql_install_db --verbose --user=`whoami` --basedir=\"$(brew --prefix mysql)\" --datadir=#{node['mysql']['data_dir']} --tmpdir=/tmp"
179
- environment('TMPDIR' => nil)
180
- action :run
181
- creates "#{node['mysql']['data_dir']}/mysql"
182
- end
183
-
184
- else
172
+ unless platform_family?(%w{mac_os_x})
185
173
  grants_path = node['mysql']['grants_path']
174
+
186
175
  begin
187
176
  t = resources("template[#{grants_path}]")
188
177
  rescue
189
178
  Chef::Log.info("Could not find previously defined grants.sql resource")
190
179
  t = template grants_path do
191
180
  source "grants.sql.erb"
192
- owner "root" unless platform? 'windows'
193
- group node['mysql']['root_group'] unless platform? 'windows'
181
+ owner "root" unless platform_family? 'windows'
182
+ group node['mysql']['root_group'] unless platform_family? 'windows'
194
183
  mode "0600"
195
184
  action :create
196
185
  end
197
186
  end
198
187
 
199
- if platform? 'windows'
188
+ if platform_family? 'windows'
200
189
  windows_batch "mysql-install-privileges" do
201
190
  command "\"#{node['mysql']['mysql_bin']}\" -u root #{node['mysql']['server_root_password'].empty? ? '' : '-p' }\"#{node['mysql']['server_root_password']}\" < \"#{grants_path}\""
202
191
  action :nothing
@@ -204,12 +193,28 @@ else
204
193
  end
205
194
  else
206
195
  execute "mysql-install-privileges" do
207
- command "\"#{node['mysql']['mysql_bin']}\" -u root #{node['mysql']['server_root_password'].empty? ? '' : '-p' }\"#{node['mysql']['server_root_password']}\" < \"#{grants_path}\""
196
+ command %Q["#{node['mysql']['mysql_bin']}" -u root #{node['mysql']['server_root_password'].empty? ? '' : '-p' }"#{node['mysql']['server_root_password']}" < "#{grants_path}"]
208
197
  action :nothing
209
198
  subscribes :run, resources("template[#{grants_path}]"), :immediately
210
199
  end
211
200
  end
212
201
 
202
+ template "#{node['mysql']['conf_dir']}/my.cnf" do
203
+ source "my.cnf.erb"
204
+ owner "root" unless platform? 'windows'
205
+ group node['mysql']['root_group'] unless platform? 'windows'
206
+ mode "0644"
207
+ case node['mysql']['reload_action']
208
+ when 'restart'
209
+ notifies :restart, "service[mysql]", :immediately
210
+ when 'reload'
211
+ notifies :reload, "service[mysql]", :immediately
212
+ else
213
+ Chef::Log.info "my.cnf updated but mysql.reload_action is #{node['mysql']['reload_action']}. No action taken."
214
+ end
215
+ variables :skip_federated => skip_federated
216
+ end
217
+
213
218
  service "mysql" do
214
219
  action :start
215
220
  end
@@ -1,9 +1,9 @@
1
1
  # Generated by Chef for <%= node['hostname'] %>.
2
2
  # Local modifications will be overwritten.
3
3
 
4
- <% case node['platform'] -%>
5
- <% when "debian","ubuntu" -%>
6
- GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<%= node[:mysql][:server_debian_password] %>' WITH GRANT OPTION;
4
+ <% case node['platform_family'] -%>
5
+ <% when "debian" -%>
6
+ GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<%= node['mysql']['server_debian_password'] %>' WITH GRANT OPTION;
7
7
  <% end -%>
8
8
  # Grant replication for a slave user.
9
9
  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by '<%= node['mysql']['server_repl_password'] %>';
@@ -30,7 +30,7 @@ socket = <%= node['mysql']['socket'] %>
30
30
  # This was formally known as [safe_mysqld]. Both versions are currently parsed.
31
31
  [mysqld_safe]
32
32
  socket = <%= node['mysql']['socket'] %>
33
- nice = 0
33
+ nice = <%= node['mysql']['nice'] %>
34
34
 
35
35
  [mysqld]
36
36
  #
@@ -49,8 +49,22 @@ socket = <%= node['mysql']['socket'] %>
49
49
  port = <%= node['mysql']['port'] %>
50
50
  basedir = <%= node['mysql']['basedir'] %>
51
51
  datadir = <%= node['mysql']['data_dir'] %>
52
- tmpdir = /tmp
52
+ tmpdir = <%= node['mysql']['tmpdir'].join(':') %>
53
53
  skip-external-locking
54
+ <%- if node['mysql']['tunable']['skip-name-resolve'] %>
55
+ skip-name-resolve
56
+ <%- end %>
57
+
58
+ # Charset and Collation
59
+ character-set-server = <%= node['mysql']['tunable']['character-set-server'] %>
60
+ collation-server = <%= node['mysql']['tunable']['collation-server'] %>
61
+ <%- if node['mysql']['tunable']['event_scheduler'] %>
62
+ event_scheduler = <%= node['mysql']['tunable']['event_scheduler'] %>
63
+ <%- end %>
64
+ <%- if node['mysql']['tunable']['skip-character-set-client-handshake'] %>
65
+ skip-character-set-client-handshake
66
+ <%- end %>
67
+
54
68
  #
55
69
  # Instead of skip-networking the default is now to listen only on
56
70
  # localhost which is more compatible and is not less secure.
@@ -62,6 +76,10 @@ key_buffer = <%= node['mysql']['tunable']['key_buffer'] %>
62
76
  max_allowed_packet = <%= node['mysql']['tunable']['max_allowed_packet'] %>
63
77
  thread_stack = <%= node['mysql']['tunable']['thread_stack'] %>
64
78
  thread_cache_size = <%= node['mysql']['tunable']['thread_cache_size'] %>
79
+ sort_buffer_size = <%= node['mysql']['tunable']['sort_buffer_size'] %>
80
+ read_buffer_size = <%= node['mysql']['tunable']['read_buffer_size'] %>
81
+ read_rnd_buffer_size = <%= node['mysql']['tunable']['read_rnd_buffer_size'] %>
82
+ join_buffer_size = <%= node['mysql']['tunable']['join_buffer_size'] %>
65
83
 
66
84
  auto-increment-increment = <%= node['mysql']['auto-increment-increment'] %>
67
85
  auto-increment-offset = <%= node['mysql']['auto-increment-offset'] %>
@@ -69,16 +87,28 @@ auto-increment-offset = <%= node['mysql']['auto-increment-offset'] %>
69
87
  # This replaces the startup script and checks MyISAM tables if needed
70
88
  # the first time they are touched
71
89
  myisam-recover = BACKUP
72
- #max_connections = 100
73
- #table_cache = 64
74
- #thread_concurrency = 10
75
90
  max_connections = <%= node['mysql']['tunable']['max_connections'] %>
91
+ max_connect_errors = <%= node['mysql']['tunable']['max_connect_errors'] %>
92
+ concurrent_insert = <%= node['mysql']['tunable']['concurrent_insert'] %>
93
+ connect_timeout = <%= node['mysql']['tunable']['connect_timeout'] %>
76
94
  wait_timeout = <%= node['mysql']['tunable']['wait_timeout'] %>
77
95
  net_read_timeout = <%= node['mysql']['tunable']['net_read_timeout'] %>
78
96
  net_write_timeout = <%= node['mysql']['tunable']['net_write_timeout'] %>
79
97
  back_log = <%= node['mysql']['tunable']['back_log'] %>
80
98
  table_cache = <%= node['mysql']['tunable']['table_cache'] %>
99
+ <%- if node['mysql']['tunable']['table_open_cache'] %>
100
+ table_open_cache = <%= node['mysql']['tunable']['table_open_cache'] %>
101
+ <%- end %>
102
+ tmp_table_size = <%= node['mysql']['tunable']['tmp_table_size'] %>
81
103
  max_heap_table_size = <%= node['mysql']['tunable']['max_heap_table_size'] %>
104
+ bulk_insert_buffer_size = <%= node['mysql']['tunable']['bulk_insert_buffer_size'] %>
105
+ open-files-limit = <%= node['mysql']['tunable']['open-files-limit'] %>
106
+ open-files = <%= node['mysql']['tunable']['open-files'] %>
107
+
108
+ # Default Table Settings
109
+ <%- if node['mysql']['tunable']['sql_mode'] %>
110
+ sql_mode = "<%= node['mysql']['tunable']['sql_mode'] %>"
111
+ <%- end %>
82
112
 
83
113
  #
84
114
  # * Query Cache Configuration
@@ -86,7 +116,7 @@ max_heap_table_size = <%= node['mysql']['tunable']['max_heap_table_size'] %>
86
116
  query_cache_limit = <%= node['mysql']['tunable']['query_cache_limit'] %>
87
117
  query_cache_size = <%= node['mysql']['tunable']['query_cache_size'] %>
88
118
  #
89
- # * Logging and Replication
119
+ # * Logging
90
120
  #
91
121
  # Both location gets rotated by the cronjob.
92
122
  # Be aware that this log type is a performance killer.
@@ -94,22 +124,41 @@ query_cache_size = <%= node['mysql']['tunable']['query_cache_size'] %>
94
124
  #
95
125
  # Error logging goes to syslog. This is a Debian improvement :)
96
126
  <%- if node['mysql']['tunable']['log_error'] %>
97
- log-error = <%= node['mysql']['tunable']['log_error'] %>
127
+ log_error = <%= node['mysql']['tunable']['log_error'] %>
128
+ <%- end %>
129
+ <%- if node['mysql']['tunable']['log_warnings'] %>
130
+ log_warnings
98
131
  <%- end %>
132
+ #
133
+ # * Replication
134
+ #
135
+ read_only = <%= node['mysql']['read_only'] %>
136
+
137
+
99
138
  #
100
139
  # Here you can see queries with especially long duration
101
- log_slow_queries = <%= node['mysql']['tunable']['log_slow_queries'] %>
140
+ <%- if node['mysql']['version'].to_f >= 5.5 %>
141
+ slow_query_log = <%= node['mysql']['tunable']['slow_query_log'] %>
142
+ <% else %>
143
+ log_slow_queries = <%= node['mysql']['tunable']['slow_query_log'] %>
144
+ <% end %>
145
+
102
146
  long_query_time = <%= node['mysql']['tunable']['long_query_time'] %>
103
- <%- if node['mysql']['tunable']['log_queries_not_using_index'] %>
147
+ <%- if node['mysql']['tunable']['log_queries_not_using_index'] and node['mysql']['slow_query_log'] %>
104
148
  log-queries-not-using-indexes
105
149
  <%- end %>
106
150
  #
107
151
  # The following can be used as easy to replay backup logs or for replication.
108
152
  # note: if you are setting up a replication slave, see README.Debian about
109
153
  # other settings you may need to change.
110
- #server-id = 1
154
+ <%- if node['mysql']['tunable']['server_id'] %>
155
+ server-id = <%= node['mysql']['tunable']['server_id'] %>
156
+ <% end %>
111
157
  <%- if node['mysql']['tunable']['log_bin'] %>
112
158
  log_bin = <%= node['mysql']['tunable']['log_bin'] %>
159
+ <%- if node['mysql']['tunable']['log_bin'] %>
160
+ binlog_format = <%= node['mysql']['tunable']['binlog_format'] %>
161
+ <%- end %>
113
162
  log_slave_updates = <%= node['mysql']['tunable']['log_slave_updates'] %>
114
163
  <%- end %>
115
164
  <%- if node['mysql']['tunable']['log_bin_trust_function_creators'] %>
@@ -117,15 +166,27 @@ log_bin_trust_function_creators
117
166
  <%- end %>
118
167
  expire_logs_days = <%= node['mysql']['tunable']['expire_logs_days'] %>
119
168
  max_binlog_size = <%= node['mysql']['tunable']['max_binlog_size'] %>
169
+ binlog_cache_size = <%= node['mysql']['tunable']['binlog_cache_size'] %>
120
170
  #binlog_do_db = include_database_name
121
171
  #binlog_ignore_db = include_database_name
122
172
  <%- if node['mysql']['tunable']['relay_log'] %>
123
- relay-log = <%= node['mysql']['tunable']['relay_log'] %>
173
+ relay_log = <%= node['mysql']['tunable']['relay_log'] %>
174
+ <%- end %>
175
+ <%- if node['mysql']['tunable']['relay_log_index'] %>
176
+ relay_log_index = <%= node['mysql']['tunable']['relay_log_index'] %>
124
177
  <%- end %>
178
+
125
179
  sync_binlog = <%= node['mysql']['tunable']['sync_binlog'] %>
126
180
  <%- if node['mysql']['tunable']['skip_slave_start'] %>
127
181
  skip_slave_start
128
182
  <%- end %>
183
+ <%- if node['mysql']['tunable']['read_only'] %>
184
+ read_only = 1
185
+ <%- end %>
186
+
187
+ <%- if node['mysql']['tunable']['transaction-isolation'] %>
188
+ transaction-isolation = <%= node['mysql']['tunable']['transaction-isolation'] %>
189
+ <%- end %>
129
190
 
130
191
  #
131
192
  # * InnoDB
@@ -134,6 +195,36 @@ skip_slave_start
134
195
  # Read the manual for more InnoDB related options. There are many!
135
196
  # You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
136
197
  #skip-innodb
198
+
199
+ <%- if node["mysql"]["version"].to_f >= 5.5 %>
200
+ innodb_write_io_threads = <%= node['mysql']['tunable']['innodb_write_io_threads'] %>
201
+ innodb_io_capacity = <%= node['mysql']['tunable']['innodb_io_capacity'] %>
202
+ innodb_read_io_threads = <%= node['mysql']['tunable']['innodb_read_io_threads'] %>
203
+ innodb_buffer_pool_instances = <%= node['mysql']['tunable']['innodb_buffer_pool_instances'] %>
204
+ <%- end %>
205
+
206
+ ## InnoDB Plugin Independent Settings
207
+ innodb_data_home_dir = <%= node['mysql']['data_dir'] %>
208
+ innodb_log_group_home_dir = <%= node['mysql']['log_dir'] %>
209
+ <%- if node['mysql']['log_files_in_group'] %>
210
+ innodb_log_files_in_group = <%= node['mysql']['log_files_in_group'] %>
211
+ <%- end %>
212
+
213
+ <%- if node['mysql']['innodb_status_file'] %>
214
+ innodb_status_file
215
+ <%- end %>
216
+ <%- if node['mysql']['tunable']['innodb_file_per_table'] %>
217
+ innodb_file_per_table
218
+ <%- end %>
219
+ innodb_table_locks = <%= node['mysql']['tunable']['innodb_table_locks'] %>
220
+ innodb_lock_wait_timeout = <%= node['mysql']['tunable']['innodb_lock_wait_timeout'] %>
221
+ innodb_thread_concurrency = <%= node['mysql']['tunable']['innodb_thread_concurrency'] %>
222
+ innodb_commit_concurrency = <%= node['mysql']['tunable']['innodb_commit_concurrency'] %>
223
+ innodb_support_xa = <%= node['mysql']['tunable']['innodb_support_xa'] %>
224
+ <%- if node['mysql']['tunable']['skip-innodb-doublewrite'] %>
225
+ skip-innodb-doublewrite
226
+ <%- end %>
227
+
137
228
  innodb_buffer_pool_size = <%= node['mysql']['tunable']['innodb_buffer_pool_size'] %>
138
229
  innodb_log_file_size = <%= node['mysql']['tunable']['innodb_log_file_size'] %>
139
230
  innodb_additional_mem_pool_size = <%= node['mysql']['tunable']['innodb_additional_mem_pool_size'] %>
@@ -178,7 +269,12 @@ max_allowed_packet = <%= node['mysql']['tunable']['max_allowed_packet'] %>
178
269
  #no-auto-rehash # faster start of mysql but no tab completition
179
270
 
180
271
  [isamchk]
181
- key_buffer = <%= node['mysql']['tunable']['max_allowed_packet'] %>
272
+ key_buffer = <%= node['mysql']['tunable']['max_allowed_packet'] %>
273
+
274
+ myisam_sort_buffer_size = <%= node['mysql']['tunable']['myisam_sort_buffer_size'] %>
275
+ myisam_max_sort_file_size = <%= node['mysql']['tunable']['myisam_max_sort_file_size'] %>
276
+ myisam_repair_threads = <%= node['mysql']['tunable']['myisam_repair_threads'] %>
277
+ myisam_recover = <%= node['mysql']['tunable']['myisam_recover'] %>
182
278
 
183
279
  #
184
280
  # * NDB Cluster
@@ -191,8 +287,8 @@ key_buffer = <%= node['mysql']['tunable']['max_allowed_packet'] %>
191
287
  # [MYSQL_CLUSTER]
192
288
  # ndb-connectstring=127.0.0.1
193
289
 
194
- <% case node['platform'] -%>
195
- <% when "centos", "redhat", "fedora", "suse", "scientific", "amazon"-%>
290
+ <% case node['platform_family'] -%>
291
+ <% when "rhel", "fedora", "suse" -%>
196
292
  #
197
293
  # * BerkeleyDB
198
294
  #
@@ -2,4 +2,6 @@ cookbook "mysql" do
2
2
  configuration "client"
3
3
  configuration "ruby"
4
4
  configuration "server"
5
+ # the syntax in attributes/server.rb#105 is perfectly valid
6
+ lint(:ignore => ['FC028'])
5
7
  end
@@ -6,5 +6,4 @@ long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
6
6
  version "0.1.0"
7
7
 
8
8
  depends "database"
9
- depends "mysql"
10
9
  depends "yum"
@@ -17,4 +17,4 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- include_recipe "yum::epel" if platform?('centos')
20
+ include_recipe "yum::epel" if platform_family?('rhel')
@@ -17,27 +17,17 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- case node.platform
21
- when 'ubuntu'
22
- %w{mysql-client libmysqlclient-dev}
23
- when 'centos'
24
- %w{mysql mysql-devel}
25
- end.each do |pkg|
26
- package pkg do
27
- action :nothing
28
- end.run_action(:install)
29
- end
30
-
31
- gem_package "mysql" do
32
- action :nothing
33
- end.run_action(:install)
20
+ node.set['mysql']['server_debian_password'] = "ilikerandompasswords"
21
+ node.set['mysql']['server_root_password'] = "ilikerandompasswords"
22
+ node.set['mysql']['server_repl_password'] = "ilikerandompasswords"
34
23
 
35
- include_recipe "yum::epel" if platform?('centos')
24
+ include_recipe "mysql::ruby"
25
+ include_recipe "yum::epel" if platform_family?('rhel')
36
26
 
37
27
  file "/etc/sysconfig/network" do
38
28
  content "NETWORKING=yes"
39
29
  action :create_if_missing
40
- only_if { platform?('amazon', 'centos', 'fedora', 'redhat', 'scientific') }
30
+ only_if { platform_family?('rhel', 'fedora') }
41
31
  end
42
32
 
43
33
  include_recipe 'mysql::server'
@@ -0,0 +1,32 @@
1
+ #
2
+ # Cookbook Name:: mysql_test
3
+ # Recipe:: setup
4
+ #
5
+ # Copyright 2012, Opscode, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ node.set['rvm']['user_installs'] = [
21
+ { 'user' => 'vagrant',
22
+ 'default_ruby' => 'ruby-1.9.3-p327',
23
+ 'rubies' => ['1.9.3']
24
+ }
25
+ ]
26
+
27
+ node.set['rvm']['gems'] = {
28
+ "ruby-1.9.3-p327" => [
29
+ { 'name' => 'bundler' }
30
+ ]
31
+ }
32
+ include_recipe "rvm::user"
@@ -1,3 +1,3 @@
1
1
  module ServerMaint
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: server_maint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-09 00:00:00.000000000 Z
12
+ date: 2013-01-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -190,6 +190,7 @@ files:
190
190
  - lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/metadata.rb
191
191
  - lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/recipes/client.rb
192
192
  - lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/recipes/server.rb
193
+ - lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/recipes/setup.rb
193
194
  - lib/cookbooks/nginx/.gitignore
194
195
  - lib/cookbooks/nginx/CHANGELOG.md
195
196
  - lib/cookbooks/nginx/CONTRIBUTING
@@ -384,7 +385,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
384
385
  version: '0'
385
386
  segments:
386
387
  - 0
387
- hash: 1419622192236361235
388
+ hash: -2491000604656706982
388
389
  required_rubygems_version: !ruby/object:Gem::Requirement
389
390
  none: false
390
391
  requirements:
@@ -393,7 +394,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
393
394
  version: '0'
394
395
  segments:
395
396
  - 0
396
- hash: 1419622192236361235
397
+ hash: -2491000604656706982
397
398
  requirements: []
398
399
  rubyforge_project:
399
400
  rubygems_version: 1.8.24