andyh-deprec 1.99.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/CHANGELOG +187 -0
  2. data/COPYING +19 -0
  3. data/LICENSE +339 -0
  4. data/README +138 -0
  5. data/THANKS +5 -0
  6. data/bin/depify +133 -0
  7. data/docs/ANNOUNCE.deprec2 +47 -0
  8. data/docs/README.install +88 -0
  9. data/docs/README.nagios +22 -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/docs/windows_linux.txt +350 -0
  17. data/docs/xen/plan.txt +5 -0
  18. data/docs/xen/traffic_monitoring_with_vnstat.txt +95 -0
  19. data/docs/xen/xen-tools-notes.txt +31 -0
  20. data/docs/xen/xen_on_hardy.txt +39 -0
  21. data/lib/deprec/capistrano_extensions.rb +391 -0
  22. data/lib/deprec/recipes/aoe.rb +80 -0
  23. data/lib/deprec/recipes/apache.rb +179 -0
  24. data/lib/deprec/recipes/ar_sendmail.rb +65 -0
  25. data/lib/deprec/recipes/canonical.rb +57 -0
  26. data/lib/deprec/recipes/deprec.rb +188 -0
  27. data/lib/deprec/recipes/deprecated.rb +71 -0
  28. data/lib/deprec/recipes/example.rb +115 -0
  29. data/lib/deprec/recipes/git.rb +97 -0
  30. data/lib/deprec/recipes/gitosis.rb +48 -0
  31. data/lib/deprec/recipes/heartbeat.rb +138 -0
  32. data/lib/deprec/recipes/logrotate.rb +54 -0
  33. data/lib/deprec/recipes/lvm.rb +20 -0
  34. data/lib/deprec/recipes/memcache.rb +49 -0
  35. data/lib/deprec/recipes/mongrel.rb +219 -0
  36. data/lib/deprec/recipes/monit.rb +135 -0
  37. data/lib/deprec/recipes/mysql.rb +115 -0
  38. data/lib/deprec/recipes/nagios.rb +305 -0
  39. data/lib/deprec/recipes/network.rb +81 -0
  40. data/lib/deprec/recipes/nginx.rb +144 -0
  41. data/lib/deprec/recipes/ntp.rb +103 -0
  42. data/lib/deprec/recipes/php.rb +99 -0
  43. data/lib/deprec/recipes/postfix.rb +105 -0
  44. data/lib/deprec/recipes/rails.rb +288 -0
  45. data/lib/deprec/recipes/ruby.rb +66 -0
  46. data/lib/deprec/recipes/sphinx.rb +83 -0
  47. data/lib/deprec/recipes/ssh.rb +93 -0
  48. data/lib/deprec/recipes/svn.rb +171 -0
  49. data/lib/deprec/recipes/trac.rb +277 -0
  50. data/lib/deprec/recipes/ubuntu.rb +20 -0
  51. data/lib/deprec/recipes/users.rb +90 -0
  52. data/lib/deprec/recipes/utils.rb +39 -0
  53. data/lib/deprec/recipes/vnstat.rb +85 -0
  54. data/lib/deprec/recipes/xen.rb +262 -0
  55. data/lib/deprec/recipes.rb +37 -0
  56. data/lib/deprec/templates/aoe/aoe-init +55 -0
  57. data/lib/deprec/templates/aoe/fence_aoemask +351 -0
  58. data/lib/deprec/templates/apache/httpd-vhost-app.conf.erb +144 -0
  59. data/lib/deprec/templates/apache/httpd.conf +465 -0
  60. data/lib/deprec/templates/apache/index.html.erb +37 -0
  61. data/lib/deprec/templates/apache/master.css +72 -0
  62. data/lib/deprec/templates/ar_sendmail/logrotate.conf.erb +9 -0
  63. data/lib/deprec/templates/ar_sendmail/monit.conf.erb +5 -0
  64. data/lib/deprec/templates/deprec/caprc.erb +14 -0
  65. data/lib/deprec/templates/heartbeat/authkeys.erb +2 -0
  66. data/lib/deprec/templates/heartbeat/ha.cf.erb +15 -0
  67. data/lib/deprec/templates/heartbeat/haresources.erb +1 -0
  68. data/lib/deprec/templates/logrotate/logrotate.conf.erb +32 -0
  69. data/lib/deprec/templates/mongrel/logrotate.conf.erb +11 -0
  70. data/lib/deprec/templates/mongrel/mongrel_cluster-init-script +54 -0
  71. data/lib/deprec/templates/mongrel/mongrel_cluster.logrotate.d +14 -0
  72. data/lib/deprec/templates/mongrel/mongrel_cluster.yml.erb +10 -0
  73. data/lib/deprec/templates/mongrel/monit.conf.erb +17 -0
  74. data/lib/deprec/templates/monit/monit-init-script +104 -0
  75. data/lib/deprec/templates/monit/monitrc.erb +227 -0
  76. data/lib/deprec/templates/monit/nothing +0 -0
  77. data/lib/deprec/templates/mysql/create_databases.sql +20 -0
  78. data/lib/deprec/templates/mysql/database.yml.prod +6 -0
  79. data/lib/deprec/templates/mysql/database.yml.stage +6 -0
  80. data/lib/deprec/templates/mysql/my.cnf.erb +140 -0
  81. data/lib/deprec/templates/mysql/sphinx.conf.prod +542 -0
  82. data/lib/deprec/templates/mysql/sphinx.conf.stage +542 -0
  83. data/lib/deprec/templates/nagios/cgi.cfg.erb +321 -0
  84. data/lib/deprec/templates/nagios/check_linux_free_memory.pl +118 -0
  85. data/lib/deprec/templates/nagios/check_mongrel_cluster.rb +82 -0
  86. data/lib/deprec/templates/nagios/commands.cfg.erb +240 -0
  87. data/lib/deprec/templates/nagios/contacts.cfg.erb +57 -0
  88. data/lib/deprec/templates/nagios/hosts.cfg.erb +143 -0
  89. data/lib/deprec/templates/nagios/htpasswd.users +1 -0
  90. data/lib/deprec/templates/nagios/localhost.cfg.erb +157 -0
  91. data/lib/deprec/templates/nagios/nagios.cfg.erb +1274 -0
  92. data/lib/deprec/templates/nagios/nagios_apache_vhost.conf.erb +45 -0
  93. data/lib/deprec/templates/nagios/nrpe.cfg.erb +210 -0
  94. data/lib/deprec/templates/nagios/nrpe.xinetd.erb +16 -0
  95. data/lib/deprec/templates/nagios/resource.cfg.erb +34 -0
  96. data/lib/deprec/templates/nagios/services.cfg.erb +79 -0
  97. data/lib/deprec/templates/nagios/templates.cfg.erb +9 -0
  98. data/lib/deprec/templates/nagios/timeperiods.cfg.erb +94 -0
  99. data/lib/deprec/templates/network/hostname.erb +1 -0
  100. data/lib/deprec/templates/network/hosts.erb +2 -0
  101. data/lib/deprec/templates/network/interfaces.erb +18 -0
  102. data/lib/deprec/templates/nginx/logrotate.conf.erb +13 -0
  103. data/lib/deprec/templates/nginx/mime.types.erb +70 -0
  104. data/lib/deprec/templates/nginx/nginx-init-script +62 -0
  105. data/lib/deprec/templates/nginx/nginx.conf.erb +125 -0
  106. data/lib/deprec/templates/nginx/nginx.logrotate.d +12 -0
  107. data/lib/deprec/templates/nginx/nothing.conf +1 -0
  108. data/lib/deprec/templates/nginx/rails_nginx_vhost.conf.erb +41 -0
  109. data/lib/deprec/templates/ntp/ntp.conf.erb +42 -0
  110. data/lib/deprec/templates/postfix/aliases.erb +3 -0
  111. data/lib/deprec/templates/postfix/dynamicmaps.cf.erb +8 -0
  112. data/lib/deprec/templates/postfix/main.cf.erb +41 -0
  113. data/lib/deprec/templates/postfix/master.cf.erb +77 -0
  114. data/lib/deprec/templates/sphinx/monit.conf.erb +5 -0
  115. data/lib/deprec/templates/ssh/ssh_config.erb +50 -0
  116. data/lib/deprec/templates/ssh/sshd_config.erb +78 -0
  117. data/lib/deprec/templates/subversion/svn.apache.vhost.erb +43 -0
  118. data/lib/deprec/templates/trac/apache_vhost.conf.erb +24 -0
  119. data/lib/deprec/templates/trac/nginx_vhost.conf.erb +26 -0
  120. data/lib/deprec/templates/trac/trac.ini.erb +169 -0
  121. data/lib/deprec/templates/trac/trac_deprec.png +0 -0
  122. data/lib/deprec/templates/trac/tracd-init.erb +43 -0
  123. data/lib/deprec/templates/trac/users.htdigest.erb +0 -0
  124. data/lib/deprec/templates/vnstat/config.php +57 -0
  125. data/lib/deprec/templates/xen/15-disable-hwclock +40 -0
  126. data/lib/deprec/templates/xen/network-bridge-wrapper +3 -0
  127. data/lib/deprec/templates/xen/xen-tools.conf.erb +220 -0
  128. data/lib/deprec/templates/xen/xend-config.sxp.erb +195 -0
  129. data/lib/deprec/templates/xen/xend-init.erb +69 -0
  130. data/lib/deprec/templates/xen/xendomains.erb +137 -0
  131. data/lib/deprec/templates/xen/xm.tmpl.erb +85 -0
  132. data/lib/deprec.rb +8 -0
  133. data/lib/deprec_cmd_completion.sh +26 -0
  134. data/lib/vmbuilder_plugins/all.rb +20 -0
  135. data/lib/vmbuilder_plugins/apt.rb +93 -0
  136. data/lib/vmbuilder_plugins/emerge.rb +76 -0
  137. data/lib/vmbuilder_plugins/gem.rb +90 -0
  138. data/lib/vmbuilder_plugins/std.rb +203 -0
  139. metadata +224 -0
