elzar 0.0.1

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.
Files changed (156) hide show
  1. data/.chef/knife.rb +3 -0
  2. data/.gitignore +1 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +96 -0
  6. data/README.md +42 -0
  7. data/Rakefile +1 -0
  8. data/Vagrantfile +16 -0
  9. data/cookbooks/.gitkeep +0 -0
  10. data/cookbooks/apt/README.md +122 -0
  11. data/cookbooks/apt/files/default/apt-cacher +9 -0
  12. data/cookbooks/apt/files/default/apt-cacher.conf +144 -0
  13. data/cookbooks/apt/files/default/apt-proxy-v2.conf +50 -0
  14. data/cookbooks/apt/metadata.rb +13 -0
  15. data/cookbooks/apt/providers/repository.rb +73 -0
  16. data/cookbooks/apt/recipes/cacher-client.rb +44 -0
  17. data/cookbooks/apt/recipes/cacher.rb +45 -0
  18. data/cookbooks/apt/recipes/default.rb +50 -0
  19. data/cookbooks/apt/resources/repository.rb +30 -0
  20. data/cookbooks/build-essential/README.md +24 -0
  21. data/cookbooks/build-essential/metadata.rb +10 -0
  22. data/cookbooks/build-essential/recipes/default.rb +45 -0
  23. data/cookbooks/database/README.md +403 -0
  24. data/cookbooks/database/libraries/provider_database_mysql.rb +97 -0
  25. data/cookbooks/database/libraries/provider_database_mysql_user.rb +76 -0
  26. data/cookbooks/database/libraries/provider_database_postgresql.rb +126 -0
  27. data/cookbooks/database/libraries/provider_database_postgresql_user.rb +78 -0
  28. data/cookbooks/database/libraries/provider_database_sql_server.rb +109 -0
  29. data/cookbooks/database/libraries/provider_database_sql_server_user.rb +106 -0
  30. data/cookbooks/database/libraries/resource_database.rb +111 -0
  31. data/cookbooks/database/libraries/resource_database_user.rb +90 -0
  32. data/cookbooks/database/libraries/resource_mysql_database.rb +34 -0
  33. data/cookbooks/database/libraries/resource_mysql_database_user.rb +34 -0
  34. data/cookbooks/database/libraries/resource_postgresql_database.rb +35 -0
  35. data/cookbooks/database/libraries/resource_postgresql_database_user.rb +35 -0
  36. data/cookbooks/database/libraries/resource_sql_server_database.rb +34 -0
  37. data/cookbooks/database/libraries/resource_sql_server_database_user.rb +34 -0
  38. data/cookbooks/database/metadata.rb +21 -0
  39. data/cookbooks/database/recipes/default.rb +20 -0
  40. data/cookbooks/database/recipes/ebs_backup.rb +89 -0
  41. data/cookbooks/database/recipes/ebs_volume.rb +196 -0
  42. data/cookbooks/database/recipes/master.rb +78 -0
  43. data/cookbooks/database/recipes/snapshot.rb +62 -0
  44. data/cookbooks/database/templates/default/app_grants.sql.erb +8 -0
  45. data/cookbooks/database/templates/default/aws_config.erb +3 -0
  46. data/cookbooks/database/templates/default/chef-solo-database-snapshot.cron.erb +10 -0
  47. data/cookbooks/database/templates/default/chef-solo-database-snapshot.json.erb +1 -0
  48. data/cookbooks/database/templates/default/chef-solo-database-snapshot.rb.erb +6 -0
  49. data/cookbooks/database/templates/default/ebs-backup-cron.erb +2 -0
  50. data/cookbooks/database/templates/default/ebs-db-backup.sh.erb +8 -0
  51. data/cookbooks/database/templates/default/ebs-db-restore.sh.erb +10 -0
  52. data/cookbooks/database/templates/default/s3cfg.erb +27 -0
  53. data/cookbooks/mysql/README.md +148 -0
  54. data/cookbooks/mysql/attributes/server.rb +68 -0
  55. data/cookbooks/mysql/libraries/database.rb +19 -0
  56. data/cookbooks/mysql/libraries/helpers.rb +33 -0
  57. data/cookbooks/mysql/metadata.rb +90 -0
  58. data/cookbooks/mysql/recipes/client.rb +51 -0
  59. data/cookbooks/mysql/recipes/default.rb +20 -0
  60. data/cookbooks/mysql/recipes/server.rb +133 -0
  61. data/cookbooks/mysql/recipes/server_ec2.rb +49 -0
  62. data/cookbooks/mysql/templates/default/debian.cnf.erb +12 -0
  63. data/cookbooks/mysql/templates/default/grants.sql.erb +15 -0
  64. data/cookbooks/mysql/templates/default/my.cnf.erb +176 -0
  65. data/cookbooks/mysql/templates/default/mysql-server.seed.erb +10 -0
  66. data/cookbooks/mysql/templates/default/port_mysql.erb +3 -0
  67. data/cookbooks/openssl/README.md +37 -0
  68. data/cookbooks/openssl/libraries/secure_password.rb +37 -0
  69. data/cookbooks/openssl/metadata.rb +8 -0
  70. data/cookbooks/openssl/recipes/default.rb +19 -0
  71. data/cookbooks/passenger_enterprise/README.rdoc +8 -0
  72. data/cookbooks/passenger_enterprise/attributes/default.rb +28 -0
  73. data/cookbooks/passenger_enterprise/cc.gemspec +36 -0
  74. data/cookbooks/passenger_enterprise/metadata.json +44 -0
  75. data/cookbooks/passenger_enterprise/metadata.rb +16 -0
  76. data/cookbooks/passenger_enterprise/recipes/apache2.rb +54 -0
  77. data/cookbooks/passenger_enterprise/recipes/default.rb +30 -0
  78. data/cookbooks/passenger_enterprise/recipes/nginx.rb +50 -0
  79. data/cookbooks/passenger_enterprise/templates/default/passenger.conf.erb +2 -0
  80. data/cookbooks/passenger_enterprise/templates/default/passenger.load.erb +1 -0
  81. data/cookbooks/passenger_enterprise/templates/default/passenger_nginx.conf.erb +2 -0
  82. data/cookbooks/ruby_enterprise/README.rdoc +55 -0
  83. data/cookbooks/ruby_enterprise/attributes/default.rb +33 -0
  84. data/cookbooks/ruby_enterprise/cc.gemspec +36 -0
  85. data/cookbooks/ruby_enterprise/definitions/ree_gem.rb +28 -0
  86. data/cookbooks/ruby_enterprise/metadata.json +45 -0
  87. data/cookbooks/ruby_enterprise/metadata.rb +13 -0
  88. data/cookbooks/ruby_enterprise/recipes/default.rb +67 -0
  89. data/data_bags/deploy/authorized_keys.json +9 -0
  90. data/dna.json +25 -0
  91. data/elzar.gemspec +22 -0
  92. data/lib/elzar.rb +21 -0
  93. data/lib/elzar/assistant.rb +77 -0
  94. data/lib/elzar/chef_dna.rb +48 -0
  95. data/lib/elzar/template.rb +24 -0
  96. data/lib/elzar/templates/Gemfile +11 -0
  97. data/lib/elzar/templates/Vagrantfile.erb +16 -0
  98. data/lib/elzar/templates/dna.json +25 -0
  99. data/lib/elzar/templates/solo.rb.erb +6 -0
  100. data/lib/elzar/version.rb +3 -0
  101. data/roles/enterprise_appstack.rb +4 -0
  102. data/roles/plumbing.rb +11 -0
  103. data/roles/postgres_database.rb +4 -0
  104. data/roles/ruby_appstack.rb +4 -0
  105. data/script/install_cookbook +6 -0
  106. data/script/new_cookbook +5 -0
  107. data/site-cookbooks/.gitkeep +0 -0
  108. data/site-cookbooks/curl/README.md +17 -0
  109. data/site-cookbooks/curl/metadata.rb +6 -0
  110. data/site-cookbooks/curl/recipes/default.rb +11 -0
  111. data/site-cookbooks/nginx/CHANGELOG.md +11 -0
  112. data/site-cookbooks/nginx/CONTRIBUTING +29 -0
  113. data/site-cookbooks/nginx/LICENSE +201 -0
  114. data/site-cookbooks/nginx/README.md +76 -0
  115. data/site-cookbooks/nginx/attributes/default.rb +65 -0
  116. data/site-cookbooks/nginx/definitions/nginx_site.rb +35 -0
  117. data/site-cookbooks/nginx/files/default/mime.types +73 -0
  118. data/site-cookbooks/nginx/metadata.rb +89 -0
  119. data/site-cookbooks/nginx/recipes/default.rb +57 -0
  120. data/site-cookbooks/nginx/recipes/source.rb +126 -0
  121. data/site-cookbooks/nginx/templates/default/default-site.erb +11 -0
  122. data/site-cookbooks/nginx/templates/default/nginx.conf.erb +42 -0
  123. data/site-cookbooks/nginx/templates/default/nginx.init.erb +91 -0
  124. data/site-cookbooks/nginx/templates/default/nxdissite.erb +29 -0
  125. data/site-cookbooks/nginx/templates/default/nxensite.erb +38 -0
  126. data/site-cookbooks/passenger/README.md +12 -0
  127. data/site-cookbooks/passenger/attributes/default.rb +3 -0
  128. data/site-cookbooks/passenger/metadata.rb +6 -0
  129. data/site-cookbooks/passenger/recipes/default.rb +39 -0
  130. data/site-cookbooks/passenger/templates/default/passenger_nginx.conf.erb +2 -0
  131. data/site-cookbooks/postgresql/README.md +150 -0
  132. data/site-cookbooks/postgresql/attributes/default.rb +72 -0
  133. data/site-cookbooks/postgresql/metadata.rb +21 -0
  134. data/site-cookbooks/postgresql/recipes/client.rb +40 -0
  135. data/site-cookbooks/postgresql/recipes/default.rb +20 -0
  136. data/site-cookbooks/postgresql/recipes/server.rb +74 -0
  137. data/site-cookbooks/postgresql/recipes/server_debian.rb +62 -0
  138. data/site-cookbooks/postgresql/recipes/server_redhat.rb +82 -0
  139. data/site-cookbooks/postgresql/templates/default/debian.postgresql.conf.erb +499 -0
  140. data/site-cookbooks/postgresql/templates/default/pg_hba.conf.erb +83 -0
  141. data/site-cookbooks/postgresql/templates/default/redhat.postgresql.conf.erb +501 -0
  142. data/site-cookbooks/rails_app/README.md +15 -0
  143. data/site-cookbooks/rails_app/attributes/default.rb +2 -0
  144. data/site-cookbooks/rails_app/files/default/sudoers +26 -0
  145. data/site-cookbooks/rails_app/metadata.rb +6 -0
  146. data/site-cookbooks/rails_app/recipes/default.rb +143 -0
  147. data/site-cookbooks/rails_app/recipes/system_libraries.rb +12 -0
  148. data/site-cookbooks/rails_app/templates/default/pg_hba.conf.erb +84 -0
  149. data/site-cookbooks/rails_app/templates/default/rails_app_nginx.erb +10 -0
  150. data/site-cookbooks/ruby/README.md +12 -0
  151. data/site-cookbooks/ruby/attributes/default.rb +6 -0
  152. data/site-cookbooks/ruby/metadata.rb +6 -0
  153. data/site-cookbooks/ruby/recipes/default.rb +54 -0
  154. data/solo.rb +7 -0
  155. data/upgrade-chef.sh +8 -0
  156. metadata +272 -0
@@ -0,0 +1,62 @@
1
+ #
2
+ # Author:: AJ Christensen (<aj@opscode.com>)
3
+ # Cookbook Name:: database
4
+ # Recipe:: snapshot
5
+ #
6
+ # Copyright 2009-2010, Opscode, Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ include_recipe "aws"
21
+ include_recipe "xfs"
22
+
23
+ %w{ebs_vol_dev db_role app_environment username password aws_access_key_id aws_secret_access_key snapshots_to_keep volume_id}.collect do |key|
24
+ Chef::Application.fatal!("Required db_snapshot configuration #{key} not found.", -47) unless node.db_snapshot.has_key? key
25
+ end
26
+
27
+ connection_info = {:host => localhost, :username => node.db_snapshot.username, :password => node.db_snapshot.password}
28
+
29
+ mysql_database "locking tables for #{node.db_snapshot.app_environment}" do
30
+ connection connection_info
31
+ sql "flush tables with read lock"
32
+ action :query
33
+ end
34
+
35
+ execute "xfs freeze" do
36
+ command "xfs_freeze -f #{node.db_snapshot.ebs_vol_dev}"
37
+ end
38
+
39
+ aws_ebs_volume "#{node.db_snapshot.db_role.first}_#{node.db_snapshot.app_environment}" do
40
+ aws_access_key node.db_snapshot.aws_access_key_id
41
+ aws_secret_access_key node.db_snapshot.aws_secret_access_key
42
+ size 50
43
+ device node.db_snapshot.ebs_vol_dev
44
+ snapshots_to_keep node.db_snapshot.snapshots_to_keep
45
+ action :snapshot
46
+ volume_id node.db_snapshot.volume_id
47
+ ignore_failure true # if this fails, continue to unfreeze and unlock
48
+ end
49
+
50
+ execute "xfs unfreeze" do
51
+ command "xfs_freeze -u #{node.db_snapshot.ebs_vol_dev}"
52
+ end
53
+
54
+ mysql_database "unflushing tables for #{node.db_snapshot.app_environment}" do
55
+ connection connection_info
56
+ sql "unlock tables"
57
+ action :query
58
+ end
59
+
60
+ aws_ebs_volume "#{node.db_snapshot.db_role.first}_#{node.db_snapshot.app_environment}" do
61
+ action :prune
62
+ end
@@ -0,0 +1,8 @@
1
+ # Generated by Chef. Local modifications will be overwritten.
2
+ <% @db_info.each do |env,db| -%>
3
+ # Privileges for databases in <%= env %>
4
+ GRANT ALL ON <%= db['database'] %>.* TO '<%= db['username'] %>'@'localhost' IDENTIFIED BY '<%= db['password'] %>';
5
+ GRANT ALL ON <%= db['database'] %>.* TO '<%= db['username'] %>'@'<%= node['fqdn'] %>' IDENTIFIED BY '<%= db['password'] %>';
6
+ GRANT ALL ON <%= db['database'] %>.* TO '<%= db['username'] %>'@'%' IDENTIFIED BY '<%= db['password'] %>';
7
+ <% end -%>
8
+ flush privileges;
@@ -0,0 +1,3 @@
1
+ AWS_ACCESS_KEY_ID=<%= @access_key %>
2
+ AWS_SECRET_ACCESS_KEY=<%= @secret_key %>
3
+ BUCKET_BASE_NAME=db-backups
@@ -0,0 +1,10 @@
1
+ # Managed by Chef
2
+ # m h dom mon dow command
3
+ # Keep 1 day of hourly, 7 days of daily, 4 weeks of weekly and 1 year of monthly snapshots
4
+ PATH=/usr/sbin:/usr/bin:/sbin:/bin
5
+ <% cs = "chef-solo -j #{@json_attribs} -c #{@config_file}" %>
6
+ 00 * * * * root <%= cs %>
7
+ 15 0 * * * root <%= cs %>
8
+ 30 0 * * 0 root <%= cs %>
9
+ 45 0 1 * * root <%= cs %>
10
+
@@ -0,0 +1 @@
1
+ <%= require 'json'; JSON.pretty_generate(@output) %>
@@ -0,0 +1,6 @@
1
+ executable_path ENV['PATH'] ? ENV['PATH'].split(File::PATH_SEPARATOR) : []
2
+ <% if @cookbook_path.is_a? Array %>
3
+ cookbook_path [ <%= @cookbook_path.collect { |cb| "\"#{cb}\""}.join(", ") -%> ]
4
+ <% else %>
5
+ cookbook_path "<%= @cookbook_path -%>"
6
+ <% end %>
@@ -0,0 +1,2 @@
1
+ # Chef Name: ebs_db_backup
2
+ 15 0 * * * root /usr/local/bin/db-backup.sh
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ #
3
+ # Back up a MySQL database via EBS snapshot
4
+
5
+ . /mnt/aws-config/config
6
+
7
+ /opt/ec2_mysql/bin/ec2_mysql -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY -p '<%= @mysql_root_passwd %>' -k 5 master
8
+ echo "done"
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ #
3
+ # Restore a MySQL database from EBS
4
+
5
+ mkdir -p /mnt/restore
6
+
7
+ . /mnt/aws-config/config
8
+
9
+ /opt/ec2_mysql/bin/ec2_mysql -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY -p '<%= @mysql_root_password %>' -v '<%= @ebs_vol_id %>' -m /mnt/restore -d <%= @mysql_device %> -r <%= @mysql_device %> -l debug -n slave
10
+ echo "done"
@@ -0,0 +1,27 @@
1
+ [default]
2
+ access_key = <%= @aws['aws_access_key_id'] %>
3
+ acl_public = False
4
+ bucket_location = US
5
+ debug_syncmatch = False
6
+ default_mime_type = binary/octet-stream
7
+ delete_removed = False
8
+ dry_run = False
9
+ encrypt = False
10
+ force = False
11
+ gpg_command = /usr/bin/gpg
12
+ gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
13
+ gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
14
+ gpg_passphrase =
15
+ guess_mime_type = False
16
+ host_base = s3.amazonaws.com
17
+ host_bucket = %(bucket)s.s3.amazonaws.com
18
+ human_readable_sizes = False
19
+ preserve_attrs = True
20
+ proxy_host =
21
+ proxy_port = 0
22
+ recv_chunk = 4096
23
+ secret_key = <%= @aws['aws_secret_access_key'] %>
24
+ send_chunk = 4096
25
+ simpledb_host = sdb.amazonaws.com
26
+ use_https = True
27
+ verbosity = WARNING
@@ -0,0 +1,148 @@
1
+ Description
2
+ ===========
3
+
4
+ Installs and configures MySQL client or server.
5
+
6
+ Requirements
7
+ ============
8
+
9
+ Platform
10
+ --------
11
+
12
+ * Debian, Ubuntu
13
+ * CentOS, Red Hat, Fedora
14
+
15
+ Tested on:
16
+
17
+ * Debian 5.0
18
+ * Ubuntu 10.04
19
+ * CentOS 5.5
20
+
21
+ Cookbooks
22
+ ---------
23
+
24
+ Requires Opscode's openssl cookbook for secure password generation.
25
+
26
+ Requires a C compiler and Ruby development package in order to build mysql gem with native extensions. On Debian and Ubuntu systems this is satisfied by installing the "build-essential" and "ruby-dev" packages before running Chef. See USAGE below for information on how to handle this during a Chef run.
27
+
28
+ Resources and Providers
29
+ =======================
30
+
31
+ The LWRP that used to ship as part of this cookbook has been refactored into the [database](https://github.com/opscode/cookbooks/tree/master/database) cookbook. Please see the README for details on updated usage.
32
+
33
+ Attributes
34
+ ==========
35
+
36
+ * `mysql['server_root_password']` - Set the server's root password with this, default is a randomly generated password with `OpenSSL::Random.random_bytes`.
37
+ * `mysql['server_repl_password']` - Set the replication user 'repl' password with this, default is a randomly generated password with `OpenSSL::Random.random_bytes`.
38
+ * `mysql['server_debian_password']` - Set the debian-sys-maint user password with this, default is a randomly generated password with `OpenSSL::Random.random_bytes`.
39
+ * `mysql['bind_address']` - Listen address for MySQLd, default is node's ipaddress.
40
+ * `mysql['data_dir']` - Location for mysql data directory, default is "/var/lib/mysql"
41
+ * `mysql['conf_dir']` - Location for mysql conf directory, default is "/etc/mysql"
42
+ * `mysql['ec2_path']` - location of mysql data_dir on EC2 nodes, default "/mnt/mysql"
43
+
44
+ Performance tuning attributes, each corresponds to the same-named parameter in my.cnf; default values listed
45
+
46
+ * `mysql['tunable']['key_buffer']` = "250M"
47
+ * `mysql['tunable']['max_connections']` = "800"
48
+ * `mysql['tunable']['wait_timeout']` = "180"
49
+ * `mysql['tunable']['net_write_timeout']` = "30"
50
+ * `mysql['tunable']['net_write_timeout']` = "30"
51
+ * `mysql['tunable']['back_log']` = "128"
52
+ * `mysql['tunable']['table_cache']` = "128"
53
+ * `mysql['tunable']['max_heap_table_size']` = "32M"
54
+ * `mysql['tunable']['expire_logs_days']` = "10"
55
+ * `mysql['tunable']['max_binlog_size']` = "100M"
56
+
57
+ Usage
58
+ =====
59
+
60
+ On client nodes,
61
+
62
+ include_recipe "mysql::client"
63
+
64
+ This will install the MySQL client libraries and development headers on the system. It will also install the Ruby Gem `mysql`, so that the cookbook's LWRP (above) can be used. This is done during the compile-phase of the Chef run. On platforms that are known to have a native package (currently Debian, Ubuntu, Red hat, Centos, Fedora and SUSE), the package will be installed. Other platforms will use the RubyGem.
65
+
66
+ This creates a resource object for the package and does the installation before other recipes are parsed. You'll need to have the C compiler and such (ie, build-essential on Ubuntu) before running the recipes, but we already do that when installing Chef :-).
67
+
68
+ On server nodes,
69
+
70
+ include_recipe "mysql::server"
71
+
72
+ On Debian and Ubuntu, this will preseed the mysql-server package with the randomly generated root password from the attributes file. On other platforms, it simply installs the required packages. It will also create an SQL file, /etc/mysql/grants.sql, that will be used to set up grants for the root, repl and debian-sys-maint users.
73
+
74
+ On EC2 nodes,
75
+
76
+ include_recipe "mysql::server_ec2"
77
+
78
+ When the `ec2_path` doesn't exist we look for a mounted filesystem (eg, EBS) and move the data_dir there.
79
+
80
+ The client recipe is already included by server and 'default' recipes.
81
+
82
+ For more infromation on the compile vs execution phase of a Chef run:
83
+
84
+ * http://wiki.opscode.com/display/chef/Anatomy+of+a+Chef+Run
85
+
86
+ Changes/Roadmap
87
+ ===============
88
+
89
+ ### v1.2.2
90
+
91
+ * [COOK-826] mysql::server recipe doesn't quote password string
92
+ * [COOK-834] Add 'scientific' and 'amazon' platforms to mysql cookbook
93
+
94
+ ### v1.2.1
95
+
96
+ * [COOK-644] Mysql client cookbook 'package missing' error message is confusing
97
+ * [COOK-645] RHEL6/CentOS6 - mysql cookbook contains 'skip-federated' directive which is unsupported on MySQL 5.1
98
+
99
+ ### v1.2.0
100
+
101
+ * [COOK-684] remove mysql_database LWRP
102
+
103
+ ### v1.0.8:
104
+
105
+ * [COOK-633] ensure "cloud" attribute is available
106
+
107
+ ### v1.0.7:
108
+
109
+ * [COOK-614] expose all mysql tunable settings in config
110
+ * [COOK-617] bind to private IP if available
111
+
112
+ ### v1.0.6:
113
+
114
+ * [COOK-605] install mysql-client package on ubuntu/debian
115
+
116
+ ### v1.0.5:
117
+
118
+ * [COOK-465] allow optional remote root connections to mysql
119
+ * [COOK-455] improve platform version handling
120
+ * externalize conf_dir attribute for easier cross platform support
121
+ * change datadir attribute to data_dir for consistency
122
+
123
+ ### v1.0.4:
124
+
125
+ * fix regressions on debian platform
126
+ * [COOK-578] wrap root password in quotes
127
+ * [COOK-562] expose all tunables in my.cnf
128
+
129
+ License and Author
130
+ ==================
131
+
132
+ Author:: Joshua Timberman (<joshua@opscode.com>)
133
+ Author:: AJ Christensen (<aj@opscode.com>)
134
+ Author:: Seth Chisamore (<schisamo@opscode.com>)
135
+
136
+ Copyright:: 2009-2011 Opscode, Inc
137
+
138
+ Licensed under the Apache License, Version 2.0 (the "License");
139
+ you may not use this file except in compliance with the License.
140
+ You may obtain a copy of the License at
141
+
142
+ http://www.apache.org/licenses/LICENSE-2.0
143
+
144
+ Unless required by applicable law or agreed to in writing, software
145
+ distributed under the License is distributed on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
147
+ See the License for the specific language governing permissions and
148
+ limitations under the License.
@@ -0,0 +1,68 @@
1
+ #
2
+ # Cookbook Name:: mysql
3
+ # Attributes:: server
4
+ #
5
+ # Copyright 2008-2009, 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
+ default['mysql']['bind_address'] = attribute?('cloud') ? cloud['local_ipv4'] : ipaddress
21
+ default['mysql']['data_dir'] = "/var/lib/mysql"
22
+
23
+ case node["platform"]
24
+ when "centos", "redhat", "fedora", "suse", "scientific", "amazon"
25
+ set['mysql']['conf_dir'] = '/etc'
26
+ set['mysql']['socket'] = "/var/lib/mysql/mysql.sock"
27
+ set['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
28
+ set['mysql']['old_passwords'] = 1
29
+ else
30
+ set['mysql']['conf_dir'] = '/etc/mysql'
31
+ set['mysql']['socket'] = "/var/run/mysqld/mysqld.sock"
32
+ set['mysql']['pid_file'] = "/var/run/mysqld/mysqld.pid"
33
+ set['mysql']['old_passwords'] = 0
34
+ end
35
+
36
+ if attribute?('ec2')
37
+ default['mysql']['ec2_path'] = "/mnt/mysql"
38
+ default['mysql']['ebs_vol_dev'] = "/dev/sdi"
39
+ default['mysql']['ebs_vol_size'] = 50
40
+ end
41
+
42
+ default['mysql']['allow_remote_root'] = false
43
+ default['mysql']['tunable']['back_log'] = "128"
44
+ default['mysql']['tunable']['key_buffer'] = "256M"
45
+ default['mysql']['tunable']['max_allowed_packet'] = "16M"
46
+ default['mysql']['tunable']['max_connections'] = "800"
47
+ default['mysql']['tunable']['max_heap_table_size'] = "32M"
48
+ default['mysql']['tunable']['myisam_recover'] = "BACKUP"
49
+ default['mysql']['tunable']['net_read_timeout'] = "30"
50
+ default['mysql']['tunable']['net_write_timeout'] = "30"
51
+ default['mysql']['tunable']['table_cache'] = "128"
52
+ default['mysql']['tunable']['table_open_cache'] = "128"
53
+ default['mysql']['tunable']['thread_cache'] = "128"
54
+ default['mysql']['tunable']['thread_cache_size'] = 8
55
+ default['mysql']['tunable']['thread_concurrency'] = 10
56
+ default['mysql']['tunable']['thread_stack'] = "256K"
57
+ default['mysql']['tunable']['wait_timeout'] = "180"
58
+
59
+ default['mysql']['tunable']['query_cache_limit'] = "1M"
60
+ default['mysql']['tunable']['query_cache_size'] = "16M"
61
+
62
+ default['mysql']['tunable']['log_slow_queries'] = "/var/log/mysql/slow.log"
63
+ default['mysql']['tunable']['long_query_time'] = 2
64
+
65
+ default['mysql']['tunable']['expire_logs_days'] = 10
66
+ default['mysql']['tunable']['max_binlog_size'] = "100M"
67
+
68
+ default['mysql']['tunable']['innodb_buffer_pool_size'] = "256M"
@@ -0,0 +1,19 @@
1
+ begin
2
+ require 'mysql'
3
+ rescue LoadError
4
+ Chef::Log.info("Missing gem 'mysql'")
5
+ end
6
+
7
+ module Opscode
8
+ module Mysql
9
+ module Database
10
+ def db
11
+ @db ||= ::Mysql.new new_resource.host, new_resource.username, new_resource.password
12
+ end
13
+ def close
14
+ @db.close rescue nil
15
+ @db = nil
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@opscode.com>)
3
+ # Copyright:: Copyright (c) 2011 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ module Opscode
20
+ module Mysql
21
+ module Helpers
22
+
23
+ def debian_before_squeeze?
24
+ platform?("debian") && (node.platform_version.to_f < 6.0)
25
+ end
26
+
27
+ def ubuntu_before_lucid?
28
+ platform?("ubuntu") && (node.platform_version.to_f < 10.0)
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,90 @@
1
+ maintainer "Opscode, Inc."
2
+ maintainer_email "cookbooks@opscode.com"
3
+ license "Apache 2.0"
4
+ description "Installs and configures mysql for client or server"
5
+ long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
6
+ version "1.2.2"
7
+ recipe "mysql", "Includes the client recipe to configure a client"
8
+ recipe "mysql::client", "Installs packages required for mysql clients using run_action magic"
9
+ recipe "mysql::server", "Installs packages required for mysql servers w/o manual intervention"
10
+ recipe "mysql::server_ec2", "Performs EC2-specific mountpoint manipulation"
11
+
12
+ %w{ debian ubuntu centos suse fedora redhat scientific amazon }.each do |os|
13
+ supports os
14
+ end
15
+
16
+ depends "openssl"
17
+
18
+ attribute "mysql/server_root_password",
19
+ :display_name => "MySQL Server Root Password",
20
+ :description => "Randomly generated password for the mysqld root user",
21
+ :default => "randomly generated"
22
+
23
+ attribute "mysql/bind_address",
24
+ :display_name => "MySQL Bind Address",
25
+ :description => "Address that mysqld should listen on",
26
+ :default => "ipaddress"
27
+
28
+ attribute "mysql/data_dir",
29
+ :display_name => "MySQL Data Directory",
30
+ :description => "Location of mysql databases",
31
+ :default => "/var/lib/mysql"
32
+
33
+ attribute "mysql/conf_dir",
34
+ :display_name => "MySQL Conf Directory",
35
+ :description => "Location of mysql conf files",
36
+ :default => "/etc/mysql"
37
+
38
+ attribute "mysql/ec2_path",
39
+ :display_name => "MySQL EC2 Path",
40
+ :description => "Location of mysql directory on EC2 instance EBS volumes",
41
+ :default => "/mnt/mysql"
42
+
43
+ attribute "mysql/tunable",
44
+ :display_name => "MySQL Tunables",
45
+ :description => "Hash of MySQL tunable attributes",
46
+ :type => "hash"
47
+
48
+ attribute "mysql/tunable/key_buffer",
49
+ :display_name => "MySQL Tuntable Key Buffer",
50
+ :default => "250M"
51
+
52
+ attribute "mysql/tunable/max_connections",
53
+ :display_name => "MySQL Tunable Max Connections",
54
+ :default => "800"
55
+
56
+ attribute "mysql/tunable/wait_timeout",
57
+ :display_name => "MySQL Tunable Wait Timeout",
58
+ :default => "180"
59
+
60
+ attribute "mysql/tunable/net_read_timeout",
61
+ :display_name => "MySQL Tunable Net Read Timeout",
62
+ :default => "30"
63
+
64
+ attribute "mysql/tunable/net_write_timeout",
65
+ :display_name => "MySQL Tunable Net Write Timeout",
66
+ :default => "30"
67
+
68
+ attribute "mysql/tunable/back_log",
69
+ :display_name => "MySQL Tunable Back Log",
70
+ :default => "128"
71
+
72
+ attribute "mysql/tunable/table_cache",
73
+ :display_name => "MySQL Tunable Table Cache for MySQL < 5.1.3",
74
+ :default => "128"
75
+
76
+ attribute "mysql/tunable/table_open_cache",
77
+ :display_name => "MySQL Tunable Table Cache for MySQL >= 5.1.3",
78
+ :default => "128"
79
+
80
+ attribute "mysql/tunable/max_heap_table_size",
81
+ :display_name => "MySQL Tunable Max Heap Table Size",
82
+ :default => "32M"
83
+
84
+ attribute "mysql/tunable/expire_logs_days",
85
+ :display_name => "MySQL Exipre Log Days",
86
+ :default => "10"
87
+
88
+ attribute "mysql/tunable/max_binlog_size",
89
+ :display_name => "MySQL Max Binlog Size",
90
+ :default => "100M"