le1t0-deprec 2.1.6.001

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. data/CHANGELOG +444 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +154 -0
  5. data/THANKS +17 -0
  6. data/bin/depify +139 -0
  7. data/docs/EXAMPLE-installing_tracks.txt +41 -0
  8. data/docs/README.nagios +22 -0
  9. data/docs/README.rails +17 -0
  10. data/docs/config_gen_explained.txt +39 -0
  11. data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
  12. data/docs/deprec-1.x/notes.txt +12 -0
  13. data/docs/old/deprec_banner.gif +0 -0
  14. data/docs/windows_linux.txt +350 -0
  15. data/docs/xen/traffic_monitoring_with_vnstat.txt +95 -0
  16. data/docs/xen/xen-tools-notes.txt +31 -0
  17. data/docs/xen/xen_on_hardy.txt +39 -0
  18. data/lib/deprec.rb +42 -0
  19. data/lib/deprec/capistrano_extensions.rb +446 -0
  20. data/lib/deprec/recipes.rb +7 -0
  21. data/lib/deprec/recipes/aoe.rb +79 -0
  22. data/lib/deprec/recipes/app/mongrel.rb +213 -0
  23. data/lib/deprec/recipes/app/passenger.rb +190 -0
  24. data/lib/deprec/recipes/ar_sendmail.rb +67 -0
  25. data/lib/deprec/recipes/aspell.rb +22 -0
  26. data/lib/deprec/recipes/canonical.rb +68 -0
  27. data/lib/deprec/recipes/cap.rb +39 -0
  28. data/lib/deprec/recipes/chef.rb +68 -0
  29. data/lib/deprec/recipes/collectd.rb +112 -0
  30. data/lib/deprec/recipes/db/couchdb.rb +107 -0
  31. data/lib/deprec/recipes/db/mysql.rb +194 -0
  32. data/lib/deprec/recipes/db/postgresql.rb +104 -0
  33. data/lib/deprec/recipes/db/sqlite.rb +37 -0
  34. data/lib/deprec/recipes/ddclient.rb +51 -0
  35. data/lib/deprec/recipes/deprec.rb +167 -0
  36. data/lib/deprec/recipes/deprecated.rb +71 -0
  37. data/lib/deprec/recipes/drbd.rb +137 -0
  38. data/lib/deprec/recipes/dummy.rb +22 -0
  39. data/lib/deprec/recipes/example.rb +115 -0
  40. data/lib/deprec/recipes/git.rb +97 -0
  41. data/lib/deprec/recipes/gitosis.rb.disabled +55 -0
  42. data/lib/deprec/recipes/glusterfs.rb +176 -0
  43. data/lib/deprec/recipes/god.rb +70 -0
  44. data/lib/deprec/recipes/haproxy.rb +115 -0
  45. data/lib/deprec/recipes/heartbeat.rb +138 -0
  46. data/lib/deprec/recipes/imagemagick/imagemagick_bin.rb +24 -0
  47. data/lib/deprec/recipes/imagemagick/imagemagick_src.rb +39 -0
  48. data/lib/deprec/recipes/integrity.rb +108 -0
  49. data/lib/deprec/recipes/iptables.rb +94 -0
  50. data/lib/deprec/recipes/java.rb +23 -0
  51. data/lib/deprec/recipes/keepalived.rb +78 -0
  52. data/lib/deprec/recipes/ldap.rb +52 -0
  53. data/lib/deprec/recipes/logrotate.rb +56 -0
  54. data/lib/deprec/recipes/lvm.rb +20 -0
  55. data/lib/deprec/recipes/memcache.rb +49 -0
  56. data/lib/deprec/recipes/mongodb.rb +94 -0
  57. data/lib/deprec/recipes/monit.rb +135 -0
  58. data/lib/deprec/recipes/mysql_proxy.rb +67 -0
  59. data/lib/deprec/recipes/nagios.rb +361 -0
  60. data/lib/deprec/recipes/network.rb +116 -0
  61. data/lib/deprec/recipes/ntp.rb +103 -0
  62. data/lib/deprec/recipes/php.rb +58 -0
  63. data/lib/deprec/recipes/postfix.rb +115 -0
  64. data/lib/deprec/recipes/profiles.rb +125 -0
  65. data/lib/deprec/recipes/raid/amcc_3ware.rb +21 -0
  66. data/lib/deprec/recipes/rails.rb +330 -0
  67. data/lib/deprec/recipes/redhat_cluster.rb +228 -0
  68. data/lib/deprec/recipes/redis.rb +90 -0
  69. data/lib/deprec/recipes/ruby/mri.rb +55 -0
  70. data/lib/deprec/recipes/ruby/ree.rb +40 -0
  71. data/lib/deprec/recipes/rvm.rb +32 -0
  72. data/lib/deprec/recipes/s3utils.rb +63 -0
  73. data/lib/deprec/recipes/sphinx/thinking_sphinx.rb +105 -0
  74. data/lib/deprec/recipes/sphinx/ultrasphinx.rb +86 -0
  75. data/lib/deprec/recipes/ssh.rb +147 -0
  76. data/lib/deprec/recipes/ssl.rb +56 -0
  77. data/lib/deprec/recipes/starling.rb +119 -0
  78. data/lib/deprec/recipes/svn.rb +171 -0
  79. data/lib/deprec/recipes/syslog.rb +63 -0
  80. data/lib/deprec/recipes/trac.rb.disabled +277 -0
  81. data/lib/deprec/recipes/tsung.rb +74 -0
  82. data/lib/deprec/recipes/ubuntu.rb +90 -0
  83. data/lib/deprec/recipes/users.rb +90 -0
  84. data/lib/deprec/recipes/utils.rb +58 -0
  85. data/lib/deprec/recipes/vnstat.rb +85 -0
  86. data/lib/deprec/recipes/web/apache.rb +143 -0
  87. data/lib/deprec/recipes/web/nginx.rb +172 -0
  88. data/lib/deprec/recipes/wordpress.rb.notworking +96 -0
  89. data/lib/deprec/recipes/wpmu.rb +103 -0
  90. data/lib/deprec/recipes/xen.rb +364 -0
  91. data/lib/deprec/recipes/xentools.rb +101 -0
  92. data/lib/deprec/recipes_minus_rails.rb +125 -0
  93. data/lib/deprec/templates/aoe/aoe-init +55 -0
  94. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  95. data/lib/deprec/templates/apache/namevirtualhosts.conf +5 -0
  96. data/lib/deprec/templates/apache/ports.conf.erb +5 -0
  97. data/lib/deprec/templates/apache/status.conf.erb +17 -0
  98. data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
  99. data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
  100. data/lib/deprec/templates/chef/chef.json.erb +1 -0
  101. data/lib/deprec/templates/chef/solo.rb +2 -0
  102. data/lib/deprec/templates/collectd/collectd-init.d +153 -0
  103. data/lib/deprec/templates/collectd/collectd.conf.erb +686 -0
  104. data/lib/deprec/templates/ddclient/ddclient.conf.erb +11 -0
  105. data/lib/deprec/templates/ddclient/ddclient.erb +15 -0
  106. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  107. data/lib/deprec/templates/drbd/drbd.conf.erb +531 -0
  108. data/lib/deprec/templates/glusterfs/glusterfsd-init.erb +95 -0
  109. data/lib/deprec/templates/gnbd_client/cluster.conf.erb +21 -0
  110. data/lib/deprec/templates/gnbd_client/clvm-default.erb +3 -0
  111. data/lib/deprec/templates/gnbd_client/cman-default.erb +6 -0
  112. data/lib/deprec/templates/gnbd_client/gnbdimports.conf.erb +1 -0
  113. data/lib/deprec/templates/gnbd_server/cluster.conf.erb +20 -0
  114. data/lib/deprec/templates/gnbd_server/clvm-default.erb +3 -0
  115. data/lib/deprec/templates/gnbd_server/cman-default.erb +6 -0
  116. data/lib/deprec/templates/gnbd_server/gnbd-server-default.erb +1 -0
  117. data/lib/deprec/templates/gnbd_server/gnbdexports.conf.erb +1 -0
  118. data/lib/deprec/templates/god/god-conf.erb +2 -0
  119. data/lib/deprec/templates/god/god-init.erb +47 -0
  120. data/lib/deprec/templates/haproxy/haproxy-init.d +120 -0
  121. data/lib/deprec/templates/haproxy/haproxy.cfg.erb +31 -0
  122. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  123. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  124. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  125. data/lib/deprec/templates/integrity/apache_vhost.erb +4 -0
  126. data/lib/deprec/templates/integrity/config.ru.erb +21 -0
  127. data/lib/deprec/templates/integrity/config.yml.erb +43 -0
  128. data/lib/deprec/templates/iptables/firewall-default.erb +13 -0
  129. data/lib/deprec/templates/iptables/firewall-init.erb +171 -0
  130. data/lib/deprec/templates/keepalived/keepalived.conf.erb +18 -0
  131. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  132. data/lib/deprec/templates/mongodb/mongodb-init.d +88 -0
  133. data/lib/deprec/templates/mongrel/apache_vhost.conf.erb +148 -0
  134. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  135. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  136. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  137. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  138. data/lib/deprec/templates/mongrel/nginx_vhost.conf.erb +41 -0
  139. data/lib/deprec/templates/monit/monit-init-script +104 -0
  140. data/lib/deprec/templates/monit/monitrc.erb +250 -0
  141. data/lib/deprec/templates/monit/nothing.monitrc +0 -0
  142. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  143. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  144. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  145. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  146. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  147. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  148. data/lib/deprec/templates/mysql_proxy/mysql-proxy-default.erb +4 -0
  149. data/lib/deprec/templates/nagios/README +32 -0
  150. data/lib/deprec/templates/nagios/cgi.cfg.erb +357 -0
  151. data/lib/deprec/templates/nagios/check_linux_free_memory.pl +118 -0
  152. data/lib/deprec/templates/nagios/check_mongrel_cluster.rb +82 -0
  153. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  154. data/lib/deprec/templates/nagios/mrtg.cfg +180 -0
  155. data/lib/deprec/templates/nagios/nagios.cfg.erb +1325 -0
  156. data/lib/deprec/templates/nagios/nrpe.cfg.erb +222 -0
  157. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  158. data/lib/deprec/templates/nagios/objects/commands.cfg.erb +265 -0
  159. data/lib/deprec/templates/nagios/objects/contacts.cfg.erb +89 -0
  160. data/lib/deprec/templates/nagios/objects/hosts.cfg.erb +114 -0
  161. data/lib/deprec/templates/nagios/objects/localhost.cfg.erb +116 -0
  162. data/lib/deprec/templates/nagios/objects/services.cfg.erb +165 -0
  163. data/lib/deprec/templates/nagios/objects/timeperiods.cfg.erb +94 -0
  164. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  165. data/lib/deprec/templates/network/hostname.erb +1 -0
  166. data/lib/deprec/templates/network/hosts.erb +2 -0
  167. data/lib/deprec/templates/network/interfaces.erb +18 -0
  168. data/lib/deprec/templates/network/resolv.conf.erb +6 -0
  169. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  170. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  171. data/lib/deprec/templates/nginx/nginx-init-script +62 -0
  172. data/lib/deprec/templates/nginx/nginx.conf.erb +125 -0
  173. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  174. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  175. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  176. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  177. data/lib/deprec/templates/passenger/apache_vhost.erb +29 -0
  178. data/lib/deprec/templates/passenger/logrotate.conf.erb +12 -0
  179. data/lib/deprec/templates/passenger/passenger.conf.erb +21 -0
  180. data/lib/deprec/templates/passenger/passenger.load.erb +3 -0
  181. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  182. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  183. data/lib/deprec/templates/postfix/main.cf.erb +36 -0
  184. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  185. data/lib/deprec/templates/redis/redis-conf.erb +132 -0
  186. data/lib/deprec/templates/redis/redis-init.erb +50 -0
  187. data/lib/deprec/templates/s3utils/s3cfg +35 -0
  188. data/lib/deprec/templates/s3utils/s3config.yml +3 -0
  189. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  190. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  191. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  192. data/lib/deprec/templates/ssl/make-ssl-cert +138 -0
  193. data/lib/deprec/templates/ssl/ssl-cert-snakeoil.key +15 -0
  194. data/lib/deprec/templates/ssl/ssl-cert-snakeoil.pem +19 -0
  195. data/lib/deprec/templates/starling/monit.conf.erb +14 -0
  196. data/lib/deprec/templates/starling/starling-init-script.erb +71 -0
  197. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  198. data/lib/deprec/templates/syslog/syslog.conf.erb +71 -0
  199. data/lib/deprec/templates/syslog/syslogd.erb +13 -0
  200. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  201. data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
  202. data/lib/deprec/templates/trac/trac.ini.erb +169 -0
  203. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  204. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  205. data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
  206. data/lib/deprec/templates/tsung/tsung.xml.erb +47 -0
  207. data/lib/deprec/templates/vnstat/config.php +57 -0
  208. data/lib/deprec/templates/wordpress/apache2_wordpress_vhost.conf.erb +31 -0
  209. data/lib/deprec/templates/wordpress/wp-config.php.erb +31 -0
  210. data/lib/deprec/templates/wpmu/apache_vhost.conf.erb +13 -0
  211. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  212. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  213. data/lib/deprec/templates/xen/xend-init.erb +57 -0
  214. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  215. data/lib/deprec/templates/xentools/100-ubuntu-setup +26 -0
  216. data/lib/deprec/templates/xentools/15-disable-hwclock +40 -0
  217. data/lib/deprec/templates/xentools/30-disable-gettys +57 -0
  218. data/lib/deprec/templates/xentools/31-ubuntu-setup +32 -0
  219. data/lib/deprec/templates/xentools/40-setup-networking +145 -0
  220. data/lib/deprec/templates/xentools/98-custom +17 -0
  221. data/lib/deprec/templates/xentools/xen-tools.conf.erb +278 -0
  222. data/lib/deprec/templates/xentools/xm.tmpl.erb +138 -0
  223. data/lib/deprec_cmd_completion.sh +26 -0
  224. data/lib/deprec_minus_rails.rb +12 -0
  225. data/lib/vmbuilder_plugins/all.rb +20 -0
  226. data/lib/vmbuilder_plugins/apt.rb +93 -0
  227. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  228. data/lib/vmbuilder_plugins/gem.rb +100 -0
  229. data/lib/vmbuilder_plugins/std.rb +203 -0
  230. metadata +304 -0