@@ -0,0 +1,195 @@
1
+ # -*- sh -*-
2
+
3
+ #
4
+ # Xend configuration file.
5
+ #
6
+
7
+ # This example configuration is appropriate for an installation that
8
+ # utilizes a bridged network configuration. Access to xend via http
9
+ # is disabled.
10
+
11
+ # Commented out entries show the default for that entry, unless otherwise
12
+ # specified.
13
+
14
+ #(logfile /var/log/xen/xend.log)
15
+ #(loglevel DEBUG)
16
+
17
+
18
+ # The Xen-API server configuration. (Please note that this server is
19
+ # available as an UNSUPPORTED PREVIEW in Xen 3.0.4, and should not be relied
20
+ # upon).
21
+ #
22
+ # This value configures the ports, interfaces, and access controls for the
23
+ # Xen-API server. Each entry in the list starts with either unix, a port
24
+ # number, or an address:port pair. If this is "unix", then a UDP socket is
25
+ # opened, and this entry applies to that. If it is a port, then Xend will
26
+ # listen on all interfaces on that TCP port, and if it is an address:port
27
+ # pair, then Xend will listen on the specified port, using the interface with
28
+ # the specified address.
29
+ #
30
+ # The subsequent string configures the user-based access control for the
31
+ # listener in question. This can be one of "none" or "pam", indicating either
32
+ # that users should be allowed access unconditionally, or that the local
33
+ # Pluggable Authentication Modules configuration should be used. If this
34
+ # string is missing or empty, then "pam" is used.
35
+ #
36
+ # The final string gives the host-based access control for that listener. If
37
+ # this is missing or empty, then all connections are accepted. Otherwise,
38
+ # this should be a space-separated sequence of regular expressions; any host
39
+ # with a fully-qualified domain name or an IP address that matches one of
40
+ # these regular expressions will be accepted.
41
+ #
42
+ # Example: listen on TCP port 9363 on all interfaces, accepting connections
43
+ # only from machines in example.com or localhost, and allow access through
44
+ # the unix domain socket unconditionally:
45
+ #
46
+ # (xen-api-server ((9363 pam '^localhost$ example\\.com$')
47
+ # (unix none)))
48
+ #
49
+ # Optionally, the TCP Xen-API server can use SSL by specifying the private
50
+ # key and certificate location:
51
+ #
52
+ # (9367 pam '' /etc/xen/xen-api.key /etc/xen/xen-api.crt)
53
+ #
54
+ # Default:
55
+ # (xen-api-server ((unix)))
56
+
57
+
58
+ #(xend-http-server no)
59
+ #(xend-unix-server no)
60
+ #(xend-tcp-xmlrpc-server no)
61
+ #(xend-unix-xmlrpc-server yes)
62
+ #(xend-relocation-server no)
63
+ (xend-relocation-server yes)
64
+
65
+ #(xend-unix-path /var/lib/xend/xend-socket)
66
+
67
+
68
+ # Address and port xend should use for the legacy TCP XMLRPC interface,
69
+ # if xen-tcp-xmlrpc-server is set.
70
+ #(xen-tcp-xmlrpc-server-address 'localhost')
71
+ #(xen-tcp-xmlrpc-server-port 8006)
72
+
73
+ # SSL key and certificate to use for the legacy TCP XMLRPC interface.
74
+ # Setting these will mean that this port serves only SSL connections as
75
+ # opposed to plaintext ones.
76
+ #(xend-tcp-xmlrpc-server-ssl-key-file /etc/xen/xmlrpc.key)
77
+ #(xend-tcp-xmlrpc-server-ssl-cert-file /etc/xen/xmlrpc.crt)
78
+
79
+
80
+ # Port xend should use for the HTTP interface, if xend-http-server is set.
81
+ #(xend-port 8000)
82
+
83
+ # Port xend should use for the relocation interface, if xend-relocation-server
84
+ # is set.
85
+ #(xend-relocation-port 8002)
86
+
87
+ # Address xend should listen on for HTTP connections, if xend-http-server is
88
+ # set.
89
+ # Specifying 'localhost' prevents remote connections.
90
+ # Specifying the empty string '' (the default) allows all connections.
91
+ #(xend-address '')
92
+ #(xend-address localhost)
93
+
94
+ # Address xend should listen on for relocation-socket connections, if
95
+ # xend-relocation-server is set.
96
+ # Meaning and default as for xend-address above.
97
+ #(xend-relocation-address '')
98
+
99
+ # The hosts allowed to talk to the relocation port. If this is empty (the
100
+ # default), then all connections are allowed (assuming that the connection
101
+ # arrives on a port and interface on which we are listening; see
102
+ # xend-relocation-port and xend-relocation-address above). Otherwise, this
103
+ # should be a space-separated sequence of regular expressions. Any host with
104
+ # a fully-qualified domain name or an IP address that matches one of these
105
+ # regular expressions will be accepted.
106
+ #
107
+ # For example:
108
+ # (xend-relocation-hosts-allow '^localhost$ ^.*\\.example\\.org$')
109
+ #
110
+ #(xend-relocation-hosts-allow '')
111
+ (xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
112
+
113
+ # The limit (in kilobytes) on the size of the console buffer
114
+ #(console-limit 1024)
115
+
116
+ ##
117
+ # To bridge network traffic, like this:
118
+ #
119
+ # dom0: fake eth0 -> vif0.0 -+
120
+ # |
121
+ # bridge -> real eth0 -> the network
122
+ # |
123
+ # domU: fake eth0 -> vifN.0 -+
124
+ #
125
+ # use
126
+ #
127
+ (network-script network-bridge-wrapper)
128
+ #
129
+ # Your default ethernet device is used as the outgoing interface, by default.
130
+ # To use a different one (e.g. eth1) use
131
+ #
132
+ # (network-script 'network-bridge netdev=eth1')
133
+ #
134
+ # The bridge is named xenbr0, by default. To rename the bridge, use
135
+ #
136
+ # (network-script 'network-bridge bridge=<name>')
137
+ #
138
+ # It is possible to use the network-bridge script in more complicated
139
+ # scenarios, such as having two outgoing interfaces, with two bridges, and
140
+ # two fake interfaces per guest domain. To do things like this, write
141
+ # yourself a wrapper script, and call network-bridge from it, as appropriate.
142
+ #
143
+ # (network-script network-dummy)
144
+
145
+ # The script used to control virtual interfaces. This can be overridden on a
146
+ # per-vif basis when creating a domain or a configuring a new vif. The
147
+ # vif-bridge script is designed for use with the network-bridge script, or
148
+ # similar configurations.
149
+ #
150
+ # If you have overridden the bridge name using
151
+ # (network-script 'network-bridge bridge=<name>') then you may wish to do the
152
+ # same here. The bridge name can also be set when creating a domain or
153
+ # configuring a new vif, but a value specified here would act as a default.
154
+ #
155
+ # If you are using only one bridge, the vif-bridge script will discover that,
156
+ # so there is no need to specify it explicitly.
157
+ #
158
+ (vif-script vif-bridge)
159
+
160
+
161
+ ## Use the following if network traffic is routed, as an alternative to the
162
+ # settings for bridged networking given above.
163
+ #(network-script network-route)
164
+ #(vif-script vif-route)
165
+
166
+
167
+ ## Use the following if network traffic is routed with NAT, as an alternative
168
+ # to the settings for bridged networking given above.
169
+ #(network-script network-nat)
170
+ #(vif-script vif-nat)
171
+
172
+
173
+ # Dom0 will balloon out when needed to free memory for domU.
174
+ # dom0-min-mem is the lowest memory level (in MB) dom0 will get down to.
175
+ # If dom0-min-mem=0, dom0 will never balloon out.
176
+ (dom0-min-mem 196)
177
+
178
+ # In SMP system, dom0 will use dom0-cpus # of CPUS
179
+ # If dom0-cpus = 0, dom0 will take all cpus available
180
+ (dom0-cpus 0)
181
+
182
+ # Whether to enable core-dumps when domains crash.
183
+ #(enable-dump no)
184
+
185
+ # The tool used for initiating virtual TPM migration
186
+ #(external-migration-tool '')
187
+
188
+ # The interface for VNC servers to listen on. Defaults
189
+ # to 127.0.0.1 To restore old 'listen everywhere' behaviour
190
+ # set this to 0.0.0.0
191
+ #(vnc-listen '127.0.0.1')
192
+
193
+ # The default password for VNC console on HVM domain.
194
+ # Empty string is no authentication.
195
+ (vncpasswd '')
@@ -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'
data/lib/deprec.rb ADDED
@@ -0,0 +1,8 @@
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
+ require "#{File.dirname(__FILE__)}/deprec/recipes"
8
+
@@ -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
+
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: