server_maint 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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