machines 0.5.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 (180) hide show
  1. data/.gitignore +11 -0
  2. data/EXAMPLES.md +18 -0
  3. data/Gemfile +4 -0
  4. data/Guardfile +14 -0
  5. data/INSTALL.md +25 -0
  6. data/LICENSE +23 -0
  7. data/README.md +271 -0
  8. data/Rakefile +60 -0
  9. data/TODO.md +92 -0
  10. data/bin/machines +6 -0
  11. data/lib/machines/app_settings.rb +54 -0
  12. data/lib/machines/base.rb +13 -0
  13. data/lib/machines/checks.rb +63 -0
  14. data/lib/machines/cloud_machine.rb +33 -0
  15. data/lib/machines/command.rb +86 -0
  16. data/lib/machines/commandline.rb +148 -0
  17. data/lib/machines/configuration.rb +49 -0
  18. data/lib/machines/core.rb +117 -0
  19. data/lib/machines/database.rb +17 -0
  20. data/lib/machines/file_operations.rb +104 -0
  21. data/lib/machines/help.rb +30 -0
  22. data/lib/machines/installation.rb +151 -0
  23. data/lib/machines/log_command.rb +22 -0
  24. data/lib/machines/logger.rb +65 -0
  25. data/lib/machines/machinesfile.rb +25 -0
  26. data/lib/machines/named_buffer.rb +9 -0
  27. data/lib/machines/questions.rb +15 -0
  28. data/lib/machines/services.rb +24 -0
  29. data/lib/machines/upload.rb +29 -0
  30. data/lib/machines/version.rb +4 -0
  31. data/lib/machines.rb +19 -0
  32. data/lib/packages/abiword.rb +11 -0
  33. data/lib/packages/amazon_mp3.rb +4 -0
  34. data/lib/packages/awstats.rb +16 -0
  35. data/lib/packages/base.rb +14 -0
  36. data/lib/packages/chrome.rb +12 -0
  37. data/lib/packages/cruisecontrol.rb +22 -0
  38. data/lib/packages/dependencies.rb +10 -0
  39. data/lib/packages/docky.rb +36 -0
  40. data/lib/packages/dotfiles.rb +26 -0
  41. data/lib/packages/file_roller.rb +12 -0
  42. data/lib/packages/finalise.rb +4 -0
  43. data/lib/packages/firefox.rb +4 -0
  44. data/lib/packages/gedit.rb +11 -0
  45. data/lib/packages/git.rb +4 -0
  46. data/lib/packages/gmate.rb +33 -0
  47. data/lib/packages/gnome.rb +10 -0
  48. data/lib/packages/gnumeric.rb +11 -0
  49. data/lib/packages/hosts.rb +13 -0
  50. data/lib/packages/load_machines.rb +38 -0
  51. data/lib/packages/monit.rb +10 -0
  52. data/lib/packages/mysql.rb +46 -0
  53. data/lib/packages/nginx.rb +22 -0
  54. data/lib/packages/nginx_logrotate.rb +26 -0
  55. data/lib/packages/openbox.rb +35 -0
  56. data/lib/packages/passenger.rb +14 -0
  57. data/lib/packages/passenger_nginx.rb +8 -0
  58. data/lib/packages/postfix.rb +10 -0
  59. data/lib/packages/questions.rb +5 -0
  60. data/lib/packages/rbenv.rb +27 -0
  61. data/lib/packages/rvm.rb +20 -0
  62. data/lib/packages/save_machines.rb +4 -0
  63. data/lib/packages/slim.rb +6 -0
  64. data/lib/packages/sqlserver.rb +5 -0
  65. data/lib/packages/subtle.rb +29 -0
  66. data/lib/packages/sudo_mods.rb +6 -0
  67. data/lib/packages/time.rb +6 -0
  68. data/lib/packages/time_daily.rb +5 -0
  69. data/lib/packages/timezone.rb +10 -0
  70. data/lib/packages/unison.rb +5 -0
  71. data/lib/packages/virtualbox.rb +11 -0
  72. data/lib/packages/virtualbox_guest.rb +7 -0
  73. data/lib/packages/webapps.rb +36 -0
  74. data/lib/template/Machinesfile +48 -0
  75. data/lib/template/certificates/example.com.crt +0 -0
  76. data/lib/template/certificates/example.com.key +0 -0
  77. data/lib/template/certificates/selfsigned.crt +14 -0
  78. data/lib/template/certificates/selfsigned.key +16 -0
  79. data/lib/template/config.yml +98 -0
  80. data/lib/template/logrotate/app.erb +10 -0
  81. data/lib/template/logrotate/nginx.erb +12 -0
  82. data/lib/template/machines.yml +179 -0
  83. data/lib/template/misc/awstats.conf.erb +7 -0
  84. data/lib/template/misc/ntp.conf +7 -0
  85. data/lib/template/monit/conf.d/delayed_job.erb +11 -0
  86. data/lib/template/monit/conf.d/mysql.erb +7 -0
  87. data/lib/template/monit/conf.d/nginx +5 -0
  88. data/lib/template/monit/conf.d/postfix +7 -0
  89. data/lib/template/monit/conf.d/ssh +6 -0
  90. data/lib/template/monit/conf.d/system.erb +14 -0
  91. data/lib/template/monit/monitrc.erb +10 -0
  92. data/lib/template/monit/upstart.conf +16 -0
  93. data/lib/template/mysql/dbmaster.cnf +7 -0
  94. data/lib/template/mysql/dbslave.cnf +3 -0
  95. data/lib/template/nginx/app_server.conf.erb +87 -0
  96. data/lib/template/nginx/nginx.conf.erb +46 -0
  97. data/lib/template/nginx/upstart.conf.erb +21 -0
  98. data/lib/template/packages/custom.rb +17 -0
  99. data/lib/template/packages/productivity.rb +18 -0
  100. data/lib/template/slim/themes/dark/background.jpg +0 -0
  101. data/lib/template/slim/themes/dark/panel.png +0 -0
  102. data/lib/template/slim/themes/dark/slim.theme +39 -0
  103. data/lib/template/users/phil/dotfiles/bash_aliases +45 -0
  104. data/lib/template/users/phil/dotfiles/config/Trolltech.conf +4 -0
  105. data/lib/template/users/phil/dotfiles/config/gtk-3.0/settings.ini +9 -0
  106. data/lib/template/users/phil/dotfiles/config/openbox/autostart.sh +14 -0
  107. data/lib/template/users/phil/dotfiles/config/openbox/rc.xml +482 -0
  108. data/lib/template/users/phil/dotfiles/config/terminator/config +10 -0
  109. data/lib/template/users/phil/dotfiles/fonts.conf +15 -0
  110. data/lib/template/users/phil/dotfiles/gitconfig +27 -0
  111. data/lib/template/users/phil/dotfiles/gtkrc-2.0 +16 -0
  112. data/lib/template/users/phil/dotfiles/local/share/applications/mimeapps.list +4 -0
  113. data/lib/template/users/phil/dotfiles/unison/default.prf +33 -0
  114. data/lib/template/users/www/authorized_keys +0 -0
  115. data/lib/template/users/www/dotfiles/bash_aliases +40 -0
  116. data/lib/template/webapps.yml +75 -0
  117. data/machines.gemspec +44 -0
  118. data/spec/acceptance/dev_machine_spec.rb +22 -0
  119. data/spec/lib/machines/app_settings_spec.rb +106 -0
  120. data/spec/lib/machines/checks_spec.rb +105 -0
  121. data/spec/lib/machines/cloud_machine_spec.rb +36 -0
  122. data/spec/lib/machines/command_spec.rb +184 -0
  123. data/spec/lib/machines/commandline_spec.rb +299 -0
  124. data/spec/lib/machines/configuration_spec.rb +61 -0
  125. data/spec/lib/machines/core_spec.rb +299 -0
  126. data/spec/lib/machines/database_spec.rb +51 -0
  127. data/spec/lib/machines/file_operations_spec.rb +124 -0
  128. data/spec/lib/machines/help_spec.rb +22 -0
  129. data/spec/lib/machines/installation_spec.rb +176 -0
  130. data/spec/lib/machines/log_command_spec.rb +16 -0
  131. data/spec/lib/machines/logger_spec.rb +70 -0
  132. data/spec/lib/machines/machinesfile_spec.rb +34 -0
  133. data/spec/lib/machines/questions_spec.rb +73 -0
  134. data/spec/lib/machines/services_spec.rb +26 -0
  135. data/spec/lib/machines/upload_spec.rb +86 -0
  136. data/spec/lib/packages/abiword_spec.rb +20 -0
  137. data/spec/lib/packages/amazon_mp3_spec.rb +17 -0
  138. data/spec/lib/packages/awstats_spec.rb +26 -0
  139. data/spec/lib/packages/base_spec.rb +21 -0
  140. data/spec/lib/packages/chrome_spec.rb +30 -0
  141. data/spec/lib/packages/cruisecontrol_spec.rb +33 -0
  142. data/spec/lib/packages/dependencies_spec.rb +20 -0
  143. data/spec/lib/packages/docky_spec.rb +32 -0
  144. data/spec/lib/packages/dotfiles_spec.rb +44 -0
  145. data/spec/lib/packages/file_roller_spec.rb +69 -0
  146. data/spec/lib/packages/firefox_spec.rb +16 -0
  147. data/spec/lib/packages/gedit_spec.rb +20 -0
  148. data/spec/lib/packages/git_spec.rb +16 -0
  149. data/spec/lib/packages/gmate_spec.rb +39 -0
  150. data/spec/lib/packages/gnome_spec.rb +22 -0
  151. data/spec/lib/packages/gnumeric_spec.rb +21 -0
  152. data/spec/lib/packages/hosts_spec.rb +41 -0
  153. data/spec/lib/packages/load_machines_spec.rb +118 -0
  154. data/spec/lib/packages/monit_spec.rb +34 -0
  155. data/spec/lib/packages/mysql_spec.rb +69 -0
  156. data/spec/lib/packages/nginx_logrotate_spec.rb +80 -0
  157. data/spec/lib/packages/nginx_spec.rb +46 -0
  158. data/spec/lib/packages/openbox_spec.rb +41 -0
  159. data/spec/lib/packages/passenger_nginx_spec.rb +20 -0
  160. data/spec/lib/packages/passenger_spec.rb +26 -0
  161. data/spec/lib/packages/postfix_spec.rb +19 -0
  162. data/spec/lib/packages/questions_spec.rb +29 -0
  163. data/spec/lib/packages/rbenv_spec.rb +32 -0
  164. data/spec/lib/packages/rvm_spec.rb +31 -0
  165. data/spec/lib/packages/save_machines_spec.rb +51 -0
  166. data/spec/lib/packages/slim_spec.rb +22 -0
  167. data/spec/lib/packages/sqlserver_spec.rb +17 -0
  168. data/spec/lib/packages/timezone_spec.rb +27 -0
  169. data/spec/lib/packages/unison_spec.rb +17 -0
  170. data/spec/lib/packages/virtualbox_guest_spec.rb +25 -0
  171. data/spec/lib/packages/virtualbox_spec.rb +23 -0
  172. data/spec/lib/packages/webapps_spec.rb +70 -0
  173. data/spec/spec_helper.rb +103 -0
  174. data/spec/support/coverage.rb +8 -0
  175. data/spec/support/fake_out.rb +22 -0
  176. data/spec/support/fakefs_additions.rb +10 -0
  177. data/spec/support/minitest.rb +69 -0
  178. data/spec/support/vm_control.rb +54 -0
  179. data/tmp/.gitkeep +0 -0
  180. metadata +581 -0
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/awstats' do
4
+ before(:each) do
5
+ load_package('awstats')
6
+ $conf.webapps = {'name' => AppBuilder.new({:name => 'appname', :path => 'apppath'})}
7
+ FileUtils.mkdir('misc')
8
+ File.open('misc/awstats.conf.erb', 'w') {}
9
+ end
10
+
11
+ it 'adds the following commands' do
12
+ eval_package
13
+ $conf.commands.map(&:info).join("\n").must_equal [
14
+ "TASK awstats - Install AWStats",
15
+ "SUDO apt-get -q -y install awstats",
16
+ "SUDO wget https://raw.github.com/PhilT/bin/master/awstats_render -O /usr/local/bin/awstats_render",
17
+ "SUDO chmod +x /usr/local/bin/awstats_render",
18
+ "UPLOAD buffer from misc/awstats.conf.erb to /tmp/awstats..conf",
19
+ "SUDO cp -rf /tmp/awstats..conf /etc/awstats/awstats..conf",
20
+ "RUN rm -rf /tmp/awstats..conf",
21
+ "RUN mkdir -p /name_stats/data",
22
+ "RUN mkdir -p /name_stats/public",
23
+ ].join("\n")
24
+ end
25
+ end
26
+
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/base' do
4
+ it 'adds the following commands' do
5
+ load_package('base')
6
+ eval_package
7
+ $conf.commands.map(&:info).join("\n").must_equal [
8
+ "TASK base - Install base packages for compiling Ruby and libraries",
9
+ "SUDO apt-get -q -y install build-essential",
10
+ "SUDO apt-get -q -y install zlib1g-dev",
11
+ "SUDO apt-get -q -y install libpcre3-dev",
12
+ "SUDO apt-get -q -y install ruby1.9.1-dev",
13
+ "SUDO apt-get -q -y install libreadline-dev",
14
+ "SUDO apt-get -q -y install libxml2-dev",
15
+ "SUDO apt-get -q -y install libxslt1-dev",
16
+ "SUDO apt-get -q -y install libssl-dev",
17
+ "SUDO apt-get -q -y install libncurses5-dev"
18
+ ].join("\n")
19
+ end
20
+ end
21
+
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/chrome' do
4
+ before(:each) do
5
+ load_package('chrome')
6
+ end
7
+
8
+ it 'adds chrome ppa and installs' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK chrome - Add chrome stable repo and installs (set use_opensource to use chromium)",
12
+ "SUDO echo deb http://dl.google.com/linux/deb/ stable main >> /etc/apt/sources.list",
13
+ "SUDO wget -q https://dl-ssl.google.com/linux/linux_signing_key.pub -O - | apt-key add -",
14
+ "SUDO apt-get -q -y update > /tmp/apt-update.log",
15
+ "SUDO apt-get -q -y install google-chrome-stable"
16
+ ]
17
+ end
18
+
19
+ it 'adds chromium ppa and installs' do
20
+ $conf.use_opensource = true
21
+ eval_package
22
+ $conf.commands.map(&:info).must_equal [
23
+ "TASK chrome - Add chrome stable repo and installs (set use_opensource to use chromium)",
24
+ "SUDO add-apt-repository ppa:chromium-daily/stable",
25
+ "SUDO apt-get -q -y update > /tmp/apt-update.log",
26
+ "SUDO apt-get -q -y install chromium-browser"
27
+ ]
28
+ end
29
+ end
30
+
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/cruisecontrol' do
4
+ before(:each) do
5
+ load_package('cruisecontrol')
6
+ $conf.from_hash(ruby: {gems_path: 'ruby/gems'})
7
+ $conf.webapps = {'application' =>
8
+ AppBuilder.new(
9
+ 'scm' => 'github.com/project',
10
+ 'title' => 'Application'
11
+ )
12
+ }
13
+ $conf.from_hash(:mail => {address: 'mailserver', domain: 'domain.net' })
14
+ $conf.user = 'user'
15
+ $conf.user_home = '/home/user'
16
+ end
17
+
18
+ it 'adds the following commands' do
19
+ eval_package
20
+ $conf.commands.map(&:info).join("\n").must_equal [
21
+ "TASK cruisecontrol - Install, configure and set to start on boot",
22
+ "RUN git clone --quiet https://github.com/thoughtworks/cruisecontrol.rb.git",
23
+ "RUN cd cruisecontrol.rb && bundle",
24
+ "RUN cd cruisecontrol.rb && ruby ./cruise add Application -r github.com/project",
25
+ "SUDO cp -rf cruisecontrol.rb/daemon/cruise /etc/init.d/cruise",
26
+ "SUDO update-rc.d cruise defaults",
27
+ "SUDO sed -i \"s/CRUISE_USER = .*/CRUISE_USER = 'user'/\" /etc/init.d/cruise",
28
+ "SUDO sed -i \"s/CRUISE_HOME = .*/CRUISE_HOME = '\\/home\\/user\\/cruisecontrol.rb'/\" /etc/init.d/cruise",
29
+ "RUN grep \"ActionMailer::Base.smtp_settings = {address: 'mailserver', domain: 'domain.net'}\" .cruise/site_config.rb || echo \"ActionMailer::Base.smtp_settings = {address: 'mailserver', domain: 'domain.net'}\" >> .cruise/site_config.rb"
30
+ ].join("\n")
31
+ end
32
+ end
33
+
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/dependencies' do
4
+ before(:each) do
5
+ load_package('dependencies')
6
+ $conf.hostname = 'hostname'
7
+ end
8
+
9
+ it 'adds the following commands' do
10
+ eval_package
11
+ $conf.commands.map(&:info).must_equal [
12
+ "TASK dependencies - Dependencies required for various commands to run",
13
+ "SUDO apt-get -q -y update > /tmp/apt-update.log",
14
+ "SUDO apt-get -q -y install debconf-utils",
15
+ "SUDO apt-get -q -y install python-software-properties",
16
+ "SUDO apt-get -q -y install gconf2",
17
+ ]
18
+ end
19
+ end
20
+
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/docky' do
4
+ before(:each) do
5
+ load_package('docky')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK docky - Install and configure Docky a dock and app launcher",
12
+ "SUDO apt-get -q -y install docky",
13
+ "SUDO apt-get -q -y install gnome-system-monitor",
14
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/FirstRun\" --type bool false",
15
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/ZoomPercent\" --type float 1.5",
16
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide\" --type string \"Intellihide\"",
17
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/FadeOnHide\" --type bool true",
18
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/FadeOpacity\" --type int 50",
19
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/Launchers\" --type list --list-type=string [\"file:///usr/share/applications/pcmanfm.desktop\",\"file:///usr/share/applications/google-chrome.desktop\",\"file:///usr/share/applications/firefox.desktop\",\"file:///usr/share/applications/terminator.desktop\",\"file:///usr/share/applications/gedit.desktop\",\"file:///usr/share/applications/abiword.desktop\",\"file:///usr/share/applications/gnumeric.desktop\",\"file:///usr/share/applications/gimp.desktop\",\"file:///usr/share/applications/inkscape.desktop\",\"file:///usr/share/applications/audacious2.desktop\"]",
20
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/SortList\" --type list --list-type=string [\"/usr/share/applications/pcmanfm.desktop\",\"/usr/share/applications/google-chrome.desktop\",\"/usr/share/applications/firefox.desktop\",\"/usr/share/applications/terminator.desktop\",\"/usr/share/applications/gedit.desktop\",\"/usr/share/applications/abiword.desktop\",\"/usr/share/applications/gnumeric.desktop\",\"/usr/share/applications/gimp.desktop\",\"/usr/share/applications/inkscape.desktop\",\"/usr/share/applications/audacious2.desktop\"]",
21
+ "RUN gconftool-2 --set \"/apps/docky-2/Docky/Interface/DockPreferences/Dock1/Plugins\" --type list --list-type=string [\"Trash\",\"Clock\",\"GMail\",\"Weather\"]",
22
+ "RUN gconftool-2 --set \"/apps/docky-2/Clock/ClockDockItem/ShowDate\" --type bool true",
23
+ "RUN gconftool-2 --set \"/apps/docky-2/Clock/ClockDockItem/ShowDigital\" --type bool true",
24
+ "RUN gconftool-2 --set \"/apps/docky-2/Clock/ClockDockItem/ShowMilitary\" --type bool true",
25
+ "RUN gconftool-2 --set \"/apps/docky-2/GMail/GMailPreferences/RefreshRate\" --type int 10",
26
+ "RUN gconftool-2 --set \"/apps/docky-2/GMail/GMailPreferences/User\" --type string \"phil@\"",
27
+ "RUN gconftool-2 --set \"/apps/docky-2/WeatherDocklet/WeatherPreferences/Location\" --type list --list-type=string [\"London\\\\, United Kingdom\"]",
28
+ "RUN gconftool-2 --set \"/apps/docky-2/WeatherDocklet/WeatherPreferences/Metric\" --type bool true"
29
+ ]
30
+ end
31
+ end
32
+
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/dotfiles' do
4
+ before(:each) do
5
+ load_package('dotfiles')
6
+ $conf.machine = AppConf.new
7
+ $conf.machine.user = 'username'
8
+ $conf.appsroot = 'appsroot'
9
+ $conf.environment = 'railsenv'
10
+ $conf.from_hash(:hosts => {'somehost' => '1.1.1.1'})
11
+
12
+ FileUtils.mkdir_p 'users/username/dotfiles'
13
+ FileUtils.touch 'users/username/dotfiles/bashrc'
14
+ FileUtils.touch 'users/username/authorized_keys'
15
+ end
16
+
17
+ it 'adds the following commands' do
18
+ eval_package
19
+ $conf.commands.map(&:info).join("\n").must_equal [
20
+ "TASK dotfiles - Upload files in users/username/dotfiles, prepend a dot and substitute some bashrc vars",
21
+ "UPLOAD #{File.expand_path('users/username/dotfiles/bashrc')} to .bashrc",
22
+ "RUN mkdir -p $HOME/.ssh",
23
+ "RUN chmod 700 $HOME/.ssh",
24
+ "RUN ssh-keyscan -H somehost >> $HOME/.ssh/known_hosts",
25
+ "RUN grep \"export RAILS_ENV=railsenv\" .profile || echo \"export RAILS_ENV=railsenv\" >> .profile",
26
+ "RUN grep \"export CDPATH=appsroot\" .profile || echo \"export CDPATH=appsroot\" >> .profile",
27
+ "UPLOAD users/username/authorized_keys to .ssh/authorized_keys",
28
+ "RUN chmod 600 .ssh/authorized_keys"
29
+ ].join("\n")
30
+ end
31
+
32
+ it 'sets RAILS_ENV when specified in set_rails_env_for' do
33
+ $conf.set_rails_env_for = ['railsenv']
34
+ eval_package
35
+ $conf.commands.map(&:info).join("\n").must_match /RUN grep \"export RAILS_ENV=railsenv\" .profile || echo \"export RAILS_ENV=railsenv\" >> .profile/
36
+ end
37
+
38
+ it 'RAILS_ENV not set when not specified in set_rails_env_for' do
39
+ $conf.set_rails_env_for = ['some_other_env']
40
+ eval_package
41
+ $conf.commands.map(&:info).join("\n").wont_match /RUN grep \"export RAILS_ENV=railsenv\" .profile \|\| echo \"export RAILS_ENV=railsenv\" >> .profile/
42
+ end
43
+ end
44
+
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/apps' do
4
+ before(:each) do
5
+ load_package('file_roller')
6
+ end
7
+
8
+ def append_command text
9
+ "RUN grep \"#{text}\" .local/share/applications/mimeapps.list || echo \"#{text}\" >> .local/share/applications/mimeapps.list"
10
+ end
11
+
12
+ it 'adds the following commands' do
13
+ eval_package
14
+ $conf.commands.map(&:info).must_equal [
15
+ "TASK file_roller - Install file-roller archive manager",
16
+ "SUDO apt-get -q -y install file-roller",
17
+ "TASK file_roller_associations - Setup file associations for file-roller",
18
+ append_command('application/x-7z-compressed=file-roller.desktop'),
19
+ append_command('application/x-7z-compressed-tar=file-roller.desktop'),
20
+ append_command('application/x-ace=file-roller.desktop'),
21
+ append_command('application/x-alz=file-roller.desktop'),
22
+ append_command('application/x-ar=file-roller.desktop'),
23
+ append_command('application/x-arj=file-roller.desktop'),
24
+ append_command('application/x-bzip=file-roller.desktop'),
25
+ append_command('application/x-bzip-compressed-tar=file-roller.desktop'),
26
+ append_command('application/x-bzip1=file-roller.desktop'),
27
+ append_command('application/x-bzip1-compressed-tar=file-roller.desktop'),
28
+ append_command('application/x-cabinet=file-roller.desktop'),
29
+ append_command('application/x-cbr=file-roller.desktop'),
30
+ append_command('application/x-cbz=file-roller.desktop'),
31
+ append_command('application/x-cd-image=file-roller.desktop'),
32
+ append_command('application/x-compress=file-roller.desktop'),
33
+ append_command('application/x-compressed-tar=file-roller.desktop'),
34
+ append_command('application/x-cpio=file-roller.desktop'),
35
+ append_command('application/x-deb=file-roller.desktop'),
36
+ append_command('application/x-ear=file-roller.desktop'),
37
+ append_command('application/x-ms-dos-executable=file-roller.desktop'),
38
+ append_command('application/x-gtar=file-roller.desktop'),
39
+ append_command('application/x-gzip=file-roller.desktop'),
40
+ append_command('application/x-gzpostscript=file-roller.desktop'),
41
+ append_command('application/x-java-archive=file-roller.desktop'),
42
+ append_command('application/x-lha=file-roller.desktop'),
43
+ append_command('application/x-lhz=file-roller.desktop'),
44
+ append_command('application/x-lrzip=file-roller.desktop'),
45
+ append_command('application/x-lrzip-compressed-tar=file-roller.desktop'),
46
+ append_command('application/x-lzip=file-roller.desktop'),
47
+ append_command('application/x-lzip-compressed-tar=file-roller.desktop'),
48
+ append_command('application/x-lzma=file-roller.desktop'),
49
+ append_command('application/x-lzma-compressed-tar=file-roller.desktop'),
50
+ append_command('application/x-lzop=file-roller.desktop'),
51
+ append_command('application/x-lzop-compressed-tar=file-roller.desktop'),
52
+ append_command('application/x-rar=file-roller.desktop'),
53
+ append_command('application/x-rar-compressed=file-roller.desktop'),
54
+ append_command('application/x-rpm=file-roller.desktop'),
55
+ append_command('application/x-rzip=file-roller.desktop'),
56
+ append_command('application/x-tar=file-roller.desktop'),
57
+ append_command('application/x-tarz=file-roller.desktop'),
58
+ append_command('application/x-stuffit=file-roller.desktop'),
59
+ append_command('application/x-war=file-roller.desktop'),
60
+ append_command('application/x-xz=file-roller.desktop'),
61
+ append_command('application/x-xz-compressed-tar=file-roller.desktop'),
62
+ append_command('application/x-zip=file-roller.desktop'),
63
+ append_command('application/x-zip-compressed=file-roller.desktop'),
64
+ append_command('application/x-zoo=file-roller.desktop'),
65
+ append_command('application/zip=file-roller.desktop')
66
+ ]
67
+ end
68
+ end
69
+
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/firefox' do
4
+ before(:each) do
5
+ load_package('firefox')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK firefox - install firefox",
12
+ "SUDO apt-get -q -y install firefox"
13
+ ]
14
+ end
15
+ end
16
+
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/apps' do
4
+ before(:each) do
5
+ load_package('gedit')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).join("\n").must_equal [
11
+ "TASK gedit - Install basic programmers editor and set associations",
12
+ "SUDO apt-get -q -y install python-gi-cairo",
13
+ "SUDO apt-get -q -y install gedit",
14
+ "RUN grep \"text/plain=gedit.desktop\" .local/share/applications/mimeapps.list || echo \"text/plain=gedit.desktop\" >> .local/share/applications/mimeapps.list",
15
+ "RUN grep \"application/x-ruby=gedit.desktop\" .local/share/applications/mimeapps.list || echo \"application/x-ruby=gedit.desktop\" >> .local/share/applications/mimeapps.list",
16
+ "RUN grep \"application/x-shellscript=gedit.desktop\" .local/share/applications/mimeapps.list || echo \"application/x-shellscript=gedit.desktop\" >> .local/share/applications/mimeapps.list",
17
+ ].join("\n")
18
+ end
19
+ end
20
+
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/git' do
4
+ before(:each) do
5
+ load_package('git')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK git - Install Git",
12
+ 'SUDO apt-get -q -y install git-core'
13
+ ]
14
+ end
15
+ end
16
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/gmate' do
4
+ before(:each) do
5
+ load_package('gmate')
6
+ $conf.appsroot = 'apps_root'
7
+ end
8
+
9
+ it 'adds the following commands' do
10
+ eval_package
11
+ $conf.commands.map(&:info).must_equal [
12
+ "TASK gmate - Clone and install gmate for gEdit from Github and set some preferences and plugins",
13
+ "SUDO apt-get -q -y install python-pyinotify",
14
+ "SUDO apt-get -q -y install ack-grep",
15
+ "RUN git clone --quiet git://github.com/gmate/gmate.git apps_root/gmate",
16
+ "RUN cd apps_root/gmate && echo \\n | ./install.sh",
17
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/active-plugins" --type list --list-type=string ["text_tools","smart_indent","align","rails_hotkeys","trailsave","gemini","rubyonrailsloader","gedit_openfiles","quickhighlightmode","completion","time","docinfo","filebrowser","snippets","spell","indent","tabswitch"]',
18
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/haml_tab_size" --type int 2',
19
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/js_tab_size" --type int 2',
20
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/markdown_tab_size" --type int 2',
21
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/plain_text_tab_size" --type int 2',
22
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/sass_tab_size" --type int 2',
23
+ 'RUN gconftool-2 --set "/apps/gedit-2/plugins/smart_indent/yaml_tab_size" --type int 2',
24
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/bracket_matching/bracket_matching" --type bool true',
25
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/current_line/highlight_current_line" --type bool true',
26
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/cursor_position/restore_cursor_position" --type bool true',
27
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/line_numbers/display_line_numbers" --type bool true',
28
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/right_margin/display_right_margin" --type bool true',
29
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/right_margin/right_margin_position" --type int 120',
30
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/colors/scheme" --type string "railscasts"',
31
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/tabs/insert_spaces" --type bool true',
32
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/tabs/tabs_size" --type int 2',
33
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/wrap_mode/wrap_mode" --type string "GTK_WRAP_NONE"',
34
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/editor/save/create_backup_copy" --type bool false',
35
+ 'RUN gconftool-2 --set "/apps/gedit-2/preferences/ui/toolbar/toolbar_visible" --type bool false'
36
+ ]
37
+ end
38
+ end
39
+
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/gnome' do
4
+ before(:each) do
5
+ load_package('gnome')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK gnome - Set Gnome display preferences",
12
+ 'RUN gconftool-2 --set "/apps/metacity/general/titlebar_font" --type string "Arial Bold 10"',
13
+ 'RUN gconftool-2 --set "/apps/metacity/general/num_workspaces" --type int 1',
14
+ 'RUN gconftool-2 --set "/apps/nautilus/preferences/desktop_font" --type string "Sans 9"',
15
+ 'RUN gconftool-2 --set "/apps/nautilus/preferences/default_folder_viewer" --type string "compact_view"',
16
+ 'RUN gconftool-2 --set "/desktop/gnome/interface/font_name" --type string "Sans 9"',
17
+ 'RUN gconftool-2 --set "/desktop/gnome/interface/document_font_name" --type string "Sans 9"',
18
+ 'RUN gconftool-2 --set "/desktop/gnome/interface/monospace_font_name" --type string "Monospace 10"'
19
+ ]
20
+ end
21
+ end
22
+
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/apps' do
4
+ before(:each) do
5
+ load_package('gnumeric')
6
+ end
7
+
8
+ it 'adds the following commands' do
9
+ eval_package
10
+ $conf.commands.map(&:info).must_equal [
11
+ "TASK gnumeric - Install gnumeric lightweight spreadsheet",
12
+ "SUDO apt-get -q -y install gnumeric",
13
+ "TASK gnumeric_associations - Setup file associations for Gnumeric",
14
+ "RUN grep \"application/x-gnumeric=gnumeric.desktop\" .local/share/applications/mimeapps.list || echo \"application/x-gnumeric=gnumeric.desktop\" >> .local/share/applications/mimeapps.list",
15
+ "RUN grep \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=gnumeric.desktop\" .local/share/applications/mimeapps.list || echo \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=gnumeric.desktop\" >> .local/share/applications/mimeapps.list",
16
+ "RUN grep \"text/csv=gnumeric.desktop\" .local/share/applications/mimeapps.list || echo \"text/csv=gnumeric.desktop\" >> .local/share/applications/mimeapps.list",
17
+ "RUN grep \"application/msexcel=gnumeric.desktop\" .local/share/applications/mimeapps.list || echo \"application/msexcel=gnumeric.desktop\" >> .local/share/applications/mimeapps.list"
18
+ ]
19
+ end
20
+ end
21
+
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/hosts' do
4
+ before(:each) do
5
+ load_package('hosts')
6
+ $conf.machine = AppConf.new
7
+ $conf.machine.hostname = 'hostname'
8
+ $conf.from_hash(:hosts => {'some.domain' => '1.2.3.4'})
9
+ @hosts = [
10
+ "TASK hosts - Setup /etc/hosts",
11
+ "UPLOAD unnamed buffer to /tmp/hosts",
12
+ "SUDO cp -rf /tmp/hosts /etc/hosts",
13
+ "RUN rm -rf /tmp/hosts",
14
+ "UPLOAD unnamed buffer to /tmp/hostname",
15
+ "SUDO cp -rf /tmp/hostname /etc/hostname",
16
+ "RUN rm -rf /tmp/hostname",
17
+ "SUDO service hostname start",
18
+ "SUDO grep \"1.2.3.4 some.domain\" /etc/hosts || echo \"1.2.3.4 some.domain\" >> /etc/hosts",
19
+ ]
20
+ end
21
+
22
+ it 'adds the following commands' do
23
+ eval_package
24
+ $conf.commands.map(&:info).join("\n").must_equal (@hosts).join("\n")
25
+ end
26
+
27
+ it 'does not add hosts when nil' do
28
+ $conf.clear :hosts
29
+ @hosts.pop
30
+ eval_package
31
+ $conf.commands.map(&:info).join("\n").must_equal (@hosts).join("\n")
32
+ end
33
+
34
+ it 'does not add host when address is nil' do
35
+ $conf.from_hash(:hosts => {'some.domain' => nil})
36
+ @hosts.pop
37
+ eval_package
38
+ $conf.commands.map(&:info).join("\n").must_equal (@hosts).join("\n")
39
+ end
40
+ end
41
+
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/load_machines' do
4
+ let(:settings) do
5
+ {'machines' => {'a_machine' => {'hostname' => 'something', 'user' => 'phil', 'address' => '1.2.3.4'}}}
6
+ end
7
+
8
+ def save_settings
9
+ File.open('machines.yml', 'w') {|f| f.puts settings.to_yaml }
10
+ end
11
+
12
+ before(:each) do
13
+ load_package('load_machines')
14
+ $conf.machine_name = 'a_machine'
15
+ $conf.from_hash('appsroots' => {'phil' => '/home/phil'})
16
+ stubs(:load_app_settings)
17
+ stubs(:connect)
18
+ stubs(:run_instance)
19
+ end
20
+
21
+ describe 'loading machines.yml' do
22
+ before(:each) do
23
+ save_settings
24
+ end
25
+
26
+ it 'loads the machines.yml file' do
27
+ eval_package
28
+ $conf.machines.a_machine.hostname.must_equal 'something'
29
+ end
30
+
31
+ it 'sets $conf.machine using $conf.machine_name' do
32
+ eval_package
33
+ $conf.machine.hostname.must_equal 'something'
34
+ end
35
+ end
36
+
37
+ describe 'setting db_server' do
38
+ it 'sets the db_server using the selected machines db_server' do
39
+ settings['machines']['a_machine']['db_server'] = 'other_machine'
40
+ settings['machines']['other_machine'] = {'hostname' => 'name', 'user' => 'fred', 'address' => '1.1.1.1'}
41
+ save_settings
42
+ eval_package
43
+ $conf.db_server.user.must_equal 'fred'
44
+ $conf.db_server.address.must_equal '1.1.1.1'
45
+ end
46
+ end
47
+
48
+ describe 'setting address' do
49
+ it 'raises an exception when no address' do
50
+ settings['machines']['a_machine']['address'] = nil
51
+ save_settings
52
+ lambda { eval_package }.must_raise ConfigError
53
+ end
54
+
55
+ describe 'when EC2' do
56
+ before(:each) do
57
+ settings['machines']['a_machine']['ec2'] = {}
58
+ end
59
+
60
+ it 'does not throw or connect when address set' do
61
+ save_settings
62
+ expects(:connect).never
63
+ eval_package
64
+ end
65
+
66
+ it 'starts a new instance when no address' do
67
+ settings['machines']['a_machine']['address'] = nil
68
+ save_settings
69
+ expects(:connect).returns true
70
+ expects(:run_instance)
71
+ eval_package
72
+ end
73
+ end
74
+ end
75
+
76
+ it 'sets root_pass when not set' do
77
+ stubs(:generate_password).returns '1234'
78
+ save_settings
79
+ eval_package
80
+ $conf.machines.a_machine.root_pass.must_equal '1234'
81
+ end
82
+
83
+ it 'sets $conf.machines_changed when passwords are generated' do
84
+ stubs(:generate_password).returns '1234'
85
+ save_settings
86
+ eval_package
87
+ $conf.machines_changed.wont_equal nil
88
+ end
89
+
90
+ it '$conf.machines_changed not set when no passwords are generated' do
91
+ settings['machines']['a_machine']['root_pass'] = '1234'
92
+ save_settings
93
+ eval_package
94
+ $conf.machines_changed.must_equal nil
95
+ end
96
+
97
+ it 'does not overwrite root_pass' do
98
+ expects(:generate_password).never
99
+ settings['machines']['a_machine']['root_pass'] = 'something'
100
+ save_settings
101
+ eval_package
102
+ end
103
+
104
+ it 'sets user' do
105
+ save_settings
106
+ eval_package
107
+ $conf.machine.user.must_equal 'phil'
108
+ $conf.user.must_equal 'phil'
109
+ end
110
+
111
+ it 'loads app settings' do
112
+ settings['machines']['a_machine']['apps'] = ['app1', 'app2']
113
+ save_settings
114
+ expects(:load_app_settings).with(['app1', 'app2'])
115
+ eval_package
116
+ end
117
+ end
118
+
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'packages/monit' do
4
+ before(:each) do
5
+ load_package('monit')
6
+ FileUtils.mkdir_p 'monit/conf.d'
7
+ File.open('monit/monitrc.erb', 'w') {}
8
+ File.open('monit/upstart.conf.erb', 'w') {}
9
+ File.open('monit/conf.d/system.erb', 'w') {}
10
+ File.open('monit/conf.d/ssh', 'w') {}
11
+ end
12
+
13
+ it 'adds the following commands' do
14
+ eval_package
15
+ $conf.commands.map(&:info).join("\n").must_equal [
16
+ "TASK monit - Install and configure monit",
17
+ "SUDO apt-get -q -y install monit",
18
+ "SUDO /etc/init.d/monit stop && update-rc.d -f monit remove",
19
+ "UPLOAD monit/upstart.conf to /tmp/monit.conf",
20
+ "SUDO cp -rf /tmp/monit.conf /etc/init/monit.conf",
21
+ "RUN rm -rf /tmp/monit.conf",
22
+ "UPLOAD buffer from monit/monitrc.erb to /tmp/monitrc",
23
+ "SUDO cp -rf /tmp/monitrc /etc/monit/monitrc",
24
+ "RUN rm -rf /tmp/monitrc",
25
+ "UPLOAD buffer from monit/conf.d/system.erb to /tmp/system",
26
+ "SUDO cp -rf /tmp/system /etc/monit/conf.d/system",
27
+ "RUN rm -rf /tmp/system",
28
+ "UPLOAD monit/conf.d/ssh to /tmp/ssh",
29
+ "SUDO cp -rf /tmp/ssh /etc/monit/conf.d/ssh",
30
+ "RUN rm -rf /tmp/ssh"
31
+ ].join("\n")
32
+ end
33
+ end
34
+