rubber-jcarnegie 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.
- data/CHANGELOG +477 -0
- data/COPYING +339 -0
- data/README +6 -0
- data/TODO +11 -0
- data/VERSION +1 -0
- data/bin/vulcanize +25 -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 +8 -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 +79 -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 +34 -0
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
- data/generators/vulcanize/templates/apache/templates.yml +1 -0
- data/generators/vulcanize/templates/base/Capfile +14 -0
- data/generators/vulcanize/templates/base/Rakefile +23 -0
- data/generators/vulcanize/templates/base/config/deploy.rb +56 -0
- data/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
- data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
- data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +33 -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.rb +11 -0
- data/generators/vulcanize/templates/base/templates.yml +6 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
- data/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
- data/generators/vulcanize/templates/cassandra/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/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
- data/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
- data/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
- data/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -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 +11 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -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/jetty/config/rubber/deploy-jetty.rb +59 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
- data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
- data/generators/vulcanize/templates/jetty/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 +252 -0
- data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -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/common/munin-plugins.conf +11 -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 +115 -0
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
- data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -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 +12 -0
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -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 +163 -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 +47 -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 +177 -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/node/INSTALL_NOTES +20 -0
- data/generators/vulcanize/templates/node/config/rubber/deploy-node.rb +33 -0
- data/generators/vulcanize/templates/node/config/rubber/rubber-node.yml +1 -0
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +45 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +8 -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 +48 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +41 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
- data/generators/vulcanize/templates/passenger/templates.yml +3 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +158 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/munin-postgresql.conf +7 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +531 -0
- data/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
- data/generators/vulcanize/templates/postgresql/templates.yml +1 -0
- data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +76 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +320 -0
- data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +9 -0
- data/generators/vulcanize/templates/redis/templates.yml +1 -0
- data/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
- data/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
- data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
- data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
- data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
- data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
- data/generators/vulcanize/templates/resque/script/resque_worker_management.rb +144 -0
- data/generators/vulcanize/templates/resque/templates.rb +1 -0
- data/generators/vulcanize/templates/resque/templates.yml +3 -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 +13 -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 +184 -0
- data/lib/capistrano/hostcmd.rb +12 -0
- data/lib/generators/vulcanize/USAGE +6 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +8 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +79 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
- data/lib/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
- data/lib/generators/vulcanize/templates/apache/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/base/Capfile +14 -0
- data/lib/generators/vulcanize/templates/base/Rakefile +23 -0
- data/lib/generators/vulcanize/templates/base/config/deploy.rb +56 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/common/crontab +22 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +13 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +92 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/deploy-util.rb +97 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +78 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +33 -0
- data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -0
- data/lib/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
- data/lib/generators/vulcanize/templates/base/script/cron-rake +18 -0
- data/lib/generators/vulcanize/templates/base/script/cron-runner +18 -0
- data/lib/generators/vulcanize/templates/base/script/cron-sh +67 -0
- data/lib/generators/vulcanize/templates/base/templates.rb +11 -0
- data/lib/generators/vulcanize/templates/base/templates.yml +6 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/deploy-cassandra.rb +88 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.in.sh +60 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/cassandra.yaml +210 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/log4j-server.properties +45 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +8 -0
- data/lib/generators/vulcanize/templates/cassandra/config/rubber/rubber-cassandra.yml +18 -0
- data/lib/generators/vulcanize/templates/cassandra/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
- data/lib/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/lib/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
- data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
- data/lib/generators/vulcanize/templates/complete_passenger/config/rubber/rubber-complete.yml +40 -0
- data/lib/generators/vulcanize/templates/complete_passenger/templates.rb +9 -0
- data/lib/generators/vulcanize/templates/complete_passenger/templates.yml +9 -0
- data/lib/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +4 -0
- data/lib/generators/vulcanize/templates/complete_passenger_postgresql/templates.yml +4 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
- data/lib/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
- data/lib/generators/vulcanize/templates/cruise/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +11 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +21 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
- data/lib/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
- data/lib/generators/vulcanize/templates/haproxy/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
- data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
- data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
- data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
- data/lib/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
- data/lib/generators/vulcanize/templates/jetty/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
- data/lib/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
- data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
- data/lib/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
- data/lib/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
- data/lib/generators/vulcanize/templates/memcached/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
- data/lib/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
- data/lib/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
- data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
- data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
- data/lib/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
- data/lib/generators/vulcanize/templates/mongrel/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
- data/lib/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +252 -0
- data/lib/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +33 -0
- data/lib/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
- data/lib/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
- data/lib/generators/vulcanize/templates/monit/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +11 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +115 -0
- data/lib/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
- data/lib/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +55 -0
- data/lib/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
- data/lib/generators/vulcanize/templates/munin/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +12 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +169 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +46 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +163 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
- data/lib/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +47 -0
- data/lib/generators/vulcanize/templates/mysql/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +177 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
- data/lib/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
- data/lib/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/lib/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
- data/lib/generators/vulcanize/templates/nginx/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +45 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +8 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +48 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +41 -0
- data/lib/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
- data/lib/generators/vulcanize/templates/passenger/templates.yml +3 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/common/database.yml +12 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/deploy-postgresql.rb +158 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/crontab +14 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/monit-postgresql.conf +10 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/munin-postgresql.conf +7 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/pg_hba.conf +89 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +6 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/role/db/postgresql.conf +531 -0
- data/lib/generators/vulcanize/templates/postgresql/config/rubber/rubber-postgresql.yml +45 -0
- data/lib/generators/vulcanize/templates/postgresql/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +76 -0
- data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
- data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
- data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +320 -0
- data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +9 -0
- data/lib/generators/vulcanize/templates/redis/templates.yml +1 -0
- data/lib/generators/vulcanize/templates/resque/config/initializers/resque.rb +15 -0
- data/lib/generators/vulcanize/templates/resque/config/rubber/common/resque.yml +5 -0
- data/lib/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +58 -0
- data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +14 -0
- data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +19 -0
- data/lib/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +18 -0
- data/lib/generators/vulcanize/templates/resque/script/resque_worker_management.rb +144 -0
- data/lib/generators/vulcanize/templates/resque/templates.rb +1 -0
- data/lib/generators/vulcanize/templates/resque/templates.yml +3 -0
- data/lib/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
- data/lib/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
- data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
- data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +13 -0
- data/lib/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
- data/lib/generators/vulcanize/templates/sphinx/templates.yml +1 -0
- data/lib/generators/vulcanize/vulcanize_generator.rb +184 -0
- data/lib/rubber.rb +76 -0
- data/lib/rubber/capistrano.rb +1 -0
- data/lib/rubber/cloud.rb +13 -0
- data/lib/rubber/cloud/aws.rb +362 -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 +84 -0
- data/lib/rubber/dns/dyndns.rb +77 -0
- data/lib/rubber/dns/nettica.rb +117 -0
- data/lib/rubber/dns/zerigo.rb +115 -0
- data/lib/rubber/environment.rb +177 -0
- data/lib/rubber/generator.rb +209 -0
- data/lib/rubber/instance.rb +176 -0
- data/lib/rubber/railtie.rb +14 -0
- data/lib/rubber/recipes/rubber.rb +96 -0
- data/lib/rubber/recipes/rubber/bundles.rb +30 -0
- data/lib/rubber/recipes/rubber/deploy.rb +90 -0
- data/lib/rubber/recipes/rubber/instances.rb +453 -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 +534 -0
- data/lib/rubber/recipes/rubber/spot_requests.rb +23 -0
- data/lib/rubber/recipes/rubber/static_ips.rb +190 -0
- data/lib/rubber/recipes/rubber/tags.rb +12 -0
- data/lib/rubber/recipes/rubber/utils.rb +226 -0
- data/lib/rubber/recipes/rubber/volumes.rb +265 -0
- data/lib/rubber/tag.rb +16 -0
- data/lib/rubber/tasks/rubber.rb +279 -0
- data/lib/rubber/util.rb +72 -0
- data/rails/init.rb +6 -0
- data/test/environment_test.rb +144 -0
- data/test/generator_test.rb +370 -0
- data/test/instance_test.rb +96 -0
- data/test/test_helper.rb +14 -0
- data/test/util_test.rb +19 -0
- data/test/zerigo_test.rb +88 -0
- metadata +540 -0
data/lib/rubber/util.rb
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Rubber
|
|
4
|
+
module Util
|
|
5
|
+
|
|
6
|
+
def self.symbolize_keys(map)
|
|
7
|
+
map.inject({}) do |options, (key, value)|
|
|
8
|
+
options[key.to_sym || key] = value
|
|
9
|
+
options
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.stringify(val)
|
|
14
|
+
case val
|
|
15
|
+
when String
|
|
16
|
+
val
|
|
17
|
+
when Hash
|
|
18
|
+
val.inject({}) {|h, a| h[stringify(a[0])] = stringify(a[1]); h}
|
|
19
|
+
when Enumerable
|
|
20
|
+
val.collect {|v| stringify(v)}
|
|
21
|
+
else
|
|
22
|
+
val.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Opens the file for writing by root
|
|
28
|
+
def self.sudo_open(path, perms, &block)
|
|
29
|
+
open("|sudo tee #{path} > /dev/null", perms, &block)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.is_rails?
|
|
33
|
+
File.exist?(File.join(RUBBER_ROOT, 'config', 'boot.rb'))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.is_rails2?
|
|
37
|
+
defined?(Rails) && defined?(Rails::VERSION) && Rails::VERSION::MAJOR == 2
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.is_rails3?
|
|
41
|
+
defined?(Rails) && defined?(Rails::VERSION) && Rails::VERSION::MAJOR == 3
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.is_bundler?
|
|
45
|
+
File.exist?(File.join(RUBBER_ROOT, 'Gemfile'))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.rubber_as_plugin?
|
|
49
|
+
File.exist?(File.join(RUBBER_ROOT, 'vendor/plugins/rubber'))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.prompt(name, desc, required=false, default=nil)
|
|
53
|
+
value = ENV.delete(name)
|
|
54
|
+
msg = "#{desc}"
|
|
55
|
+
msg << " [#{default}]" if default
|
|
56
|
+
msg << ": "
|
|
57
|
+
unless value
|
|
58
|
+
print msg
|
|
59
|
+
value = gets
|
|
60
|
+
end
|
|
61
|
+
value = value.size == 0 ? default : value
|
|
62
|
+
self.fatal "#{name} is required, pass using environment or enter at prompt" if required && ! value
|
|
63
|
+
return value
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.fatal(msg, code=1)
|
|
67
|
+
puts msg
|
|
68
|
+
exit code
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
data/rails/init.rb
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
gem 'test-unit'
|
|
3
|
+
|
|
4
|
+
require 'test/unit'
|
|
5
|
+
require 'tempfile'
|
|
6
|
+
require File.expand_path(File.join(__FILE__, '..', 'test_helper'))
|
|
7
|
+
|
|
8
|
+
class EnvironmentTest < Test::Unit::TestCase
|
|
9
|
+
include Rubber::Configuration
|
|
10
|
+
|
|
11
|
+
def test_known_roles
|
|
12
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
|
|
13
|
+
assert_equal ['role1', 'role2'], env.known_roles, "list of know roles not correct"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_env
|
|
17
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
|
|
18
|
+
e = env.bind()
|
|
19
|
+
assert_equal 'val1', e['var1'], 'env not retrieving right val'
|
|
20
|
+
assert_equal 'val2', e['var2'], 'env not retrieving right val'
|
|
21
|
+
assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
|
|
22
|
+
assert_equal 'val2', e.var2, 'env not retrieving right val for method missing'
|
|
23
|
+
|
|
24
|
+
assert_equal 'val3', e.var3, 'env not retrieving right val for config in supplemental file'
|
|
25
|
+
|
|
26
|
+
e = env.bind('role1', 'nohost')
|
|
27
|
+
assert_equal 'val1', e['var1'], 'env not retrieving right val'
|
|
28
|
+
assert_equal 'role1val2', e['var2'], 'env not retrieving right val'
|
|
29
|
+
assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
|
|
30
|
+
assert_equal 'role1val2', e.var2, 'env not retrieving right val for method missing'
|
|
31
|
+
|
|
32
|
+
e = env.bind('role1', 'host1')
|
|
33
|
+
assert_equal 'val1', e['var1'], 'env not retrieving right val'
|
|
34
|
+
assert_equal 'host1val2', e['var2'], 'env not retrieving right val'
|
|
35
|
+
assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
|
|
36
|
+
assert_equal 'host1val2', e.var2, 'env not retrieving right val for method missing'
|
|
37
|
+
|
|
38
|
+
e = env.bind('norole', 'host1')
|
|
39
|
+
assert_equal 'val1', e['var1'], 'env not retrieving right val'
|
|
40
|
+
assert_equal 'host1val2', e['var2'], 'env not retrieving right val'
|
|
41
|
+
assert_equal 'val1', e.var1, 'env not retrieving right val for method missing'
|
|
42
|
+
assert_equal 'host1val2', e.var2, 'env not retrieving right val for method missing'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_host_override
|
|
46
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
|
|
47
|
+
e = env.bind('norole', 'host2')
|
|
48
|
+
assert_equal 'host2val3', e['var3'], 'env not retrieving right val'
|
|
49
|
+
assert_equal %w[host2val4a host2val4b], e['var4'], 'env not retrieving right val'
|
|
50
|
+
assert_equal [{'var51a' => 'val51a', 'var52a' => 'val52a'}, {'var53' => 'val53'}, {'var54' => 'val54'}], e['var5'], 'env not retrieving right val'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_combine
|
|
54
|
+
env = Rubber::Configuration::Environment
|
|
55
|
+
assert_equal "new", env.combine("old", "new"), "Last should win for scalar combine"
|
|
56
|
+
assert_equal 5, env.combine(1, 5), "Last should win for scalar combine"
|
|
57
|
+
assert_equal [1, 2, 3, 4], env.combine([1, 2, 3], [3, 4]), "Arrays should be unioned when combined"
|
|
58
|
+
assert_equal({1 => "1", 2 => "2", 3 => "3", 4 => "4"}, env.combine({1 => "1", 2 => "2"}, {3 => "3", 4 => "4"}), "Maps should be unioned when combined")
|
|
59
|
+
assert_equal({1 => "2"}, env.combine({1 => "1"}, {1 => "2"}), "Last should win for scalars in maps when combined")
|
|
60
|
+
assert_equal({1 => {1 => "1", 2 => "2"}}, env.combine({1 => {1 => "1"}}, {1 => {2 => "2"}}), "Maps should be unioned recursively when combined")
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_expansion
|
|
64
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/expansion")
|
|
65
|
+
e = env.bind()
|
|
66
|
+
assert_equal 'val1', e['var1']
|
|
67
|
+
assert_equal 'val2', e['var2']
|
|
68
|
+
assert_equal 'val1', e['var3']
|
|
69
|
+
assert_equal '4 is val2', e['var4']
|
|
70
|
+
assert_equal 'val1', e['var5']
|
|
71
|
+
assert_equal %w[lv1 lv2 val1], e['list1']
|
|
72
|
+
expected = {'mk1' => 'mv1', 'mk2' => 'mv2', 'mk3' => 'val2'}
|
|
73
|
+
e.map1.each do |k, v|
|
|
74
|
+
assert_equal expected[k], v
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
e = env.bind('role1', 'nohost')
|
|
78
|
+
assert_equal 'role1val1', e['var1']
|
|
79
|
+
assert_equal 'role1val1', e['var3']
|
|
80
|
+
assert_equal %w[lv1 lv2 role1val1 role1lv1 role1val2], e['list1']
|
|
81
|
+
|
|
82
|
+
e = env.bind('role1', 'host1')
|
|
83
|
+
assert_equal 'host1val1', e['var1']
|
|
84
|
+
assert_equal 'host1val1', e['var3']
|
|
85
|
+
assert_equal %w[lv1 lv2 host1val1 role1lv1 host1val2 host1lv1], e['list1'] # lists are additive
|
|
86
|
+
|
|
87
|
+
e = env.bind('norole', 'host1')
|
|
88
|
+
assert_equal 'host1val1', e['var1']
|
|
89
|
+
assert_equal 'host1val1', e['var3']
|
|
90
|
+
assert_equal %w[lv1 lv2 host1val1 host1lv1 host1val2], e['list1']
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_bool_expansion
|
|
94
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/expansion")
|
|
95
|
+
e = env.bind()
|
|
96
|
+
assert_equal true, e['truevar']
|
|
97
|
+
assert_equal false, e['falsevar']
|
|
98
|
+
assert_equal true, e['truevar_exp']
|
|
99
|
+
assert 'true' != e['truevar_exp']
|
|
100
|
+
assert_equal false, e['falsevar_exp']
|
|
101
|
+
assert 'false' != e['falsevar_exp']
|
|
102
|
+
assert_equal 'true thing', e['faketruevar_exp']
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_secret_env
|
|
106
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/basic")
|
|
107
|
+
e = env.bind()
|
|
108
|
+
assert_nil e['rubber_secret'], 'env should not have secret set'
|
|
109
|
+
|
|
110
|
+
fixture_dir = File.expand_path("#{File.dirname(__FILE__)}/fixtures/secret")
|
|
111
|
+
env = Rubber::Configuration::Environment.new(fixture_dir)
|
|
112
|
+
e = env.bind()
|
|
113
|
+
assert_equal "#{fixture_dir}/secret.yml", e['rubber_secret'], 'env should have secret set'
|
|
114
|
+
assert_equal "secret_val", e['secret_key'], 'env should have gotten setting from secret file'
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_nested_ref
|
|
118
|
+
env = Rubber::Configuration::Environment.new("#{File.dirname(__FILE__)}/fixtures/nested")
|
|
119
|
+
e = env.bind()
|
|
120
|
+
assert_equal 'val1', e.var1, 'env not retrieving right val'
|
|
121
|
+
assert_equal 'val3', e.var2.var3, 'env not retrieving right val'
|
|
122
|
+
assert_equal({'var5' => 'val5'}, e.var2.var4, 'env not retrieving right val')
|
|
123
|
+
assert_equal ['val6a', 'val6b'], e.var2.var6, 'env not retrieving right val'
|
|
124
|
+
assert_equal 'val1', e.var2.var7, 'env not retrieving right val'
|
|
125
|
+
assert_equal 'val3', e.var2.var8, 'env not retrieving right val'
|
|
126
|
+
assert_equal 'val5', e.var2.var9, 'env not retrieving right val'
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_instances_in_expansion
|
|
130
|
+
instance = InstanceItem.new('host1', 'domain.com', [RoleItem.new('role1')], '')
|
|
131
|
+
instance.external_ip = "1.2.3.4"
|
|
132
|
+
instances = Instance.new(Tempfile.new('testforinstanceexpansion').path)
|
|
133
|
+
instances.add(instance)
|
|
134
|
+
|
|
135
|
+
File.expects(:exist?).returns(true)
|
|
136
|
+
YAML.expects(:load_file).returns({'var1' =>'"#{rubber_instances.for_role("role1").first.external_ip}"'})
|
|
137
|
+
Rubber::Configuration.expects(:rubber_instances).returns(instances)
|
|
138
|
+
env = Rubber::Configuration::Environment.new(nil)
|
|
139
|
+
e = env.bind()
|
|
140
|
+
|
|
141
|
+
assert_equal "\"1.2.3.4\"", e['var1']
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
gem 'test-unit'
|
|
3
|
+
|
|
4
|
+
require 'test/unit'
|
|
5
|
+
require 'tempfile'
|
|
6
|
+
require File.expand_path(File.join(__FILE__, '..', 'test_helper'))
|
|
7
|
+
|
|
8
|
+
class GeneratorTest < Test::Unit::TestCase
|
|
9
|
+
include Rubber::Configuration
|
|
10
|
+
|
|
11
|
+
def test_validate
|
|
12
|
+
assert_raise RuntimeError do
|
|
13
|
+
src = <<-SRC
|
|
14
|
+
hello
|
|
15
|
+
SRC
|
|
16
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
17
|
+
end
|
|
18
|
+
assert_raise RuntimeError do
|
|
19
|
+
src = <<-SRC
|
|
20
|
+
<%
|
|
21
|
+
@read_cmd = 'ls'
|
|
22
|
+
%>
|
|
23
|
+
hello
|
|
24
|
+
SRC
|
|
25
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
26
|
+
end
|
|
27
|
+
assert_raise RuntimeError do
|
|
28
|
+
src = <<-SRC
|
|
29
|
+
<%
|
|
30
|
+
@write_cmd = 'cat'
|
|
31
|
+
%>
|
|
32
|
+
hello
|
|
33
|
+
SRC
|
|
34
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_simple_transform
|
|
39
|
+
out_file = Tempfile.new('testsimple')
|
|
40
|
+
src = <<-SRC
|
|
41
|
+
<%
|
|
42
|
+
@path = '#{out_file.path}'
|
|
43
|
+
%>
|
|
44
|
+
hello
|
|
45
|
+
SRC
|
|
46
|
+
|
|
47
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
48
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
49
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_additive_transform
|
|
53
|
+
out_file = Tempfile.new('testadditive')
|
|
54
|
+
open(out_file.path, 'w') { |f| f.write("howdy\n")}
|
|
55
|
+
src = <<-SRC
|
|
56
|
+
<%
|
|
57
|
+
@path = '#{out_file.path}'
|
|
58
|
+
@additive = ['#start', '#end']
|
|
59
|
+
%>
|
|
60
|
+
hello
|
|
61
|
+
SRC
|
|
62
|
+
|
|
63
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
64
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
65
|
+
assert_equal "howdy\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
66
|
+
|
|
67
|
+
src += "neato\n"
|
|
68
|
+
open(out_file.path, 'a') { |f| f.write("again\n")}
|
|
69
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
70
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
71
|
+
assert_equal "howdy\n#start \n hello\nneato\n#end\nagain", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_post_command
|
|
75
|
+
out_file = Tempfile.new('testpost')
|
|
76
|
+
post_file = out_file.path + '.post'
|
|
77
|
+
src = <<-SRC
|
|
78
|
+
<%
|
|
79
|
+
@path = '#{out_file.path}'
|
|
80
|
+
@post = 'touch #{post_file}'
|
|
81
|
+
%>
|
|
82
|
+
hello
|
|
83
|
+
SRC
|
|
84
|
+
|
|
85
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
86
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
87
|
+
assert File.exists?(post_file), "transform did not execute post"
|
|
88
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
89
|
+
|
|
90
|
+
FileUtils.rm_f(post_file)
|
|
91
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
92
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
93
|
+
assert ! File.exists?(post_file), "post should not have been executed as dest file unchanged"
|
|
94
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
95
|
+
|
|
96
|
+
FileUtils.rm_f(post_file)
|
|
97
|
+
gen = Generator.new(nil, nil, nil)
|
|
98
|
+
gen.force = true
|
|
99
|
+
gen.transform(src)
|
|
100
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
101
|
+
assert File.exists?(post_file), "forced transform did not execute post"
|
|
102
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
103
|
+
|
|
104
|
+
FileUtils.rm_f(post_file)
|
|
105
|
+
gen = Generator.new(nil, nil, nil)
|
|
106
|
+
gen.no_post = true
|
|
107
|
+
gen.transform(src + "there")
|
|
108
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
109
|
+
assert ! File.exists?(post_file), "post should not have been generated for no_post option"
|
|
110
|
+
assert_equal "hello\nthere", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_stop_on_error
|
|
114
|
+
out_file = Tempfile.new('teststoponerr')
|
|
115
|
+
post_file = out_file.path + '.post'
|
|
116
|
+
src = <<-SRC
|
|
117
|
+
<%
|
|
118
|
+
@path = '#{out_file.path}'
|
|
119
|
+
@post = 'badcommand; touch #{post_file}'
|
|
120
|
+
%>
|
|
121
|
+
hello
|
|
122
|
+
SRC
|
|
123
|
+
|
|
124
|
+
g = Generator.new(nil, nil, nil)
|
|
125
|
+
g.transform(src)
|
|
126
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
127
|
+
assert File.exists?(post_file), "transform did not execute post"
|
|
128
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
129
|
+
|
|
130
|
+
FileUtils.rm_f(post_file)
|
|
131
|
+
g = Generator.new(nil, nil, nil)
|
|
132
|
+
g.stop_on_error_cmd = "function error_exit { exit 99; }; trap error_exit ERR"
|
|
133
|
+
g.transform(src)
|
|
134
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
135
|
+
assert ! File.exists?(post_file), "post should not have been executed as comes after error"
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_pipe_command
|
|
139
|
+
out_file = Tempfile.new('testpipe')
|
|
140
|
+
src = <<-SRC
|
|
141
|
+
<%
|
|
142
|
+
@read_cmd = 'echo hi'
|
|
143
|
+
@write_cmd = 'cat > #{out_file.path}'
|
|
144
|
+
%>
|
|
145
|
+
hello
|
|
146
|
+
SRC
|
|
147
|
+
|
|
148
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
149
|
+
assert File.exists?(out_file.path), "transform did not generate to write_cmd"
|
|
150
|
+
assert_equal "hello", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
151
|
+
|
|
152
|
+
FileUtils.rm_f(out_file.path)
|
|
153
|
+
src = <<-SRC
|
|
154
|
+
<%
|
|
155
|
+
@read_cmd = 'echo hi'
|
|
156
|
+
@write_cmd = 'cat > #{out_file.path}'
|
|
157
|
+
@additive = ['#start', '#end']
|
|
158
|
+
%>
|
|
159
|
+
hello
|
|
160
|
+
SRC
|
|
161
|
+
|
|
162
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
163
|
+
assert File.exists?(out_file.path), "transform did not generate to write_cmd"
|
|
164
|
+
assert_equal "hi\n#start \n hello\n#end", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
165
|
+
|
|
166
|
+
FileUtils.rm_f(out_file.path)
|
|
167
|
+
src = <<-SRC
|
|
168
|
+
<%
|
|
169
|
+
@read_cmd = 'echo "#start\nthere\n#end\nhi\n"'
|
|
170
|
+
@write_cmd = 'cat > #{out_file.path}'
|
|
171
|
+
@additive = ['#start', '#end']
|
|
172
|
+
%>
|
|
173
|
+
hello
|
|
174
|
+
SRC
|
|
175
|
+
|
|
176
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
177
|
+
assert File.exists?(out_file.path), "transform did not generate to write_cmd"
|
|
178
|
+
assert_equal "#start \n hello\n#end\nhi", File.read(out_file.path).strip, "transformed contents are incorrect"
|
|
179
|
+
|
|
180
|
+
FileUtils.rm_f(out_file.path)
|
|
181
|
+
src = <<-SRC
|
|
182
|
+
<%
|
|
183
|
+
@read_cmd = 'echo hi'
|
|
184
|
+
@write_cmd = 'badcommand'
|
|
185
|
+
%>
|
|
186
|
+
hello
|
|
187
|
+
SRC
|
|
188
|
+
|
|
189
|
+
assert_raises do
|
|
190
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def list_dir(dir)
|
|
196
|
+
l = Dir.entries(dir)
|
|
197
|
+
l.delete_if {|d| d =~ /(^\.+$)|\.bak$/}
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def test_scoping
|
|
201
|
+
out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
|
|
202
|
+
FileUtils.rm_rf(out_dir)
|
|
203
|
+
assert ! File.exists?(out_dir)
|
|
204
|
+
|
|
205
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
|
|
206
|
+
g.run()
|
|
207
|
+
assert File.directory?(out_dir), "scoped transform did not create dir"
|
|
208
|
+
assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
|
|
209
|
+
assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
|
|
210
|
+
assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
|
|
211
|
+
|
|
212
|
+
FileUtils.rm_rf(out_dir)
|
|
213
|
+
assert ! File.exists?(out_dir)
|
|
214
|
+
|
|
215
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], nil, :out_dir => out_dir)
|
|
216
|
+
g.run()
|
|
217
|
+
assert File.directory?(out_dir), "scoped transform did not create dir"
|
|
218
|
+
assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
|
|
219
|
+
assert_equal "role1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
|
|
220
|
+
assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
|
|
221
|
+
|
|
222
|
+
FileUtils.rm_rf(out_dir)
|
|
223
|
+
assert ! File.exists?(out_dir)
|
|
224
|
+
|
|
225
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role2', 'role1'], nil, :out_dir => out_dir)
|
|
226
|
+
g.run()
|
|
227
|
+
assert File.directory?(out_dir), "scoped transform did not create dir"
|
|
228
|
+
assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
|
|
229
|
+
assert_equal "role2", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
|
|
230
|
+
assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
|
|
231
|
+
|
|
232
|
+
FileUtils.rm_rf(out_dir)
|
|
233
|
+
assert ! File.exists?(out_dir)
|
|
234
|
+
|
|
235
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", ['role1'], 'host1', :out_dir => out_dir)
|
|
236
|
+
g.run()
|
|
237
|
+
assert File.directory?(out_dir), "scoped transform did not create dir"
|
|
238
|
+
assert_equal ['bar.conf', 'foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
|
|
239
|
+
assert_equal "host1", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
|
|
240
|
+
assert_equal "common", File.read("#{out_dir}/bar.conf").strip, "transformed contents are incorrect"
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
FileUtils.rm_rf(out_dir)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def test_ordering_of_additive
|
|
247
|
+
out_dir = "#{Dir::tmpdir}/test_rubber_ordering"
|
|
248
|
+
FileUtils.rm_rf(out_dir)
|
|
249
|
+
assert ! File.exists?(out_dir)
|
|
250
|
+
|
|
251
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/generator_order", ['role2', 'role1'], 'host1', :out_dir => out_dir)
|
|
252
|
+
g.run()
|
|
253
|
+
assert File.directory?(out_dir), "transform did not create dir"
|
|
254
|
+
assert_equal ['out.conf'], list_dir(out_dir), "transform did not create correct file"
|
|
255
|
+
result = <<DATA
|
|
256
|
+
# common first start
|
|
257
|
+
first
|
|
258
|
+
# common first end
|
|
259
|
+
# common last start
|
|
260
|
+
last
|
|
261
|
+
# common last end
|
|
262
|
+
# role1 first start
|
|
263
|
+
role1 first
|
|
264
|
+
# role1 first end
|
|
265
|
+
# role1 last start
|
|
266
|
+
role1 last
|
|
267
|
+
# role1 last end
|
|
268
|
+
# role2 first start
|
|
269
|
+
role2 first
|
|
270
|
+
# role2 first end
|
|
271
|
+
# role2 last start
|
|
272
|
+
role2 last
|
|
273
|
+
# role2 last end
|
|
274
|
+
# host1 first start
|
|
275
|
+
host1 first
|
|
276
|
+
# host1 first end
|
|
277
|
+
# host1 last start
|
|
278
|
+
host1 last
|
|
279
|
+
# host1 last end
|
|
280
|
+
DATA
|
|
281
|
+
assert_equal result.strip, File.read("#{out_dir}/out.conf").strip, "transformed contents are incorrect"
|
|
282
|
+
|
|
283
|
+
FileUtils.rm_rf(out_dir)
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
def test_file_pattern
|
|
287
|
+
out_dir = "#{Dir::tmpdir}/test_rubber_scoping"
|
|
288
|
+
FileUtils.rm_rf(out_dir)
|
|
289
|
+
assert ! File.exists?(out_dir)
|
|
290
|
+
|
|
291
|
+
g = Generator.new("#{File.dirname(__FILE__)}/fixtures/basic", nil, nil, :out_dir => out_dir)
|
|
292
|
+
g.file_pattern = 'foo\.conf'
|
|
293
|
+
g.run()
|
|
294
|
+
assert File.directory?(out_dir), "scoped transform did not create dir"
|
|
295
|
+
assert_equal ['foo.conf'], list_dir(out_dir), "scoped transform did not create correct files"
|
|
296
|
+
assert_equal "common", File.read("#{out_dir}/foo.conf").strip, "transformed contents are incorrect"
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def test_perms
|
|
300
|
+
user = ENV['USER']
|
|
301
|
+
group = `groups`.split.last
|
|
302
|
+
out_file = Tempfile.new('testperms')
|
|
303
|
+
src = <<-SRC
|
|
304
|
+
<%
|
|
305
|
+
@path = '#{out_file.path}'
|
|
306
|
+
@perms = 0777
|
|
307
|
+
@owner = '#{user}'
|
|
308
|
+
@group = '#{group}'
|
|
309
|
+
%>
|
|
310
|
+
hello
|
|
311
|
+
SRC
|
|
312
|
+
|
|
313
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
314
|
+
assert File.exists?(out_file.path), "transform did not generate an output file"
|
|
315
|
+
assert_equal "100777", sprintf("%o", File.stat(out_file.path).mode), "transformed permissions are incorrect"
|
|
316
|
+
assert_equal Etc.getpwnam(user).uid, File.stat(out_file.path).uid, "transformed owner is incorrect"
|
|
317
|
+
assert_equal Etc.getgrnam(group).gid, File.stat(out_file.path).gid, "transformed group is incorrect"
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def test_skip
|
|
321
|
+
out_file = Tempfile.new('testskip')
|
|
322
|
+
File.delete(out_file.path)
|
|
323
|
+
src = <<-SRC
|
|
324
|
+
<%
|
|
325
|
+
@skip = true
|
|
326
|
+
@path = '#{out_file.path}'
|
|
327
|
+
%>
|
|
328
|
+
hello
|
|
329
|
+
SRC
|
|
330
|
+
|
|
331
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
332
|
+
assert ! File.exists?(out_file.path), "transform didn't skip generation of an output file"
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def test_backup
|
|
336
|
+
out_file = Tempfile.new('testbak')
|
|
337
|
+
assert ! File.exists?("#{out_file.path}.bak")
|
|
338
|
+
File.open(out_file.path, 'w') {|f| f.write("howdy")}
|
|
339
|
+
|
|
340
|
+
src = <<-SRC
|
|
341
|
+
<%
|
|
342
|
+
@path = '#{out_file.path}'
|
|
343
|
+
%>
|
|
344
|
+
hello <%= Time.now.to_f %>
|
|
345
|
+
SRC
|
|
346
|
+
|
|
347
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
348
|
+
|
|
349
|
+
assert File.exists?("#{out_file.path}.bak"), "transform didn't generate backup"
|
|
350
|
+
assert_match /howdy/, File.read("#{out_file.path}.bak"), "transform backup has wrong contents"
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def test_no_backup
|
|
354
|
+
out_file = Tempfile.new('testnobak')
|
|
355
|
+
assert ! File.exists?("#{out_file.path}.bak")
|
|
356
|
+
File.open(out_file.path, 'w') {|f| f.write("howdy")}
|
|
357
|
+
src = <<-SRC
|
|
358
|
+
<%
|
|
359
|
+
@path = '#{out_file.path}'
|
|
360
|
+
@backup = false
|
|
361
|
+
%>
|
|
362
|
+
hello <%= Time.now.to_f %>
|
|
363
|
+
SRC
|
|
364
|
+
|
|
365
|
+
Generator.new(nil, nil, nil).transform(src)
|
|
366
|
+
|
|
367
|
+
assert ! File.exists?("#{out_file.path}.bak"), "transform shouldn't generate backup"
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
end
|