server_maint 0.0.3 → 0.0.4
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.
- data/.gitmodules +21 -0
- data/lib/cookbooks/aws/CHANGELOG.md +11 -0
- data/lib/cookbooks/aws/CONTRIBUTING +29 -0
- data/lib/cookbooks/aws/LICENSE +201 -0
- data/lib/cookbooks/aws/README.md +271 -0
- data/lib/cookbooks/aws/attributes/default.rb +20 -0
- data/lib/cookbooks/aws/libraries/ec2.rb +58 -0
- data/lib/cookbooks/aws/metadata.rb +7 -0
- data/lib/cookbooks/aws/providers/ebs_volume.rb +236 -0
- data/lib/cookbooks/aws/providers/elastic_ip.rb +90 -0
- data/lib/cookbooks/aws/providers/elastic_lb.rb +24 -0
- data/lib/cookbooks/aws/providers/resource_tag.rb +93 -0
- data/lib/cookbooks/aws/recipes/default.rb +25 -0
- data/lib/cookbooks/aws/resources/ebs_volume.rb +17 -0
- data/lib/cookbooks/aws/resources/elastic_ip.rb +11 -0
- data/lib/cookbooks/aws/resources/elastic_lb.rb +10 -0
- data/lib/cookbooks/aws/resources/resource_tag.rb +11 -0
- data/lib/cookbooks/database/.gitignore +1 -0
- data/lib/cookbooks/database/CHANGELOG.md +51 -0
- data/lib/cookbooks/database/CONTRIBUTING +29 -0
- data/lib/cookbooks/database/LICENSE +201 -0
- data/lib/cookbooks/database/README.md +468 -0
- data/lib/cookbooks/database/libraries/provider_database_mysql.rb +103 -0
- data/lib/cookbooks/database/libraries/provider_database_mysql_user.rb +76 -0
- data/lib/cookbooks/database/libraries/provider_database_postgresql.rb +131 -0
- data/lib/cookbooks/database/libraries/provider_database_postgresql_user.rb +83 -0
- data/lib/cookbooks/database/libraries/provider_database_sql_server.rb +109 -0
- data/lib/cookbooks/database/libraries/provider_database_sql_server_user.rb +106 -0
- data/lib/cookbooks/database/libraries/resource_database.rb +119 -0
- data/lib/cookbooks/database/libraries/resource_database_user.rb +90 -0
- data/lib/cookbooks/database/libraries/resource_mysql_database.rb +34 -0
- data/lib/cookbooks/database/libraries/resource_mysql_database_user.rb +34 -0
- data/lib/cookbooks/database/libraries/resource_postgresql_database.rb +35 -0
- data/lib/cookbooks/database/libraries/resource_postgresql_database_user.rb +35 -0
- data/lib/cookbooks/database/libraries/resource_sql_server_database.rb +34 -0
- data/lib/cookbooks/database/libraries/resource_sql_server_database_user.rb +34 -0
- data/lib/cookbooks/database/metadata.rb +22 -0
- data/lib/cookbooks/database/recipes/default.rb +20 -0
- data/lib/cookbooks/database/recipes/ebs_backup.rb +89 -0
- data/lib/cookbooks/database/recipes/ebs_volume.rb +204 -0
- data/lib/cookbooks/database/recipes/master.rb +78 -0
- data/lib/cookbooks/database/recipes/mysql.rb +20 -0
- data/lib/cookbooks/database/recipes/postgresql.rb +20 -0
- data/lib/cookbooks/database/recipes/snapshot.rb +62 -0
- data/lib/cookbooks/database/templates/default/app_grants.sql.erb +8 -0
- data/lib/cookbooks/database/templates/default/aws_config.erb +3 -0
- data/lib/cookbooks/database/templates/default/chef-solo-database-snapshot.cron.erb +6 -0
- data/lib/cookbooks/database/templates/default/chef-solo-database-snapshot.json.erb +1 -0
- data/lib/cookbooks/database/templates/default/chef-solo-database-snapshot.rb.erb +6 -0
- data/lib/cookbooks/database/templates/default/ebs-backup-cron.erb +2 -0
- data/lib/cookbooks/database/templates/default/ebs-db-backup.sh.erb +8 -0
- data/lib/cookbooks/database/templates/default/ebs-db-restore.sh.erb +10 -0
- data/lib/cookbooks/database/templates/default/s3cfg.erb +27 -0
- data/lib/cookbooks/mysql/.gitignore +5 -0
- data/lib/cookbooks/mysql/CHANGELOG.md +86 -0
- data/lib/cookbooks/mysql/CONTRIBUTING +29 -0
- data/lib/cookbooks/mysql/Gemfile +8 -0
- data/lib/cookbooks/mysql/LICENSE +201 -0
- data/lib/cookbooks/mysql/README.md +227 -0
- data/lib/cookbooks/mysql/attributes/client.rb +50 -0
- data/lib/cookbooks/mysql/attributes/server.rb +153 -0
- data/lib/cookbooks/mysql/files/default/tests/minitest/server_test.rb +36 -0
- data/lib/cookbooks/mysql/files/default/tests/minitest/support/helpers.rb +11 -0
- data/lib/cookbooks/mysql/libraries/helpers.rb +33 -0
- data/lib/cookbooks/mysql/metadata.rb +140 -0
- data/lib/cookbooks/mysql/recipes/client.rb +59 -0
- data/lib/cookbooks/mysql/recipes/default.rb +20 -0
- data/lib/cookbooks/mysql/recipes/ruby.rb +36 -0
- data/lib/cookbooks/mysql/recipes/server.rb +216 -0
- data/lib/cookbooks/mysql/recipes/server_ec2.rb +51 -0
- data/lib/cookbooks/mysql/templates/default/debian.cnf.erb +12 -0
- data/lib/cookbooks/mysql/templates/default/grants.sql.erb +15 -0
- data/lib/cookbooks/mysql/templates/default/my.cnf.erb +211 -0
- data/lib/cookbooks/mysql/templates/default/mysql-server.seed.erb +10 -0
- data/lib/cookbooks/mysql/templates/default/port_mysql.erb +3 -0
- data/lib/cookbooks/mysql/templates/windows/my.cnf.erb +61 -0
- data/lib/cookbooks/mysql/test/features/query_database.feature +26 -0
- data/lib/cookbooks/mysql/test/features/step_definitions/mysql_steps.rb +47 -0
- data/lib/cookbooks/mysql/test/features/support/env.rb +3 -0
- data/lib/cookbooks/mysql/test/features/support/mysql_helpers.rb +51 -0
- data/lib/cookbooks/mysql/test/kitchen/Kitchenfile +5 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/.gitignore +1 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/README.md +63 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/attributes/default.rb +27 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/metadata.rb +10 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/recipes/client.rb +20 -0
- data/lib/cookbooks/mysql/test/kitchen/cookbooks/mysql_test/recipes/server.rb +72 -0
- data/lib/cookbooks/openssl/CHANGELOG.md +0 -0
- data/lib/cookbooks/openssl/CONTRIBUTING +29 -0
- data/lib/cookbooks/openssl/LICENSE +201 -0
- data/lib/cookbooks/openssl/README.md +37 -0
- data/lib/cookbooks/openssl/libraries/secure_password.rb +37 -0
- data/lib/cookbooks/openssl/metadata.rb +8 -0
- data/lib/cookbooks/openssl/recipes/default.rb +19 -0
- data/lib/cookbooks/postgresql/CHANGELOG.md +35 -0
- data/lib/cookbooks/postgresql/CONTRIBUTING +29 -0
- data/lib/cookbooks/postgresql/LICENSE +201 -0
- data/lib/cookbooks/postgresql/README.md +148 -0
- data/lib/cookbooks/postgresql/attributes/default.rb +103 -0
- data/lib/cookbooks/postgresql/metadata.rb +21 -0
- data/lib/cookbooks/postgresql/recipes/client.rb +26 -0
- data/lib/cookbooks/postgresql/recipes/default.rb +20 -0
- data/lib/cookbooks/postgresql/recipes/ruby.rb +40 -0
- data/lib/cookbooks/postgresql/recipes/server.rb +64 -0
- data/lib/cookbooks/postgresql/recipes/server_debian.rb +64 -0
- data/lib/cookbooks/postgresql/recipes/server_redhat.rb +77 -0
- data/lib/cookbooks/postgresql/templates/default/debian.postgresql.conf.erb +499 -0
- data/lib/cookbooks/postgresql/templates/default/pg_hba.conf.erb +83 -0
- data/lib/cookbooks/postgresql/templates/default/redhat.postgresql.conf.erb +501 -0
- data/lib/cookbooks/sqlite/.gitignore +4 -0
- data/lib/cookbooks/sqlite/CHANGELOG.md +3 -0
- data/lib/cookbooks/sqlite/CONTRIBUTING +29 -0
- data/lib/cookbooks/sqlite/Gemfile +2 -0
- data/lib/cookbooks/sqlite/LICENSE +201 -0
- data/lib/cookbooks/sqlite/README.md +36 -0
- data/lib/cookbooks/sqlite/metadata.rb +12 -0
- data/lib/cookbooks/sqlite/recipes/default.rb +30 -0
- data/lib/cookbooks/sqlite/test/kitchen/Kitchenfile +1 -0
- data/lib/cookbooks/xfs/CHANGELOG.md +0 -0
- data/lib/cookbooks/xfs/CONTRIBUTING +29 -0
- data/lib/cookbooks/xfs/LICENSE +201 -0
- data/lib/cookbooks/xfs/README.md +30 -0
- data/lib/cookbooks/xfs/metadata.rb +12 -0
- data/lib/cookbooks/xfs/recipes/default.rb +26 -0
- data/lib/server_maint/version.rb +1 -1
- metadata +127 -4
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Generated by Chef for <%= node['hostname'] %>
|
|
3
|
+
#
|
|
4
|
+
# Local modifications will be overwritten.
|
|
5
|
+
#
|
|
6
|
+
# The MySQL database server configuration file.
|
|
7
|
+
#
|
|
8
|
+
# You can copy this to one of:
|
|
9
|
+
# - "/etc/mysql/my.cnf" to set global options,
|
|
10
|
+
# - "~/.my.cnf" to set user-specific options.
|
|
11
|
+
#
|
|
12
|
+
# One can use all long options that the program supports.
|
|
13
|
+
# Run program with --help to get a list of available options and with
|
|
14
|
+
# --print-defaults to see which it would actually understand and use.
|
|
15
|
+
#
|
|
16
|
+
# For explanations see
|
|
17
|
+
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
|
|
18
|
+
|
|
19
|
+
# This will be passed to all mysql clients
|
|
20
|
+
# It has been reported that passwords should be enclosed with ticks/quotes
|
|
21
|
+
# escpecially if they contain "#" chars...
|
|
22
|
+
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
|
|
23
|
+
[client]
|
|
24
|
+
port = <%= node['mysql']['port'] %>
|
|
25
|
+
socket = <%= node['mysql']['socket'] %>
|
|
26
|
+
|
|
27
|
+
# Here is entries for some specific programs
|
|
28
|
+
# The following values assume you have at least 32M ram
|
|
29
|
+
|
|
30
|
+
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
|
|
31
|
+
[mysqld_safe]
|
|
32
|
+
socket = <%= node['mysql']['socket'] %>
|
|
33
|
+
nice = 0
|
|
34
|
+
|
|
35
|
+
[mysqld]
|
|
36
|
+
#
|
|
37
|
+
# * Basic Settings
|
|
38
|
+
#
|
|
39
|
+
|
|
40
|
+
#
|
|
41
|
+
# * IMPORTANT
|
|
42
|
+
# If you make changes to these settings and your system uses apparmor, you may
|
|
43
|
+
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
|
|
44
|
+
#
|
|
45
|
+
|
|
46
|
+
user = mysql
|
|
47
|
+
pid-file = <%= node['mysql']['pid_file'] %>
|
|
48
|
+
socket = <%= node['mysql']['socket'] %>
|
|
49
|
+
port = <%= node['mysql']['port'] %>
|
|
50
|
+
basedir = <%= node['mysql']['basedir'] %>
|
|
51
|
+
datadir = <%= node['mysql']['data_dir'] %>
|
|
52
|
+
tmpdir = /tmp
|
|
53
|
+
skip-external-locking
|
|
54
|
+
#
|
|
55
|
+
# Instead of skip-networking the default is now to listen only on
|
|
56
|
+
# localhost which is more compatible and is not less secure.
|
|
57
|
+
bind-address = <%= node['mysql']['bind_address'] %>
|
|
58
|
+
#
|
|
59
|
+
# * Fine Tuning
|
|
60
|
+
#
|
|
61
|
+
key_buffer = <%= node['mysql']['tunable']['key_buffer'] %>
|
|
62
|
+
max_allowed_packet = <%= node['mysql']['tunable']['max_allowed_packet'] %>
|
|
63
|
+
thread_stack = <%= node['mysql']['tunable']['thread_stack'] %>
|
|
64
|
+
thread_cache_size = <%= node['mysql']['tunable']['thread_cache_size'] %>
|
|
65
|
+
|
|
66
|
+
auto-increment-increment = <%= node['mysql']['auto-increment-increment'] %>
|
|
67
|
+
auto-increment-offset = <%= node['mysql']['auto-increment-offset'] %>
|
|
68
|
+
|
|
69
|
+
# This replaces the startup script and checks MyISAM tables if needed
|
|
70
|
+
# the first time they are touched
|
|
71
|
+
myisam-recover = BACKUP
|
|
72
|
+
#max_connections = 100
|
|
73
|
+
#table_cache = 64
|
|
74
|
+
#thread_concurrency = 10
|
|
75
|
+
max_connections = <%= node['mysql']['tunable']['max_connections'] %>
|
|
76
|
+
wait_timeout = <%= node['mysql']['tunable']['wait_timeout'] %>
|
|
77
|
+
net_read_timeout = <%= node['mysql']['tunable']['net_read_timeout'] %>
|
|
78
|
+
net_write_timeout = <%= node['mysql']['tunable']['net_write_timeout'] %>
|
|
79
|
+
back_log = <%= node['mysql']['tunable']['back_log'] %>
|
|
80
|
+
table_cache = <%= node['mysql']['tunable']['table_cache'] %>
|
|
81
|
+
max_heap_table_size = <%= node['mysql']['tunable']['max_heap_table_size'] %>
|
|
82
|
+
|
|
83
|
+
#
|
|
84
|
+
# * Query Cache Configuration
|
|
85
|
+
#
|
|
86
|
+
query_cache_limit = <%= node['mysql']['tunable']['query_cache_limit'] %>
|
|
87
|
+
query_cache_size = <%= node['mysql']['tunable']['query_cache_size'] %>
|
|
88
|
+
#
|
|
89
|
+
# * Logging and Replication
|
|
90
|
+
#
|
|
91
|
+
# Both location gets rotated by the cronjob.
|
|
92
|
+
# Be aware that this log type is a performance killer.
|
|
93
|
+
#log = /var/log/mysql/mysql.log
|
|
94
|
+
#
|
|
95
|
+
# Error logging goes to syslog. This is a Debian improvement :)
|
|
96
|
+
<%- if node['mysql']['tunable']['log_error'] %>
|
|
97
|
+
log-error = <%= node['mysql']['tunable']['log_error'] %>
|
|
98
|
+
<%- end %>
|
|
99
|
+
#
|
|
100
|
+
# Here you can see queries with especially long duration
|
|
101
|
+
log_slow_queries = <%= node['mysql']['tunable']['log_slow_queries'] %>
|
|
102
|
+
long_query_time = <%= node['mysql']['tunable']['long_query_time'] %>
|
|
103
|
+
<%- if node['mysql']['tunable']['log_queries_not_using_index'] %>
|
|
104
|
+
log-queries-not-using-indexes
|
|
105
|
+
<%- end %>
|
|
106
|
+
#
|
|
107
|
+
# The following can be used as easy to replay backup logs or for replication.
|
|
108
|
+
# note: if you are setting up a replication slave, see README.Debian about
|
|
109
|
+
# other settings you may need to change.
|
|
110
|
+
#server-id = 1
|
|
111
|
+
<%- if node['mysql']['tunable']['log_bin'] %>
|
|
112
|
+
log_bin = <%= node['mysql']['tunable']['log_bin'] %>
|
|
113
|
+
log_slave_updates = <%= node['mysql']['tunable']['log_slave_updates'] %>
|
|
114
|
+
<%- end %>
|
|
115
|
+
<%- if node['mysql']['tunable']['log_bin_trust_function_creators'] %>
|
|
116
|
+
log_bin_trust_function_creators
|
|
117
|
+
<%- end %>
|
|
118
|
+
expire_logs_days = <%= node['mysql']['tunable']['expire_logs_days'] %>
|
|
119
|
+
max_binlog_size = <%= node['mysql']['tunable']['max_binlog_size'] %>
|
|
120
|
+
#binlog_do_db = include_database_name
|
|
121
|
+
#binlog_ignore_db = include_database_name
|
|
122
|
+
<%- if node['mysql']['tunable']['relay_log'] %>
|
|
123
|
+
relay-log = <%= node['mysql']['tunable']['relay_log'] %>
|
|
124
|
+
<%- end %>
|
|
125
|
+
sync_binlog = <%= node['mysql']['tunable']['sync_binlog'] %>
|
|
126
|
+
<%- if node['mysql']['tunable']['skip_slave_start'] %>
|
|
127
|
+
skip_slave_start
|
|
128
|
+
<%- end %>
|
|
129
|
+
|
|
130
|
+
#
|
|
131
|
+
# * InnoDB
|
|
132
|
+
#
|
|
133
|
+
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
|
|
134
|
+
# Read the manual for more InnoDB related options. There are many!
|
|
135
|
+
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
|
|
136
|
+
#skip-innodb
|
|
137
|
+
innodb_buffer_pool_size = <%= node['mysql']['tunable']['innodb_buffer_pool_size'] %>
|
|
138
|
+
innodb_log_file_size = <%= node['mysql']['tunable']['innodb_log_file_size'] %>
|
|
139
|
+
innodb_additional_mem_pool_size = <%= node['mysql']['tunable']['innodb_additional_mem_pool_size'] %>
|
|
140
|
+
innodb_data_file_path = <%= node['mysql']['tunable']['innodb_data_file_path'] %>
|
|
141
|
+
innodb_file_per_table
|
|
142
|
+
innodb_flush_log_at_trx_commit = <%= node['mysql']['tunable']['innodb_flush_log_at_trx_commit'] %>
|
|
143
|
+
<%- if node['mysql']['tunable']['innodb_flush_method'] %>
|
|
144
|
+
innodb_flush_method = <%= node['mysql']['tunable']['innodb_flush_method'] %>
|
|
145
|
+
<%- end %>
|
|
146
|
+
innodb_log_buffer_size = <%= node['mysql']['tunable']['innodb_log_buffer_size'] %>
|
|
147
|
+
<%- if node['mysql']['tunable']['innodb_adaptive_flushing'] %>
|
|
148
|
+
innodb_adaptive_flushing = <%= node['mysql']['tunable']['innodb_adaptive_flushing'] %>
|
|
149
|
+
<%- end %>
|
|
150
|
+
|
|
151
|
+
<% if @skip_federated %>
|
|
152
|
+
#
|
|
153
|
+
# * Federated
|
|
154
|
+
#
|
|
155
|
+
# The FEDERATED storage engine is disabled since 5.0.67 by default in the .cnf files
|
|
156
|
+
# shipped with MySQL distributions (my-huge.cnf, my-medium.cnf, and so forth).
|
|
157
|
+
#
|
|
158
|
+
skip-federated
|
|
159
|
+
<% end %>
|
|
160
|
+
#
|
|
161
|
+
# * Security Features
|
|
162
|
+
#
|
|
163
|
+
# Read the manual, too, if you want chroot!
|
|
164
|
+
# chroot = /var/lib/mysql/
|
|
165
|
+
#
|
|
166
|
+
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
|
|
167
|
+
#
|
|
168
|
+
# ssl-ca=/etc/mysql/cacert.pem
|
|
169
|
+
# ssl-cert=/etc/mysql/server-cert.pem
|
|
170
|
+
# ssl-key=/etc/mysql/server-key.pem
|
|
171
|
+
|
|
172
|
+
[mysqldump]
|
|
173
|
+
quick
|
|
174
|
+
quote-names
|
|
175
|
+
max_allowed_packet = <%= node['mysql']['tunable']['max_allowed_packet'] %>
|
|
176
|
+
|
|
177
|
+
[mysql]
|
|
178
|
+
#no-auto-rehash # faster start of mysql but no tab completition
|
|
179
|
+
|
|
180
|
+
[isamchk]
|
|
181
|
+
key_buffer = <%= node['mysql']['tunable']['max_allowed_packet'] %>
|
|
182
|
+
|
|
183
|
+
#
|
|
184
|
+
# * NDB Cluster
|
|
185
|
+
#
|
|
186
|
+
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
|
|
187
|
+
#
|
|
188
|
+
# The following configuration is read by the NDB Data Nodes (ndbd processes)
|
|
189
|
+
# not from the NDB Management Nodes (ndb_mgmd processes).
|
|
190
|
+
#
|
|
191
|
+
# [MYSQL_CLUSTER]
|
|
192
|
+
# ndb-connectstring=127.0.0.1
|
|
193
|
+
|
|
194
|
+
<% case node['platform'] -%>
|
|
195
|
+
<% when "centos", "redhat", "fedora", "suse", "scientific", "amazon"-%>
|
|
196
|
+
#
|
|
197
|
+
# * BerkeleyDB
|
|
198
|
+
#
|
|
199
|
+
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
|
|
200
|
+
skip-bdb
|
|
201
|
+
# Default to using old password format for compatibility with mysql 3.x
|
|
202
|
+
# clients (those using the mysqlclient10 compatibility package).
|
|
203
|
+
old_passwords = <%= node['mysql']['old_passwords'] %>
|
|
204
|
+
|
|
205
|
+
<% else -%>
|
|
206
|
+
#
|
|
207
|
+
# * IMPORTANT: Additional settings that can override those from this file!
|
|
208
|
+
# The files must end with '.cnf', otherwise they'll be ignored.
|
|
209
|
+
#
|
|
210
|
+
!includedir <%= node['mysql']['confd_dir'] %>/
|
|
211
|
+
<% end -%>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
mysql-server-5.0 mysql-server/root_password_again select <%= node['mysql']['server_root_password'] %>
|
|
2
|
+
mysql-server-5.0 mysql-server/root_password select <%= node['mysql']['server_root_password'] %>
|
|
3
|
+
mysql-server-5.0 mysql-server-5.0/really_downgrade boolean false
|
|
4
|
+
mysql-server-5.0 mysql-server-5.0/need_sarge_compat boolean false
|
|
5
|
+
mysql-server-5.0 mysql-server-5.0/start_on_boot boolean true
|
|
6
|
+
mysql-server-5.0 mysql-server/error_setting_password boolean false
|
|
7
|
+
mysql-server-5.0 mysql-server-5.0/nis_warning note
|
|
8
|
+
mysql-server-5.0 mysql-server-5.0/postrm_remove_databases boolean false
|
|
9
|
+
mysql-server-5.0 mysql-server/password_mismatch boolean false
|
|
10
|
+
mysql-server-5.0 mysql-server-5.0/need_sarge_compat_done boolean true
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Generated by Chef for <%= node['hostname'] %>
|
|
3
|
+
#
|
|
4
|
+
# Local modifications will be overwritten.
|
|
5
|
+
#
|
|
6
|
+
# The MySQL database server configuration file.
|
|
7
|
+
#
|
|
8
|
+
# One can use all long options that the program supports.
|
|
9
|
+
# Run program with --help to get a list of available options and with
|
|
10
|
+
# --print-defaults to see which it would actually understand and use.
|
|
11
|
+
#
|
|
12
|
+
# For explanations see
|
|
13
|
+
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
|
|
14
|
+
|
|
15
|
+
# This will be passed to all mysql clients
|
|
16
|
+
# It has been reported that passwords should be enclosed with ticks/quotes
|
|
17
|
+
# escpecially if they contain "#" chars...
|
|
18
|
+
[client]
|
|
19
|
+
port = 3306
|
|
20
|
+
|
|
21
|
+
[mysql]
|
|
22
|
+
default-character-set = latin1
|
|
23
|
+
|
|
24
|
+
[mysqld]
|
|
25
|
+
#
|
|
26
|
+
# * Basic Settings
|
|
27
|
+
#
|
|
28
|
+
port = 3306
|
|
29
|
+
basedir = <%= node['mysql']['basedir'] %>
|
|
30
|
+
datadir = <%= node['mysql']['data_dir'] %>
|
|
31
|
+
character-set-server = latin1
|
|
32
|
+
default-storage-engine = INNODB
|
|
33
|
+
sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
|
|
34
|
+
|
|
35
|
+
#
|
|
36
|
+
# * Fine Tuning
|
|
37
|
+
#
|
|
38
|
+
thread_cache_size = <%= node['mysql']['tunable']['thread_cache_size'] %>
|
|
39
|
+
max_connections = <%= node['mysql']['tunable']['max_connections'] %>
|
|
40
|
+
table_cache = <%= node['mysql']['tunable']['table_cache'] %>
|
|
41
|
+
query_cache_size = <%= node['mysql']['tunable']['query_cache_size'] %>
|
|
42
|
+
tmp_table_size = 5M
|
|
43
|
+
myisam_max_sort_file_size = 100G
|
|
44
|
+
myisam_sort_buffer_size = 8M
|
|
45
|
+
key_buffer_size = 8M
|
|
46
|
+
read_buffer_size = 64K
|
|
47
|
+
read_rnd_buffer_size = 256K
|
|
48
|
+
sort_buffer_size = 212K
|
|
49
|
+
|
|
50
|
+
#
|
|
51
|
+
# * InnoDB
|
|
52
|
+
#
|
|
53
|
+
# Read the manual for more InnoDB related options. There are many!
|
|
54
|
+
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
|
|
55
|
+
#
|
|
56
|
+
innodb_additional_mem_pool_size = 2M
|
|
57
|
+
innodb_flush_log_at_trx_commit = 1
|
|
58
|
+
innodb_log_buffer_size = 1M
|
|
59
|
+
innodb_buffer_pool_size = <%= node['mysql']['tunable']['innodb_buffer_pool_size'] %>
|
|
60
|
+
innodb_log_file_size = 10M
|
|
61
|
+
innodb_thread_concurrency = 8
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
@server
|
|
2
|
+
Feature: Query database
|
|
3
|
+
|
|
4
|
+
In order to persist and retrieve my application data
|
|
5
|
+
As a developer
|
|
6
|
+
I want to be able to query the database
|
|
7
|
+
|
|
8
|
+
Scenario: Query database
|
|
9
|
+
Given a new database server with some example data
|
|
10
|
+
When I query the database
|
|
11
|
+
Then the expected data should be returned
|
|
12
|
+
|
|
13
|
+
Scenario: Update a row
|
|
14
|
+
Given a new database server with some example data
|
|
15
|
+
When I update a row in a database table
|
|
16
|
+
Then the updated data should be returned for subsequent queries
|
|
17
|
+
|
|
18
|
+
Scenario: Insert a row
|
|
19
|
+
Given a new database server with some example data
|
|
20
|
+
When I insert a new row into a database table
|
|
21
|
+
Then the inserted data should be returned for subsequent queries
|
|
22
|
+
|
|
23
|
+
Scenario: Delete a row
|
|
24
|
+
Given a new database server with some example data
|
|
25
|
+
When I delete a row from a database table
|
|
26
|
+
Then the deleted data should not be returned for subsequent queries
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
Given 'a new database server with some example data' do
|
|
2
|
+
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
When 'I delete a row from a database table' do
|
|
6
|
+
delete_chef 'Alison Holst'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
When 'I query the database' do
|
|
10
|
+
select_tv_chefs
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
When 'I insert a new row into a database table' do
|
|
14
|
+
insert_chef 'Ainsley Harriott'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
When 'I update a row in a database table' do
|
|
18
|
+
update_chef_name('Paula Deen', 'Paula Hiers Deen')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
Then 'the expected data should be returned' do
|
|
22
|
+
tv_chefs.must_equal(['Alison Holst', 'Nigella Lawson', 'Paula Deen'])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
Then 'the inserted data should be returned for subsequent queries' do
|
|
26
|
+
begin
|
|
27
|
+
select_tv_chefs.must_include 'Ainsley Harriott'
|
|
28
|
+
ensure
|
|
29
|
+
delete_chef 'Ainsley Harriott'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Then 'the deleted data should not be returned for subsequent queries' do
|
|
34
|
+
begin
|
|
35
|
+
select_tv_chefs.must_equal(['Nigella Lawson', 'Paula Deen'])
|
|
36
|
+
ensure
|
|
37
|
+
insert_chef 'Alison Holst'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
Then 'the updated data should be returned for subsequent queries' do
|
|
42
|
+
begin
|
|
43
|
+
select_tv_chefs.must_equal(['Alison Holst', 'Nigella Lawson', 'Paula Hiers Deen'])
|
|
44
|
+
ensure
|
|
45
|
+
update_chef_name('Paula Hiers Deen', 'Paula Deen')
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
def query(sql)
|
|
2
|
+
cmd_prefix = test_client_host ? "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@#{test_client_host}" : ''
|
|
3
|
+
result = %x{echo "#{sql}" | #{cmd_prefix} mysql --host=#{test_server_host} --user=#{test_user} --password=#{test_password} --skip-column-names #{test_database}}
|
|
4
|
+
assert $?.success?
|
|
5
|
+
result
|
|
6
|
+
end
|
|
7
|
+
alias :insert :query
|
|
8
|
+
alias :update :query
|
|
9
|
+
alias :delete :query
|
|
10
|
+
|
|
11
|
+
def delete_chef(name)
|
|
12
|
+
delete("DELETE FROM tv_chef WHERE name = '#{name}'")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def insert_chef(name)
|
|
16
|
+
insert("INSERT INTO tv_chef (name) VALUES('#{name}')")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def select_tv_chefs
|
|
20
|
+
@tv_chefs = query('SELECT name FROM tv_chef ORDER BY name').split("\n")
|
|
21
|
+
@tv_chefs
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_client_host
|
|
25
|
+
ENV['TEST_CLIENT_HOST']
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_database
|
|
29
|
+
'mysql_test'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_server_host
|
|
33
|
+
ENV['TEST_SERVER_HOST'] || 'localhost'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_password
|
|
37
|
+
'neshFiapog'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_user
|
|
41
|
+
'test_user'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def tv_chefs
|
|
45
|
+
@tv_chefs
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def update_chef_name(old_name, new_name)
|
|
49
|
+
update("UPDATE tv_chef SET name = '#{new_name}' WHERE name = '#{old_name}'")
|
|
50
|
+
end
|
|
51
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.html
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Description
|
|
2
|
+
===========
|
|
3
|
+
|
|
4
|
+
This cookbook defines acceptance tests for MySQL. It includes:
|
|
5
|
+
|
|
6
|
+
* A `features` sub-directory where the Cucumber features for the database
|
|
7
|
+
are defined.
|
|
8
|
+
|
|
9
|
+
* Creation of a simple test database for the tests to run against.
|
|
10
|
+
|
|
11
|
+
Usage
|
|
12
|
+
=====
|
|
13
|
+
|
|
14
|
+
Set environment variable `TEST_SERVER_HOST` to specify the MySQL server to
|
|
15
|
+
connect to. You can optionally set `TEST_CLIENT_HOST` which will test a client
|
|
16
|
+
install by running the same features from a remote client.
|
|
17
|
+
|
|
18
|
+
Requirements
|
|
19
|
+
============
|
|
20
|
+
|
|
21
|
+
## Cookbooks:
|
|
22
|
+
|
|
23
|
+
This cookbook depends on the `mysql` cookbook. It also uses the `database`
|
|
24
|
+
cookbook to create the test database and relies on the `yum` cookbook in order
|
|
25
|
+
to add the EPEL repository on RHEL-derived distributions.
|
|
26
|
+
|
|
27
|
+
## Platforms:
|
|
28
|
+
|
|
29
|
+
* Ubuntu
|
|
30
|
+
* CentOS
|
|
31
|
+
|
|
32
|
+
Attributes
|
|
33
|
+
==========
|
|
34
|
+
|
|
35
|
+
* `node['mysql_test']['database']` - The name of the test database to create.
|
|
36
|
+
* `node['mysql_test']['username']` - The username of the datbase user.
|
|
37
|
+
* `node['mysql_test']['password']` - The password of the database user.
|
|
38
|
+
|
|
39
|
+
Recipes
|
|
40
|
+
=======
|
|
41
|
+
|
|
42
|
+
* `client` - Simply includes `mysql::client` for a vanilla mysql client install.
|
|
43
|
+
* `server` - Includes `mysql::server` to install the server and configures a
|
|
44
|
+
test database.
|
|
45
|
+
|
|
46
|
+
License and Authors
|
|
47
|
+
===================
|
|
48
|
+
|
|
49
|
+
Author:: Andrew Crump <andrew@kotirisoftware.com>
|
|
50
|
+
|
|
51
|
+
Copyright:: 2012, Opscode, Inc
|
|
52
|
+
|
|
53
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
54
|
+
you may not use this file except in compliance with the License.
|
|
55
|
+
You may obtain a copy of the License at
|
|
56
|
+
|
|
57
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
58
|
+
|
|
59
|
+
Unless required by applicable law or agreed to in writing, software
|
|
60
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
61
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
62
|
+
See the License for the specific language governing permissions and
|
|
63
|
+
limitations under the License.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Cookbook Name:: mysql_test
|
|
3
|
+
# Attributes:: default
|
|
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
|
+
# Must be specified for chef-solo for successful re-converge
|
|
21
|
+
override['mysql']['server_root_password'] = 'ebrilvOpCethHienRoj7'
|
|
22
|
+
|
|
23
|
+
default['mysql_test']['database'] = 'mysql_test'
|
|
24
|
+
default['mysql_test']['username'] = 'test_user'
|
|
25
|
+
default['mysql_test']['password'] = 'neshFiapog'
|
|
26
|
+
|
|
27
|
+
override['mysql']['bind_address'] = 'localhost'
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
maintainer "Andrew Crump"
|
|
2
|
+
maintainer_email "andrew@kotirisoftware.com"
|
|
3
|
+
license "Apache 2.0"
|
|
4
|
+
description "Acceptance tests for mysql"
|
|
5
|
+
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
|
6
|
+
version "0.1.0"
|
|
7
|
+
|
|
8
|
+
depends "database"
|
|
9
|
+
depends "mysql"
|
|
10
|
+
depends "yum"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Cookbook Name:: mysql_test
|
|
3
|
+
# Recipe:: client
|
|
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
|
+
include_recipe "yum::epel" if platform?('centos')
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Cookbook Name:: mysql_test
|
|
3
|
+
# Recipe:: server
|
|
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
|
+
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)
|
|
34
|
+
|
|
35
|
+
include_recipe "yum::epel" if platform?('centos')
|
|
36
|
+
|
|
37
|
+
file "/etc/sysconfig/network" do
|
|
38
|
+
content "NETWORKING=yes"
|
|
39
|
+
action :create_if_missing
|
|
40
|
+
only_if { platform?('amazon', 'centos', 'fedora', 'redhat', 'scientific') }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
include_recipe 'mysql::server'
|
|
44
|
+
|
|
45
|
+
mysql_connection = {:host => "localhost", :username => 'root',
|
|
46
|
+
:password => node['mysql']['server_root_password']}
|
|
47
|
+
|
|
48
|
+
mysql_database node['mysql_test']['database'] do
|
|
49
|
+
connection mysql_connection
|
|
50
|
+
action :create
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
mysql_database_user node['mysql_test']['username'] do
|
|
54
|
+
connection mysql_connection
|
|
55
|
+
password node['mysql_test']['password']
|
|
56
|
+
database_name node['mysql_test']['database']
|
|
57
|
+
host 'localhost'
|
|
58
|
+
privileges [:select,:update,:insert, :delete]
|
|
59
|
+
action [:create, :grant]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
mysql_conn_args = "--user=root --password=#{node['mysql']['server_root_password']}"
|
|
63
|
+
|
|
64
|
+
execute 'create-sample-data' do
|
|
65
|
+
command %Q{mysql #{mysql_conn_args} #{node['mysql_test']['database']} <<EOF
|
|
66
|
+
CREATE TABLE tv_chef (name VARCHAR(32) PRIMARY KEY);
|
|
67
|
+
INSERT INTO tv_chef (name) VALUES ('Alison Holst');
|
|
68
|
+
INSERT INTO tv_chef (name) VALUES ('Nigella Lawson');
|
|
69
|
+
INSERT INTO tv_chef (name) VALUES ('Paula Deen');
|
|
70
|
+
EOF}
|
|
71
|
+
not_if "echo 'SELECT count(name) FROM tv_chef' | mysql #{mysql_conn_args} --skip-column-names #{node['mysql_test']['database']} | grep '^3$'"
|
|
72
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
If you would like to contribute, please open a ticket in JIRA:
|
|
2
|
+
|
|
3
|
+
* http://tickets.opscode.com
|
|
4
|
+
|
|
5
|
+
Create the ticket in the COOK project and use the cookbook name as the
|
|
6
|
+
component.
|
|
7
|
+
|
|
8
|
+
For all code contributions, we ask that contributors sign a
|
|
9
|
+
contributor license agreement (CLA). Instructions may be found here:
|
|
10
|
+
|
|
11
|
+
* http://wiki.opscode.com/display/chef/How+to+Contribute
|
|
12
|
+
|
|
13
|
+
When contributing changes to individual cookbooks, please do not
|
|
14
|
+
modify the version number in the metadata.rb. Also please do not
|
|
15
|
+
update the CHANGELOG.md for a new version. Not all changes to a
|
|
16
|
+
cookbook may be merged and released in the same versions. Opscode will
|
|
17
|
+
handle the version updates during the release process. You are welcome
|
|
18
|
+
to correct typos or otherwise make updates to documentation in the
|
|
19
|
+
README.
|
|
20
|
+
|
|
21
|
+
If a contribution adds new platforms or platform versions, indicate
|
|
22
|
+
such in the body of the commit message(s), and update the relevant
|
|
23
|
+
COOK ticket. When writing commit messages, it is helpful for others if
|
|
24
|
+
you indicate the COOK ticket. For example:
|
|
25
|
+
|
|
26
|
+
git commit -m '[COOK-1041] Updated pool resource to correctly delete.'
|
|
27
|
+
|
|
28
|
+
In the ticket itself, it is also helpful if you include log output of
|
|
29
|
+
a successful Chef run, but this is not absolutely required.
|