centostrano 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. data/CHANGELOG +215 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +166 -0
  5. data/THANKS +5 -0
  6. data/bin/centify +137 -0
  7. data/docs/ANNOUNCE.deprec2 +47 -0
  8. data/docs/README.install +88 -0
  9. data/docs/README.nagios +28 -0
  10. data/docs/README.rails +20 -0
  11. data/docs/README.svn +31 -0
  12. data/docs/ROADMAP.txt +74 -0
  13. data/docs/deprec-1.x/deprec-1.x.quickstart +50 -0
  14. data/docs/deprec-1.x/notes.txt +12 -0
  15. data/docs/deprec_banner.gif +0 -0
  16. data/lib/centostrano.rb +9 -0
  17. data/lib/deprec/capistrano_extensions.rb +391 -0
  18. data/lib/deprec/centostrano.rb +46 -0
  19. data/lib/deprec/recipes/apache.rb +188 -0
  20. data/lib/deprec/recipes/canonical.rb +57 -0
  21. data/lib/deprec/recipes/deprec.rb +188 -0
  22. data/lib/deprec/recipes/deprecated.rb +71 -0
  23. data/lib/deprec/recipes/example.rb +115 -0
  24. data/lib/deprec/recipes/git.rb +106 -0
  25. data/lib/deprec/recipes/gitosis.rb +134 -0
  26. data/lib/deprec/recipes/logrotate.rb +54 -0
  27. data/lib/deprec/recipes/memcache.rb +53 -0
  28. data/lib/deprec/recipes/merb.rb +57 -0
  29. data/lib/deprec/recipes/mongrel.rb +220 -0
  30. data/lib/deprec/recipes/monit.rb +139 -0
  31. data/lib/deprec/recipes/mysql.rb +147 -0
  32. data/lib/deprec/recipes/nginx.rb +172 -0
  33. data/lib/deprec/recipes/postgresql.rb +132 -0
  34. data/lib/deprec/recipes/rails.rb +297 -0
  35. data/lib/deprec/recipes/ruby.rb +71 -0
  36. data/lib/deprec/recipes/sphinx.rb +89 -0
  37. data/lib/deprec/recipes/ssh.rb +93 -0
  38. data/lib/deprec/recipes/svn.rb +167 -0
  39. data/lib/deprec/recipes/users.rb +90 -0
  40. data/lib/deprec/recipes.rb +33 -0
  41. data/lib/deprec/templates/aoe/aoe-init +55 -0
  42. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  43. data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
  44. data/lib/deprec/templates/apache/httpd.conf +465 -0
  45. data/lib/deprec/templates/apache/index.html.erb +37 -0
  46. data/lib/deprec/templates/apache/master.css +72 -0
  47. data/lib/deprec/templates/centos/repository.erb +6 -0
  48. data/lib/deprec/templates/coraid/aoe-init +55 -0
  49. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  50. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  51. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  52. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  53. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  54. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  55. data/lib/deprec/templates/mongrel/logrotate.erb +0 -0
  56. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  57. data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
  58. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  59. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  60. data/lib/deprec/templates/monit/monit-init-script +104 -0
  61. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  62. data/lib/deprec/templates/monit/nothing +0 -0
  63. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  64. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  65. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  66. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  67. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  68. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  69. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  70. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  71. data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
  72. data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
  73. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  74. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  75. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  76. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  77. data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
  78. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  79. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  80. data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
  81. data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
  82. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  83. data/lib/deprec/templates/network/hostname.erb +1 -0
  84. data/lib/deprec/templates/network/hosts.erb +2 -0
  85. data/lib/deprec/templates/network/interfaces.erb +22 -0
  86. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  87. data/lib/deprec/templates/nginx/logrotate.erb +0 -0
  88. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  89. data/lib/deprec/templates/nginx/nginx-init-script +109 -0
  90. data/lib/deprec/templates/nginx/nginx.conf.erb +120 -0
  91. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  92. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  93. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  94. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  95. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  96. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  97. data/lib/deprec/templates/postfix/main.cf.erb +41 -0
  98. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  99. data/lib/deprec/templates/postgresql/pg_hba.conf.erb +76 -0
  100. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  101. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  102. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  103. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  104. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  105. data/lib/deprec/templates/trac/trac.ini.erb +106 -0
  106. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  107. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  108. data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
  109. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  110. data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
  111. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  112. data/lib/deprec/templates/xen/xend-init.erb +69 -0
  113. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  114. data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
  115. data/lib/deprec_cmd_completion.sh +26 -0
  116. data/lib/vmbuilder_plugins/all.rb +20 -0
  117. data/lib/vmbuilder_plugins/apt.rb +93 -0
  118. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  119. data/lib/vmbuilder_plugins/gem.rb +90 -0
  120. data/lib/vmbuilder_plugins/std.rb +203 -0
  121. metadata +207 -0
@@ -0,0 +1,69 @@
1
+ #!/bin/bash
2
+ ### BEGIN INIT INFO
3
+ # Provides: xend
4
+ # Required-Start: $local_fs
5
+ # Required-Stop: $local_fs
6
+ # Default-Start: 2 3 4 5
7
+ # Default-Stop: S 0 1 6
8
+ # Short-Description: XEN control daemon
9
+ # Description: XEN control daemon
10
+ ### END INIT INFO
11
+
12
+ if ! grep -q "control_d" /proc/xen/capabilities ; then
13
+ exit 0
14
+ fi
15
+
16
+ # Wait for Xend to be up
17
+ function await_daemons_up
18
+ {
19
+ i=1
20
+ rets=10
21
+ xend status
22
+ while [ $? -ne 0 -a $i -lt $rets ]; do
23
+ sleep 1
24
+ echo -n .
25
+ i=$(($i + 1))
26
+ xend status
27
+ done
28
+ }
29
+
30
+ # Rules for ip forwarding and NAT
31
+ # echo 1 >/proc/sys/net/ipv4/ip_forward
32
+ # echo 1 >/proc/sys/net/ipv4/conf/eth0/proxy_arp
33
+ # echo 1 >/proc/sys/net/ipv4/conf/eth1/proxy_arp
34
+ # IPTABLES=/sbin/iptables
35
+ # EXTIF=eth0
36
+ # INTIF=eth1
37
+ # $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
38
+ # $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
39
+ # $IPTABLES -t nat -A POSTROUTING -o $EXTIF -s 192.168.1.0/24 -j MASQUERADE
40
+
41
+
42
+ case "$1" in
43
+ start)
44
+ xend start
45
+ await_daemons_up
46
+ ;;
47
+ stop)
48
+ /etc/init.d/xendomains stop # make sure domains are shut down
49
+ xend stop
50
+ ;;
51
+ status)
52
+ xend status
53
+ ;;
54
+ reload)
55
+ xend reload
56
+ ;;
57
+ restart|force-reload)
58
+ xend restart
59
+ await_daemons_up
60
+ ;;
61
+ *)
62
+ # do not advertise unreasonable commands that there is no reason
63
+ # to use with this device
64
+ echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
65
+ exit 1
66
+ esac
67
+
68
+ exit $?
69
+
@@ -0,0 +1,137 @@
1
+ ## Path: System/xen
2
+ ## Description: xen domain start/stop on boot
3
+ ## Type: string
4
+ ## Default:
5
+ #
6
+ # The xendomains script can send SysRq requests to domains on shutdown.
7
+ # If you don't want to MIGRATE, SAVE, or SHUTDOWN, this may be a possibility
8
+ # to do a quick and dirty shutdown ("s e i u o") or at least sync the disks
9
+ # of the domains ("s").
10
+ #
11
+ XENDOMAINS_SYSRQ=""
12
+
13
+ ## Type: integer
14
+ ## Default: 100000
15
+ #
16
+ # If XENDOMAINS_SYSRQ is set, this variable determines how long to wait
17
+ # (in microseconds) after each SysRq, so the domain has a chance to react.
18
+ # If you want to a quick'n'dirty shutdown via SysRq, you may want to set
19
+ # it to a relatively high value (1200000).
20
+ #
21
+ XENDOMAINS_USLEEP=100000
22
+
23
+ ## Type: integer
24
+ ## Default: 5000000
25
+ #
26
+ # When creating a guest domain, it is sensible to allow a little time for it
27
+ # to get started before creating another domain or proceeding through the
28
+ # boot process. Without this, the booting guests will thrash the disk as they
29
+ # start up. This timeout (in microseconds) specifies the delay after guest
30
+ # domain creation.
31
+ #
32
+ XENDOMAINS_CREATE_USLEEP=5000000
33
+
34
+ ## Type: string
35
+ ## Default: ""
36
+ #
37
+ # Set this to a non-empty string if you want to migrate virtual machines
38
+ # on shutdown. The string will be passed to the xm migrate DOMID command
39
+ # as is: It should contain the target IP address of the physical machine
40
+ # to migrate to and optionally parameters like --live. Leave empty if
41
+ # you don't want to try virtual machine relocation on shutdown.
42
+ # If migration succeeds, neither SAVE nor SHUTDOWN will be executed for
43
+ # that domain.
44
+ #
45
+ XENDOMAINS_MIGRATE=""
46
+
47
+ ## Type: string
48
+ ## Default: /var/lib/xen/save
49
+ #
50
+ # Directory to save running domains to when the system (dom0) is
51
+ # shut down. Will also be used to restore domains from if # XENDOMAINS_RESTORE
52
+ # is set (see below). Leave empty to disable domain saving on shutdown
53
+ # (e.g. because you rather shut domains down).
54
+ # If domain saving does succeed, SHUTDOWN will not be executed.
55
+ #
56
+ # XENDOMAINS_SAVE=/var/lib/xen/save
57
+
58
+ ## Type: string
59
+ ## Default: "--halt --wait"
60
+ #
61
+ # If neither MIGRATE nor SAVE were enabled or if they failed, you can
62
+ # try to shut down a domain by sending it a shutdown request. To do this,
63
+ # set this to "--halt --wait". Omit the "--wait" flag to avoid waiting
64
+ # for the domain to be really down. Leave empty to skip domain shutdown.
65
+ #
66
+ XENDOMAINS_SHUTDOWN="--halt --wait"
67
+
68
+ ## Type: string
69
+ ## Default: "--all --halt --wait"
70
+ #
71
+ # After we have gone over all virtual machines (resp. all automatically
72
+ # started ones, see XENDOMAINS_AUTO_ONLY below) in a loop and sent SysRq,
73
+ # migrated, saved and/or shutdown according to the settings above, we
74
+ # might want to shutdown the virtual machines that are still running
75
+ # for some reason or another. To do this, set this variable to
76
+ # "--all --halt --wait", it will be passed to xm shutdown.
77
+ # Leave it empty not to do anything special here.
78
+ # (Note: This will hit all virtual machines, even if XENDOMAINS_AUTO_ONLY
79
+ # is set.)
80
+ #
81
+ XENDOMAINS_SHUTDOWN_ALL="--all --halt --wait"
82
+
83
+ ## Type: boolean
84
+ ## Default: true
85
+ #
86
+ # This variable determines whether saved domains from XENDOMAINS_SAVE
87
+ # will be restored on system startup.
88
+ #
89
+ XENDOMAINS_RESTORE=true
90
+
91
+ ## Type: string
92
+ ## Default: /etc/xen/auto
93
+ #
94
+ # This variable sets the directory where domains configurations
95
+ # are stored that should be started on system startup automatically.
96
+ # Leave empty if you don't want to start domains automatically
97
+ # (or just don't place any xen domain config files in that dir).
98
+ # Note that the script tries to be clever if both RESTORE and AUTO are
99
+ # set: It will first restore saved domains and then only start domains
100
+ # in AUTO which are not running yet.
101
+ # Note that the name matching is somewhat fuzzy.
102
+ #
103
+ XENDOMAINS_AUTO=/etc/xen/auto
104
+
105
+ ## Type: boolean
106
+ ## Default: false
107
+ #
108
+ # If this variable is set to "true", only the domains started via config
109
+ # files in XENDOMAINS_AUTO will be treated according to XENDOMAINS_SYSRQ,
110
+ # XENDOMAINS_MIGRATE, XENDOMAINS_SAVE, XENDMAINS_SHUTDOWN; otherwise
111
+ # all running domains will be.
112
+ # Note that the name matching is somewhat fuzzy.
113
+ #
114
+ XENDOMAINS_AUTO_ONLY=false
115
+
116
+ ## Type: integer
117
+ ## Default: 300
118
+ #
119
+ # On xendomains stop, a number of xm commands (xm migrate, save, shutdown,
120
+ # shutdown --all) may be executed. In the worst case, these commands may
121
+ # stall forever, which will prevent a successful shutdown of the machine.
122
+ # If this variable is non-zero, the script will set up a watchdog timer
123
+ # for every of these xm commands and time it out after the number of seconds
124
+ # specified by this variable.
125
+ # Note that SHUTDOWN_ALL will not be called if no virtual machines or only
126
+ # zombies are still running, so you don't need to enable this timeout just
127
+ # for the zombie case.
128
+ # The setting should be large enough to make sure that migrate/save/shutdown
129
+ # can succeed. If you do live migrations, keep in mind that live migration
130
+ # of a 1GB machine over Gigabit ethernet may actually take something like
131
+ # 100s (assuming that live migration uses 10% of the network # bandwidth).
132
+ # Depending on the virtual machine, a shutdown may also require a significant
133
+ # amount of time. So better setup this variable to a huge number and hope the
134
+ # watchdog never fires.
135
+ #
136
+ XENDOMAINS_STOP_MAXWAIT=300
137
+
@@ -0,0 +1,85 @@
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 )
10
+ {
11
+ $OUT.= "kernel = '$kernel'";
12
+ }
13
+ }
14
+ { if ( $initrd )
15
+ {
16
+ $OUT.= "ramdisk = '$initrd'";
17
+ }
18
+ }
19
+ memory = '{$memory}'
20
+
21
+ #
22
+ # Disk device(s).
23
+ #
24
+ root = '/dev/{$device}1 ro'
25
+ { if ( $noswap )
26
+ {
27
+ $OUT .= "disk = [ '$image_vbd,$device" . "1,w' ]";
28
+ }
29
+ else
30
+ {
31
+ $OUT .= "disk = [ '$image_vbd,$device" . "1,w', '$swap_vbd,$device" . "2,w' ]";
32
+ }
33
+ }
34
+
35
+ #
36
+ # Hostname
37
+ #
38
+ name = '{$hostname}'
39
+
40
+ #
41
+ # Networking
42
+ #
43
+ { if ( $dhcp )
44
+ {
45
+ $OUT .= "dhcp = 'dhcp'\n";
46
+
47
+ # Setup the mac address, if present.
48
+ my $m = '';
49
+ if ( $mac )
50
+ {
51
+ $m = "mac=$mac"
52
+ }
53
+
54
+ $OUT .= "vif = [ '$m' ]";
55
+ }
56
+ else
57
+ {
58
+ #
59
+ # Setup the mac address, if present.
60
+ #
61
+ my $m = '';
62
+ if ( $mac )
63
+ {
64
+ $m = ",mac=$mac"
65
+ }
66
+
67
+ $OUT .= "vif = [ 'ip=$ip1";
68
+ $OUT .= "$m' ]";
69
+ }
70
+ }
71
+
72
+ #
73
+ # Behaviour
74
+ #
75
+ on_poweroff = 'destroy'
76
+ on_reboot = 'restart'
77
+ on_crash = 'restart'
78
+
79
+
80
+ { if ( $admins )
81
+ {
82
+ $OUT .= "xen_shell = '$admins'\n";
83
+ }
84
+ }
85
+ extra = ' TERM=xterm xencons=tty console=tty1'
@@ -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,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
+ APT_GET="yum -y"
28
+
29
+ # Run the apt install program across the package list in 'packages'.
30
+ # Select those packages referenced by <tt>:base</tt> and the +version+
31
+ # of the distribution you want to use.
32
+ def install(packages, version, options={})
33
+ #special_options="--allow-unauthenticated" if version != :stable
34
+ #sh -c "#{APT_GET} -qyu --force-yes #{special_options.to_s} install #{package_list(packages, version)}"
35
+ special_options = options[:repositories].collect { |repository| " --enablerepo=#{repository}"} if (options && options[:repositories].is_a?(Array))
36
+ send(run_method, %{
37
+ sh -c "#{APT_GET} #{special_options.to_s} install #{package_list(packages, version)}"
38
+ }, options)
39
+ end
40
+
41
+ # Run an apt clean
42
+ def clean(options={})
43
+ send(run_method, %{sh -c "#{APT_GET} -qy clean"}, options)
44
+ end
45
+
46
+ # Run an apt autoclean
47
+ def autoclean(options={})
48
+ send(run_method, %{sh -c "#{APT_GET} -qy autoclean"}, options)
49
+ end
50
+
51
+ # Run an apt distribution upgrade
52
+ def dist_upgrade(options={})
53
+ send(run_method, %{sh -c "#{APT_GET} -qy dist-upgrade"}, options)
54
+ end
55
+
56
+ # Run an apt upgrade. Use dist_upgrade instead if you want to upgrade
57
+ # the critical base packages.
58
+ def upgrade(options={})
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