rubber 1.0.2
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/CHANGELOG +39 -0
- data/COPYING +339 -0
- data/README +6 -0
- data/TODO +11 -0
- data/VERSION +1 -0
- data/bin/vulcanize +41 -0
- data/generators/vulcanize/USAGE +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +7 -0
- data/generators/vulcanize/templates/apache/templates.yml +1 -0
- data/generators/vulcanize/templates/base/Capfile +14 -0
- data/generators/vulcanize/templates/base/config/deploy.rb +55 -0
- data/generators/vulcanize/templates/base/config/rubber/common/crontab +16 -0
- data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +9 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +104 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -0
- data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
- data/generators/vulcanize/templates/base/script/cron-rake +18 -0
- data/generators/vulcanize/templates/base/script/cron-runner +18 -0
- data/generators/vulcanize/templates/base/script/cron-sh +67 -0
- data/generators/vulcanize/templates/base/templates.yml +1 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +10 -0
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
- data/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
- data/generators/vulcanize/templates/cruise/templates.yml +1 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +6 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +17 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
- data/generators/vulcanize/templates/haproxy/templates.yml +1 -0
- data/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
- data/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
- data/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
- data/generators/vulcanize/templates/memcached/templates.yml +1 -0
- data/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
- data/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
- data/generators/vulcanize/templates/mongrel/templates.yml +1 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +251 -0
- data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +32 -0
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
- data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
- data/generators/vulcanize/templates/monit/templates.yml +1 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +80 -0
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
- data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +57 -0
- data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
- data/generators/vulcanize/templates/munin/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +11 -0
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +156 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +167 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +46 -0
- data/generators/vulcanize/templates/mysql/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +173 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
- data/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
- data/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
- data/generators/vulcanize/templates/nginx/templates.yml +1 -0
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +37 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +12 -0
- data/generators/vulcanize/templates/passenger/templates.yml +1 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +10 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
- data/generators/vulcanize/templates/sphinx/templates.yml +1 -0
- data/generators/vulcanize/vulcanize_generator.rb +67 -0
- data/lib/capistrano/hostcmd.rb +12 -0
- data/lib/rubber.rb +38 -0
- data/lib/rubber/capistrano.rb +1 -0
- data/lib/rubber/cloud.rb +13 -0
- data/lib/rubber/cloud/aws.rb +305 -0
- data/lib/rubber/cloud/base.rb +16 -0
- data/lib/rubber/configuration.rb +47 -0
- data/lib/rubber/dns.rb +13 -0
- data/lib/rubber/dns/base.rb +69 -0
- data/lib/rubber/dns/dyndns.rb +63 -0
- data/lib/rubber/dns/nettica.rb +73 -0
- data/lib/rubber/dns/zerigo.rb +131 -0
- data/lib/rubber/environment.rb +161 -0
- data/lib/rubber/generator.rb +197 -0
- data/lib/rubber/instance.rb +165 -0
- data/lib/rubber/recipes/rubber.rb +89 -0
- data/lib/rubber/recipes/rubber/bundles.rb +28 -0
- data/lib/rubber/recipes/rubber/deploy.rb +90 -0
- data/lib/rubber/recipes/rubber/instances.rb +348 -0
- data/lib/rubber/recipes/rubber/load_balancers.rb +44 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +189 -0
- data/lib/rubber/recipes/rubber/setup.rb +357 -0
- data/lib/rubber/recipes/rubber/static_ips.rb +107 -0
- data/lib/rubber/recipes/rubber/utils.rb +203 -0
- data/lib/rubber/recipes/rubber/volumes.rb +264 -0
- data/lib/rubber/tasks/rubber.rb +221 -0
- data/lib/rubber/util.rb +37 -0
- data/test/environment_test.rb +118 -0
- data/test/generator_test.rb +323 -0
- data/test/instance_test.rb +93 -0
- data/test/test_helper.rb +4 -0
- data/test/util_test.rb +16 -0
- metadata +274 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@read_cmd = 'crontab -l'
|
|
3
|
+
@write_cmd = 'crontab -'
|
|
4
|
+
@additive = ["# rubber-mysql-start", "# rubber-mysql-end"]
|
|
5
|
+
%>
|
|
6
|
+
|
|
7
|
+
<%
|
|
8
|
+
# Backup db every 3 hours to secondary db if available, else primary db
|
|
9
|
+
backup_db_host = rubber_instances.for_role('db', {}).first rescue nil
|
|
10
|
+
backup_db_host ||= rubber_instances.for_role('db', 'primary' => true).first
|
|
11
|
+
if backup_db_host.name == rubber_env.host
|
|
12
|
+
%>
|
|
13
|
+
0 */3 * * * BACKUP_DIR=/mnt/db_backups DBUSER=<%= rubber_env.db_user %> DBPASS=<%= rubber_env.db_pass %> DBNAME=<%= rubber_env.db_name %> DBHOST=<%= backup_db_host.full_name %> <%= RUBBER_ROOT %>/script/cron-rake rubber:backup_db
|
|
14
|
+
<% end %>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/monit/monit.d/monit-mysql.conf'
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
check process mysql with pidfile /var/run/mysqld/mysqld.pid
|
|
6
|
+
group mysql-<%= RUBBER_ENV %>
|
|
7
|
+
start program = "/etc/init.d/mysql restart"
|
|
8
|
+
stop program = "/etc/init.d/mysql stop"
|
|
9
|
+
if failed host 127.0.0.1 port 3306 protocol mysql then alert
|
|
10
|
+
if 5 restarts within 5 cycles then timeout
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<%
|
|
2
|
+
data_dir = rubber_env.db_data_dir
|
|
3
|
+
log_dir = rubber_env.db_log_dir
|
|
4
|
+
server_id = rubber_env.db_server_id
|
|
5
|
+
@path = '/etc/mysql/my.cnf'
|
|
6
|
+
@post = "mkdir -p #{log_dir}; chown mysql:adm #{log_dir}; chmod 2750 #{log_dir}"
|
|
7
|
+
%>
|
|
8
|
+
|
|
9
|
+
# Generated by rubber for host <%= rubber_instances[rubber_env.host].external_ip %>
|
|
10
|
+
#
|
|
11
|
+
# The MySQL database server configuration file.
|
|
12
|
+
#
|
|
13
|
+
# You can copy this to one of:
|
|
14
|
+
# - "/etc/mysql/my.cnf" to set global options,
|
|
15
|
+
# - "~/.my.cnf" to set user-specific options.
|
|
16
|
+
#
|
|
17
|
+
# One can use all long options that the program supports.
|
|
18
|
+
# Run program with --help to get a list of available options and with
|
|
19
|
+
# --print-defaults to see which it would actually understand and use.
|
|
20
|
+
#
|
|
21
|
+
# For explanations see
|
|
22
|
+
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
|
|
23
|
+
|
|
24
|
+
# This will be passed to all mysql clients
|
|
25
|
+
# It has been reported that passwords should be enclosed with ticks/quotes
|
|
26
|
+
# escpecially if they contain "#" chars...
|
|
27
|
+
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
|
|
28
|
+
[client]
|
|
29
|
+
default-character-set = utf8
|
|
30
|
+
port = 3306
|
|
31
|
+
socket = /var/run/mysqld/mysqld.sock
|
|
32
|
+
|
|
33
|
+
# Here is entries for some specific programs
|
|
34
|
+
# The following values assume you have at least 32M ram
|
|
35
|
+
|
|
36
|
+
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
|
|
37
|
+
[mysqld_safe]
|
|
38
|
+
socket = /var/run/mysqld/mysqld.sock
|
|
39
|
+
nice = 0
|
|
40
|
+
|
|
41
|
+
[mysqld]
|
|
42
|
+
#
|
|
43
|
+
# * Basic Settings
|
|
44
|
+
#
|
|
45
|
+
default-character-set = utf8
|
|
46
|
+
user = mysql
|
|
47
|
+
pid-file = /var/run/mysqld/mysqld.pid
|
|
48
|
+
socket = /var/run/mysqld/mysqld.sock
|
|
49
|
+
port = 3306
|
|
50
|
+
basedir = /usr
|
|
51
|
+
datadir = <%= data_dir %>
|
|
52
|
+
tmpdir = /tmp
|
|
53
|
+
language = /usr/share/mysql/english
|
|
54
|
+
skip-external-locking
|
|
55
|
+
|
|
56
|
+
#
|
|
57
|
+
# Instead of skip-networking the default is now to listen only on
|
|
58
|
+
# localhost which is more compatible and is not less secure.
|
|
59
|
+
# bind-address = 127.0.0.1
|
|
60
|
+
#
|
|
61
|
+
# * Fine Tuning
|
|
62
|
+
#
|
|
63
|
+
key_buffer = 16M
|
|
64
|
+
max_allowed_packet = 32M
|
|
65
|
+
thread_stack = 128K
|
|
66
|
+
thread_cache_size = 8
|
|
67
|
+
#table_cache=500
|
|
68
|
+
#max_heap_table_size=16M
|
|
69
|
+
#tmp_table_size=32M
|
|
70
|
+
|
|
71
|
+
#max_connections = 100
|
|
72
|
+
#table_cache = 64
|
|
73
|
+
#thread_concurrency = 10
|
|
74
|
+
#
|
|
75
|
+
# * Query Cache Configuration
|
|
76
|
+
#
|
|
77
|
+
query_cache_limit = 1M
|
|
78
|
+
query_cache_size = 16M
|
|
79
|
+
#
|
|
80
|
+
# * Logging and Replication
|
|
81
|
+
#
|
|
82
|
+
# Both location gets rotated by the cronjob.
|
|
83
|
+
# Be aware that this log type is a performance killer.
|
|
84
|
+
#log = /var/log/mysql/mysql.log
|
|
85
|
+
#
|
|
86
|
+
# Error logging goes to syslog. This is a Debian improvement :)
|
|
87
|
+
#
|
|
88
|
+
# Here you can see queries with especially long duration
|
|
89
|
+
log_slow_queries = /var/log/mysql/mysql-slow.log
|
|
90
|
+
long_query_time = 2
|
|
91
|
+
log-queries-not-using-indexes
|
|
92
|
+
#
|
|
93
|
+
# The following can be used as easy to replay backup logs or for replication.
|
|
94
|
+
# note: if you are setting up a replication slave, see README.Debian about
|
|
95
|
+
# other settings you may need to change.
|
|
96
|
+
server-id = <%= server_id %>
|
|
97
|
+
log_bin = <%= log_dir %>/mysql-bin.log
|
|
98
|
+
relay_log = <%= log_dir %>/mysql-relay-bin.log
|
|
99
|
+
|
|
100
|
+
# WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
|
|
101
|
+
expire_logs_days = 10
|
|
102
|
+
max_binlog_size = 100M
|
|
103
|
+
#binlog_do_db = include_database_name
|
|
104
|
+
#binlog_ignore_db = include_database_name
|
|
105
|
+
#
|
|
106
|
+
# * BerkeleyDB
|
|
107
|
+
#
|
|
108
|
+
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
|
|
109
|
+
skip-bdb
|
|
110
|
+
#
|
|
111
|
+
# * InnoDB
|
|
112
|
+
#
|
|
113
|
+
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
|
|
114
|
+
# Read the manual for more InnoDB related options. There are many!
|
|
115
|
+
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
|
|
116
|
+
#skip-innodb
|
|
117
|
+
|
|
118
|
+
# Set buffer pool size to 50-80% of your computer's memory
|
|
119
|
+
#innodb_buffer_pool_size=512M
|
|
120
|
+
#innodb_additional_mem_pool_size=64M
|
|
121
|
+
|
|
122
|
+
# Set the log file size to about 25% of the buffer pool size
|
|
123
|
+
#innodb_log_file_size=128M
|
|
124
|
+
#innodb_log_buffer_size=32M
|
|
125
|
+
#innodb_flush_log_at_trx_commit=2
|
|
126
|
+
|
|
127
|
+
#
|
|
128
|
+
# * Security Features
|
|
129
|
+
#
|
|
130
|
+
# Read the manual, too, if you want chroot!
|
|
131
|
+
# chroot = /var/lib/mysql/
|
|
132
|
+
#
|
|
133
|
+
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
|
|
134
|
+
#
|
|
135
|
+
# ssl-ca=/etc/mysql/cacert.pem
|
|
136
|
+
# ssl-cert=/etc/mysql/server-cert.pem
|
|
137
|
+
# ssl-key=/etc/mysql/server-key.pem
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
[mysqldump]
|
|
142
|
+
quick
|
|
143
|
+
quote-names
|
|
144
|
+
max_allowed_packet = 16M
|
|
145
|
+
|
|
146
|
+
[mysql]
|
|
147
|
+
#no-auto-rehash # faster start of mysql but no tab completition
|
|
148
|
+
|
|
149
|
+
[isamchk]
|
|
150
|
+
key_buffer = 16M
|
|
151
|
+
|
|
152
|
+
#
|
|
153
|
+
# * NDB Cluster
|
|
154
|
+
#
|
|
155
|
+
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
|
|
156
|
+
#
|
|
157
|
+
# The following configuration is read by the NDB Data Nodes (ndbd processes)
|
|
158
|
+
# not from the NDB Management Nodes (ndb_mgmd processes).
|
|
159
|
+
#
|
|
160
|
+
# [MYSQL_CLUSTER]
|
|
161
|
+
# ndb-connectstring=127.0.0.1
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
#
|
|
165
|
+
# * IMPORTANT: Additional settings that can override those from this file!
|
|
166
|
+
#
|
|
167
|
+
!includedir /etc/mysql/conf.d/
|
data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/munin/plugins/mysql_slave"
|
|
3
|
+
@perms = 0755
|
|
4
|
+
%>#!/bin/sh
|
|
5
|
+
#
|
|
6
|
+
# Plugin to monitor the slave delay
|
|
7
|
+
#
|
|
8
|
+
# Parameters:
|
|
9
|
+
#
|
|
10
|
+
# config
|
|
11
|
+
# autoconf
|
|
12
|
+
#
|
|
13
|
+
# Configuration variables
|
|
14
|
+
#
|
|
15
|
+
# mysqlopts - Options to pass to mysql
|
|
16
|
+
#
|
|
17
|
+
#%# family=auto
|
|
18
|
+
#%# capabilities=autoconf
|
|
19
|
+
|
|
20
|
+
MYSQLOPTS="$mysqlopts"
|
|
21
|
+
MYSQLADMIN=${mysqladmin:-mysqladmin}
|
|
22
|
+
|
|
23
|
+
if [ "$1" = "autoconf" ]; then
|
|
24
|
+
$MYSQLADMIN --version 2>/dev/null >/dev/null
|
|
25
|
+
if [ $? -eq 0 ]
|
|
26
|
+
then
|
|
27
|
+
$MYSQLADMIN $MYSQLOPTS status 2>/dev/null >/dev/null
|
|
28
|
+
if [ $? -eq 0 ]
|
|
29
|
+
then
|
|
30
|
+
echo yes
|
|
31
|
+
exit 0
|
|
32
|
+
else
|
|
33
|
+
echo "no (could not connect to mysql)"
|
|
34
|
+
fi
|
|
35
|
+
else
|
|
36
|
+
echo "no (mysqladmin not found)"
|
|
37
|
+
fi
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
if [ "$1" = "config" ]; then
|
|
42
|
+
echo 'graph_title MySQL Slave Delay'
|
|
43
|
+
echo 'graph_vlabel seconds'
|
|
44
|
+
echo 'graph_category mysql'
|
|
45
|
+
echo 'slave.label slave delay'
|
|
46
|
+
echo 'graph_args --base 1000'
|
|
47
|
+
exit 0
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
/usr/bin/printf "slave.value "
|
|
51
|
+
echo "show slave status\G"| mysql $MYSQLOPTS | grep "Seconds_Behind_Master" | awk '{print $2}'
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
# REQUIRED: The credentials for creating/accessong your app's database
|
|
3
|
+
#
|
|
4
|
+
db_user: "#{app_name[0,16]}"
|
|
5
|
+
db_pass:
|
|
6
|
+
db_name: "#{app_name}_#{RUBBER_ENV}"
|
|
7
|
+
|
|
8
|
+
db_slave_user: "#{('slave_' + db_user)[0,16]}"
|
|
9
|
+
db_replicator_user: "#{('replicator_' + db_user)[0,16]}"
|
|
10
|
+
|
|
11
|
+
# REQUIRED: The command to use to do a full backup of your database using
|
|
12
|
+
# "rake rubber:backup_db"
|
|
13
|
+
db_backup_cmd: "nice mysqldump -h %host% -u %user% --password=%pass% %name% | gzip -c > %backup_file%"
|
|
14
|
+
# REQUIRED: The command to use to restore the database using
|
|
15
|
+
# "rake rubber:restore_db_s3"
|
|
16
|
+
# This command will receive the data generated by db_backup_cmd via
|
|
17
|
+
# its standard input
|
|
18
|
+
db_restore_cmd: "zcat - | mysql -h %host% -u %user% --password=%pass% %name%"
|
|
19
|
+
|
|
20
|
+
# REQUIRED: The directory to store the db data in
|
|
21
|
+
#
|
|
22
|
+
db_root_dir: /mnt/mysql
|
|
23
|
+
db_data_dir: "#{db_root_dir}/data"
|
|
24
|
+
db_log_dir: "#{db_root_dir}/log"
|
|
25
|
+
|
|
26
|
+
# Capistrano needs db:primary role for migrate to work,
|
|
27
|
+
# so we might as well just make consistent across the board
|
|
28
|
+
role_dependencies:
|
|
29
|
+
mysql_master: [db:primary=true]
|
|
30
|
+
mysql_slave: [db]
|
|
31
|
+
db:primary=true: [mysql_master]
|
|
32
|
+
db: [mysql_slave]
|
|
33
|
+
|
|
34
|
+
packages: [mysql-client, libmysql-ruby]
|
|
35
|
+
|
|
36
|
+
roles:
|
|
37
|
+
mysql_master:
|
|
38
|
+
db_server_id: 1
|
|
39
|
+
mysql_slave:
|
|
40
|
+
db_server_id: 2
|
|
41
|
+
db:
|
|
42
|
+
packages: [
|
|
43
|
+
mysql-server,
|
|
44
|
+
maatkit, # useful mysql tools for replication
|
|
45
|
+
libdbi-perl, libdbd-mysql, libcache-cache-perl # for extended munin plugins
|
|
46
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The mysql module
|
data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "#{RUBBER_ROOT}/config/initializers/mysql_cluster_migrations.rb"
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
# mysql adapter in rails hardcodes engine to be innodb, so if we want all
|
|
6
|
+
# rails tables to be clustered, we need to override this behavior
|
|
7
|
+
#
|
|
8
|
+
class ActiveRecord::ConnectionAdapters::MysqlAdapter
|
|
9
|
+
def create_table(table_name, options = {}) #:nodoc:
|
|
10
|
+
super(table_name, options.reverse_merge(:options => "ENGINE=ndbcluster"))
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
|
|
4
|
+
namespace :mysql_cluster do
|
|
5
|
+
|
|
6
|
+
rubber.allow_optional_tasks(self)
|
|
7
|
+
|
|
8
|
+
after "rubber:create", "rubber:mysql_cluster:set_db_role"
|
|
9
|
+
|
|
10
|
+
# Capistrano needs db:primary role for migrate to work
|
|
11
|
+
task :set_db_role do
|
|
12
|
+
sql_instances = rubber_instances.for_role("mysql_sql")
|
|
13
|
+
sql_instances.each do |instance|
|
|
14
|
+
if ! instance.role_names.find {|n| n == 'db'}
|
|
15
|
+
role = Rubber::Configuration::RoleItem.new('db')
|
|
16
|
+
primary_exists = rubber_instances.for_role("db", "primary" => true).size > 0
|
|
17
|
+
role.options["primary"] = true unless primary_exists
|
|
18
|
+
instance.roles << role
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
rubber_instances.save()
|
|
22
|
+
load_roles() unless rubber_env.disable_auto_roles
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
before "rubber:install_packages", "rubber:mysql_cluster:install"
|
|
26
|
+
|
|
27
|
+
task :install, :roles => [:mysql_mgm, :mysql_data, :mysql_sql] do
|
|
28
|
+
# Setup apt sources to get a newer version of mysql cluster
|
|
29
|
+
# https://launchpad.net/~mysql-cge-testing/+archive
|
|
30
|
+
#
|
|
31
|
+
|
|
32
|
+
sources = <<-SOURCES
|
|
33
|
+
# for mysql cluster 6.2
|
|
34
|
+
# deb http://ppa.launchpad.net/mysql-cge-testing/ubuntu hardy main
|
|
35
|
+
# deb-src http://ppa.launchpad.net/mysql-cge-testing/ubuntu hardy main
|
|
36
|
+
|
|
37
|
+
# for mysql cluster 6.3
|
|
38
|
+
deb http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
|
|
39
|
+
deb-src http://ppa.launchpad.net/ndb-bindings/ubuntu hardy main
|
|
40
|
+
SOURCES
|
|
41
|
+
sources.gsub!(/^ */, '')
|
|
42
|
+
put(sources, "/etc/apt/sources.list.d/mysql_cluster.list")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
after "rubber:bootstrap", "rubber:mysql_cluster:bootstrap"
|
|
46
|
+
|
|
47
|
+
task :bootstrap, :roles => [:mysql_mgm, :mysql_data, :mysql_sql] do
|
|
48
|
+
# mysql package install starts mysql, so stop it
|
|
49
|
+
sudo "/etc/init.d/mysql stop" rescue nil
|
|
50
|
+
|
|
51
|
+
# After everything installed on machines, we need the source tree
|
|
52
|
+
# on hosts in order to run rubber:config for bootstrapping the db
|
|
53
|
+
deploy.setup
|
|
54
|
+
deploy.update_code
|
|
55
|
+
|
|
56
|
+
# Conditionaly bootstrap for each node/role only if that node has not
|
|
57
|
+
# been boostrapped for that role before
|
|
58
|
+
|
|
59
|
+
rubber_instances.for_role("mysql_mgm").each do |ic|
|
|
60
|
+
task_name = "_bootstrap_mysql_mgm_#{ic.full_name}".to_sym()
|
|
61
|
+
task task_name, :hosts => ic.full_name do
|
|
62
|
+
exists = capture("if grep -c rubber.*mysql_mgm /etc/mysql/ndb_mgmd.cnf &> /dev/null; then echo exists; fi")
|
|
63
|
+
if exists.strip.size == 0
|
|
64
|
+
rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_mgm", :deploy_path => release_path)
|
|
65
|
+
sudo "/etc/init.d/mysql-ndb-mgm start"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
send task_name
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
rubber_instances.for_role("mysql_data").each do |ic|
|
|
72
|
+
task_name = "_bootstrap_mysql_data_#{ic.full_name}".to_sym()
|
|
73
|
+
task task_name, :hosts => ic.full_name do
|
|
74
|
+
exists = capture("if grep -c rubber.*mysql_data /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
|
|
75
|
+
if exists.strip.size == 0
|
|
76
|
+
rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_data", :deploy_path => release_path)
|
|
77
|
+
sudo "/etc/init.d/mysql-ndb start-initial"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
send task_name
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
rubber_instances.for_role("mysql_sql").each do |ic|
|
|
84
|
+
task_name = "_bootstrap_mysql_sql_#{ic.full_name}".to_sym()
|
|
85
|
+
task task_name, :hosts => ic.full_name do
|
|
86
|
+
exists = capture("if grep -c rubber.*mysql_sql /etc/mysql/my.cnf &> /dev/null; then echo exists; fi")
|
|
87
|
+
if exists.strip.size == 0
|
|
88
|
+
rubber.run_config(:RUBBER_ENV => RUBBER_ENV, :FILE => "role/mysql_sql", :deploy_path => release_path)
|
|
89
|
+
sudo "/etc/init.d/mysql start"
|
|
90
|
+
env = rubber_cfg.environment.bind()
|
|
91
|
+
# For mysql 5.0 cluster, need to create users and database for EVERY sql node
|
|
92
|
+
pass = "identified by '#{env.db_pass}'" if env.db_pass
|
|
93
|
+
sudo "mysql -u root -e 'create database #{env.db_name};'"
|
|
94
|
+
sudo "mysql -u root -e \"grant all on #{env.db_name}.* to '#{env.db_user}'@'%' #{pass};\""
|
|
95
|
+
sudo "mysql -u root -e \"update user set Super_priv = 'N' where user = '#{env.db_user}';\" mysql"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
send task_name
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
desc <<-DESC
|
|
104
|
+
Starts the mysql cluster management daemon on the management node
|
|
105
|
+
DESC
|
|
106
|
+
task :start_mgm, :roles => :mysql_mgm do
|
|
107
|
+
sudo "/etc/init.d/mysql-ndb-mgm start"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
desc <<-DESC
|
|
111
|
+
Starts the mysql cluster storage daemon on the data nodes
|
|
112
|
+
DESC
|
|
113
|
+
task :start_data, :roles => :mysql_data do
|
|
114
|
+
sudo "/etc/init.d/mysql-ndb start"
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
desc <<-DESC
|
|
118
|
+
Starts the mysql cluster sql daemon on the sql nodes
|
|
119
|
+
DESC
|
|
120
|
+
task :start_sql, :roles => :mysql_sql do
|
|
121
|
+
sudo "/etc/init.d/mysql start"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
desc <<-DESC
|
|
125
|
+
Stops the mysql cluster management daemon on the management node
|
|
126
|
+
DESC
|
|
127
|
+
task :stop_mgm, :roles => :mysql_mgm do
|
|
128
|
+
sudo "/etc/init.d/mysql-ndb-mgm stop"
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
desc <<-DESC
|
|
132
|
+
Stops the mysql cluster storage daemon on the data nodes
|
|
133
|
+
DESC
|
|
134
|
+
task :stop_data, :roles => :mysql_data do
|
|
135
|
+
sudo "/etc/init.d/mysql-ndb stop"
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
desc <<-DESC
|
|
139
|
+
Stops the mysql cluster sql daemon on the sql nodes
|
|
140
|
+
DESC
|
|
141
|
+
task :stop_sql, :roles => :mysql_sql do
|
|
142
|
+
sudo "/etc/init.d/mysql stop"
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
desc <<-DESC
|
|
146
|
+
Stops all the mysql cluster daemons
|
|
147
|
+
DESC
|
|
148
|
+
task :stop do
|
|
149
|
+
stop_sql
|
|
150
|
+
stop_data
|
|
151
|
+
stop_mgm
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
desc <<-DESC
|
|
155
|
+
Starts all the mysql cluster daemons
|
|
156
|
+
DESC
|
|
157
|
+
task :start do
|
|
158
|
+
start_mgm
|
|
159
|
+
start_data
|
|
160
|
+
start_sql
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
desc <<-DESC
|
|
164
|
+
Restarts all the mysql cluster daemons
|
|
165
|
+
DESC
|
|
166
|
+
task :restart do
|
|
167
|
+
stop
|
|
168
|
+
start
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
end
|