@@ -0,0 +1,138 @@
1
+ #
2
+ # Configuration file for the Xen instance {$hostname}, created
3
+ # by xen-tools {$xen_tools_version} on { scalar localtime }.
4
+ #
5
+
6
+ #
7
+ # Kernel + memory size
8
+ #
9
+ { if ( ( $kernel ) && ( !defined($pygrub)) )
10
+ {
11
+ $OUT.= "kernel = '$kernel'";
12
+ }
13
+ }
14
+ { if ( ( $initrd ) && ( !defined($pygrub)) )
15
+ {
16
+ $OUT.= "ramdisk = '$initrd'";
17
+ }
18
+ }
19
+ {
20
+ if ( $pygrub )
21
+ {
22
+ $OUT .= "bootloader = '/usr/bin/pygrub'\n";
23
+ }
24
+ }
25
+ memory = '{$memory}'
26
+
27
+ #
28
+ # Disk device(s).
29
+ #
30
+ {
31
+ if ( !defined($image_vbd ) )
32
+ {
33
+ for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
34
+ {
35
+ if ( $PARTITIONS[$i]{'mountpoint'} eq '/' )
36
+ {
37
+ $OUT .= "root = '/dev/$device" . ($i + 1) . " ro'\n";
38
+ }
39
+ }
40
+ $OUT .= "disk = [\n";
41
+ for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
42
+ {
43
+ $OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
44
+ }
45
+ $OUT .= " ]\n";
46
+ }
47
+ }
48
+
49
+ #
50
+ # Physical volumes
51
+ #
52
+ {
53
+ if ( ( $swap_vbd ) && ( $image_vbd ) )
54
+ {
55
+ $OUT .= "root = '/dev/$device" . "2 ro'\n";
56
+
57
+ $OUT .= "disk = [ ";
58
+
59
+ if ( $image_vbd )
60
+ {
61
+ $OUT .= "'$image_vbd," . $device . "2,w'";
62
+
63
+ }
64
+
65
+ if ( $swap_vbd )
66
+ {
67
+ if ( $image_vbd )
68
+ {
69
+ $OUT .= ",";
70
+ }
71
+
72
+ $OUT .= "'$swap_vbd," . $device . "1,w'";
73
+ }
74
+ $OUT .= " ]\n";
75
+ }
76
+ }
77
+
78
+
79
+ #
80
+ # Hostname
81
+ #
82
+ name = '{$hostname}'
83
+
84
+ #
85
+ # Networking
86
+ #
87
+ { if ( $dhcp )
88
+ {
89
+ $OUT .= "dhcp = 'dhcp'\n";
90
+
91
+ # Setup the mac address, if present.
92
+ my $m = '';
93
+ if ( $mac )
94
+ {
95
+ $m = "mac=$mac"
96
+ }
97
+
98
+ $OUT .= "vif = [ '$m' ]";
99
+ }
100
+ else
101
+ {
102
+ #
103
+ # Setup the mac address, if present.
104
+ #
105
+ my $m = '';
106
+ if ( $mac )
107
+ {
108
+ $m = ",mac=$mac"
109
+ }
110
+
111
+ my $vn = '';
112
+ if ( $vifname )
113
+ {
114
+ $vn = ",vifname=$vifname";
115
+ }
116
+
117
+ $OUT .= "vif = [ 'ip=$ip1";
118
+ $OUT .= "$m";
119
+ $OUT .= "$vn";
120
+ $OUT .= "' ]";
121
+ }
122
+ }
123
+
124
+ #
125
+ # Behaviour
126
+ #
127
+ on_poweroff = 'destroy'
128
+ on_reboot = 'restart'
129
+ on_crash = 'restart'
130
+
131
+
132
+ { if ( $admins )
133
+ {
134
+ $OUT .= "xen_shell = '$admins'\n";
135
+ }
136
+ }
137
+
138
+ extra = '2 console=xvc0'
@@ -0,0 +1,26 @@
1
+ export CAP_TASKS=$( cap -T | grep '^cap' | cut -d' ' -f 2 )
2
+ _cap()
3
+ {
4
+ local cur tasks colonprefixes
5
+ COMPREPLY=()
6
+ cur="${COMP_WORDS[COMP_CWORD]}"
7
+
8
+ tasks=$CAP_TASKS
9
+ # uncomment this for dynamic task lists
10
+ # tasks=$( cap -T | cut -d' ' -f 2 | grep deprec)
11
+
12
+ # Work-around bash_completion issue where bash interprets a colon
13
+ # as a separator.
14
+ # Work-around borrowed from the darcs work-around for the same
15
+ # issue.
16
+ colonprefixes=${cur%"${cur##*:}"}
17
+ COMPREPLY=( $(compgen -W "${tasks}" -- ${cur}) )
18
+ local i=${#COMPREPLY[*]}
19
+ while [ $((--i)) -ge 0 ]; do
20
+ COMPREPLY[$i]=${COMPREPLY[$i]#"$colonprefixes"}
21
+ done
22
+
23
+ return 0
24
+
25
+ }
26
+ complete -F _cap cap
@@ -0,0 +1,12 @@
1
+ unless Capistrano::Configuration.respond_to?(:instance)
2
+ abort "deprec2 requires Capistrano 2"
3
+ end
4
+
5
+ require "#{File.dirname(__FILE__)}/deprec/capistrano_extensions"
6
+ require "#{File.dirname(__FILE__)}/vmbuilder_plugins/all"
7
+
8
+ # Don't load the rails recipes in ~/.caprc
9
+ #
10
+ # This excludes the 'before' and 'after' tasks deprec adds to
11
+ # facilitate rails setup.
12
+ require "#{File.dirname(__FILE__)}/deprec/recipes_minus_rails"
@@ -0,0 +1,20 @@
1
+ # =all.rb: Load all the Capistrano Plugins in the directory.
2
+ #
3
+ # Require all other ruby files in the directory.
4
+ #
5
+ # ----
6
+ # Copyright (c) 2007 Neil Wilson, Aldur Systems Ltd
7
+ #
8
+ # Licensed under the GNU Public License v2. No warranty is provided.
9
+ # ----
10
+ # = Usage
11
+ #
12
+ # require 'vmbuilder_plugins/all'
13
+
14
+ # Splitting and joining __FILE__ deals with the current directory case
15
+ # properly
16
+ Dir[File.join( File.dirname(__FILE__), '*.rb')].each do |plugin_name|
17
+ unless plugin_name == File.join(File.dirname(__FILE__), File.basename(__FILE__))
18
+ require plugin_name
19
+ end
20
+ end
@@ -0,0 +1,93 @@
1
+ # =apt.rb: Debian 'apt' Installer library
2
+ # Capistrano plugin module to install and manage apt packages
3
+ #
4
+ # ----
5
+ # Copyright (c) 2007 Neil Wilson, Aldur Systems Ltd
6
+ #
7
+ # Licensed under the GNU Public License v2. No warranty is provided.
8
+
9
+ require 'capistrano'
10
+
11
+ # = Purpose
12
+ # Apt is a Capistrano plugin module providing a set of methods
13
+ # that invoke the *apt* package manager (as used in Debian and Ubuntu)
14
+ #
15
+ # Installs within Capistrano as the plugin _apt_.
16
+ #
17
+ # =Usage
18
+ #
19
+ # require 'vmbuilder_plugins/apt'
20
+ #
21
+ # Prefix all calls to the library with <tt>apt.</tt>
22
+ #
23
+ module Apt
24
+
25
+ # Default apt-get command - reduces any interactivity to the minimum.
26
+ APT_GET="DEBCONF_TERSE='yes' DEBIAN_PRIORITY='critical' DEBIAN_FRONTEND=noninteractive apt-get"
27
+
28
+ # Run the apt install program across the package list in 'packages'.
29
+ # Select those packages referenced by <tt>:base</tt> and the +version+
30
+ # of the distribution you want to use.
31
+ def install(packages, version, options={})
32
+ update
33
+ special_options="--allow-unauthenticated" if version != :stable
34
+ send(run_method, %{
35
+ sh -c "#{APT_GET} -qyu --force-yes #{special_options.to_s} install #{package_list(packages, version)}"
36
+ }, options)
37
+ end
38
+
39
+ # Run an apt clean
40
+ def clean(options={})
41
+ send(run_method, %{sh -c "#{APT_GET} -qy clean"}, options)
42
+ end
43
+
44
+ # Run an apt autoclean
45
+ def autoclean(options={})
46
+ send(run_method, %{sh -c "#{APT_GET} -qy autoclean"}, options)
47
+ end
48
+
49
+ # Run an apt distribution upgrade
50
+ def dist_upgrade(options={})
51
+ update
52
+ send(run_method, %{sh -c "#{APT_GET} -qy dist-upgrade"}, options)
53
+ end
54
+
55
+ # Run an apt upgrade. Use dist_upgrade instead if you want to upgrade
56
+ # the critical base packages.
57
+ def upgrade(options={})
58
+ update
59
+ send(run_method, %{sh -c "#{APT_GET} -qy upgrade"}, options)
60
+ end
61
+
62
+ # Run an apt update.
63
+ def update(options={})
64
+ send(run_method, %{sh -c "#{APT_GET} -qy update"}, options)
65
+ end
66
+
67
+ # RPM package install via alien
68
+ def rpm_install(packages, options={})
69
+ install({:base => %w(wget alien) }, :base)
70
+ send(run_method, "wget -Ncq #{packages.join(' ')}", options)
71
+ files=packages.collect { |package| File.basename(package) }
72
+ send(run_method, "alien -i #{files.join(' ')}", options)
73
+ end
74
+
75
+ # Clear the source list and package cache
76
+ def clear_cache(options={})
77
+ clean
78
+ cmd="rm -f /var/cache/apt/*.bin /var/lib/apt/lists/*_* /var/lib/apt/lists/partial/*"
79
+ send(run_method, cmd, options)
80
+ end
81
+
82
+ private
83
+
84
+ # Provides a string containing all the package names in the base
85
+ #list plus those in +version+.
86
+ def package_list(packages, version)
87
+ packages[:base].to_a.join(' ') + ' ' + packages[version].to_a.join(' ')
88
+ end
89
+
90
+ end
91
+
92
+ Capistrano.plugin :apt, Apt
93
+ # vim: nowrap sw=2 sts=2 ts=8 ff=unix ft=ruby:
@@ -0,0 +1,76 @@
1
+ # =emerge.rb: Gentoo 'emerge' Installer library
2
+ # Capistrano task library to install and manage portage packages
3
+ #
4
+ # Copyright (c) 2007 monki(Wesley Beary)
5
+ #
6
+ # inspiration: vmbuilder by Neil Wilson, Aldur Systems Ltd
7
+ #
8
+ # Licenced under the GNU Public License v2. No warranty is provided.
9
+
10
+ require 'capistrano'
11
+
12
+ # =Purpose
13
+ # emerge is a Capistrano plugin module providing a set of methods
14
+ # that invoke the portage package manage (as used in Gentoo)
15
+ #
16
+ # Installs within Capistrano as the plugin _emerge_.
17
+ #
18
+ # =Usage
19
+ #
20
+ # require 'marshall/plugins/emerge'
21
+ #
22
+ # Prefix all calls to the library with <tt>emerge.</tt>
23
+ #
24
+ module Emerge
25
+ # Default emerge command - reduce interactivity to the minimum
26
+ EMERGE="emerge -q"
27
+
28
+ # Emerge a new package or packages
29
+ def install(packages, options={})
30
+ cmd = <<-CMD
31
+ sh -c "#{EMERGE} #{packages.join(" ")}"
32
+ CMD
33
+ sudo(cmd, options)
34
+ end
35
+
36
+ # Run clean old/unused packages
37
+ def clean(options={})
38
+ cmd = <<-CMD
39
+ sh -c "#{EMERGE} -clean"
40
+ CMD
41
+ sudo(cmd, options)
42
+ end
43
+
44
+ # Upgrade installed package list
45
+ def upgrade(options={})
46
+ cmd = <<-CMD
47
+ sh -c "#{EMERGE} --sync"
48
+ CMD
49
+ sudo(cmd, options)
50
+ end
51
+
52
+ # Update portage
53
+ def update_system(options={})
54
+ cmd = <<-CMD
55
+ sh -c "#{EMERGE} portage"
56
+ CMD
57
+ sudo(cmd, options)
58
+ end
59
+
60
+ # Update all installed packages
61
+ def update(options={})
62
+ cmd = <<-CMD
63
+ sh -c "#{EMERGE} --update --deep --newuse world"
64
+ CMD
65
+ sudo(cmd, options)
66
+ end
67
+
68
+ # Boot script manipulation command
69
+ def rc_update(packages, setting)
70
+ packages.each do |service|
71
+ sudo "rc_update add #{service} #{setting}"
72
+ end
73
+ end
74
+ end
75
+
76
+ Capistrano.plugin :emerge, Emerge
@@ -0,0 +1,100 @@
1
+ # =gem.rb: Gem Installer library
2
+ # Capistrano library to install and manage Ruby Gems.
3
+ #
4
+ # ----
5
+ # Copyright (c) 2007 Neil Wilson, Aldur Systems Ltd
6
+ #
7
+ # Licensed under the GNU Public License v2. No warranty is provided.
8
+
9
+ require 'capistrano'
10
+
11
+ # = Purpose
12
+ # Gem is a Capistrano plugin module providing a set of methods
13
+ # that invoke the *gem* package manager.
14
+ #
15
+ # Installs within Capistrano as the plugin _gem_.
16
+ #
17
+ # =Usage
18
+ #
19
+ # require 'vmbuilder_plugins/gem'
20
+ #
21
+ # Prefix all calls to the library with <tt>gem.</tt>
22
+ #
23
+ module Gem
24
+
25
+ # Default install command
26
+ #
27
+ # * doesn't install documentation
28
+ # * installs all required dependencies automatically.
29
+ #
30
+ GEM_INSTALL="gem install --no-rdoc --no-ri"
31
+ GEM_UPDATE=GEM_INSTALL.sub("install", "update")
32
+ GEM_UNINSTALL="gem uninstall"
33
+
34
+ # Upgrade the *gem* system to the latest version. Runs via *sudo*
35
+ def update_system
36
+ send(run_method, "#{GEM_UPDATE} --system")
37
+ end
38
+
39
+ # Updates all the installed gems to the latest version. Runs via *sudo*.
40
+ # Don't use this command if any of the gems require a version selection.
41
+ def upgrade
42
+ send(run_method, GEM_UPDATE)
43
+ end
44
+
45
+ # Removes old versions of gems from installation area.
46
+ def cleanup
47
+ send(run_method, "gem cleanup")
48
+ end
49
+
50
+ # Installs the gems detailed in +packages+, selecting version +version+ if
51
+ # specified.
52
+ #
53
+ # +packages+ can be a single string or an array of strings.
54
+ #
55
+ def install(packages, version=nil)
56
+ send(run_method,"#{GEM_INSTALL} #{if version then '-v '+version.to_s end} #{packages.to_a.join(' ')}")
57
+ end
58
+
59
+ # Uninstalls the gems detailed in +packages+, selecting version +version+ if
60
+ # specified.
61
+ #
62
+ # +packages+ can be a single string or an array of strings.
63
+ #
64
+ def uninstall(packages, version=nil)
65
+ send(run_method,"#{GEM_UNINSTALL} #{if version then '-v '+version.to_s end} #{packages.to_a.join(' ')}")
66
+ end
67
+
68
+ # Auto selects a gem from a list and installs it.
69
+ #
70
+ # *gem* has no mechanism on the command line of disambiguating builds for
71
+ # different platforms, and instead asks the user. This method has the necessary
72
+ # conversation to select the +version+ relevant to +platform+ (or the one nearest
73
+ # the top of the list if you don't specify +version+).
74
+ def select(package, version=nil, platform='ruby')
75
+ selections={}
76
+ cmd="#{GEM_INSTALL} #{if version then '-v '+version.to_s end} #{package}"
77
+ send run_method, cmd do |channel, stream, data|
78
+ data.each_line do | line |
79
+ case line
80
+ when /\s(\d+).*\(#{platform}\)/
81
+ if selections[channel[:host]].nil?
82
+ selections[channel[:host]]=$1.dup+"\n"
83
+ logger.info "Selecting #$&", "#{stream} :: #{channel[:host]}"
84
+ end
85
+ when /\s\d+\./
86
+ # Discard other selections from data stream
87
+ when /^>/
88
+ channel.send_data selections[channel[:host]]
89
+ logger.debug line, "#{stream} :: #{channel[:host]}"
90
+ else
91
+ logger.info line, "#{stream} :: #{channel[:host]}"
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ Capistrano.plugin :gem2, Gem
100
+ # vim: nowrap sw=2 sts=2 ts=8 ff=unix ft=ruby: