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.
- data/.gitignore +11 -0
- data/EXAMPLES.md +18 -0
- data/Gemfile +4 -0
- data/Guardfile +14 -0
- data/INSTALL.md +25 -0
- data/LICENSE +23 -0
- data/README.md +271 -0
- data/Rakefile +60 -0
- data/TODO.md +92 -0
- data/bin/machines +6 -0
- data/lib/machines/app_settings.rb +54 -0
- data/lib/machines/base.rb +13 -0
- data/lib/machines/checks.rb +63 -0
- data/lib/machines/cloud_machine.rb +33 -0
- data/lib/machines/command.rb +86 -0
- data/lib/machines/commandline.rb +148 -0
- data/lib/machines/configuration.rb +49 -0
- data/lib/machines/core.rb +117 -0
- data/lib/machines/database.rb +17 -0
- data/lib/machines/file_operations.rb +104 -0
- data/lib/machines/help.rb +30 -0
- data/lib/machines/installation.rb +151 -0
- data/lib/machines/log_command.rb +22 -0
- data/lib/machines/logger.rb +65 -0
- data/lib/machines/machinesfile.rb +25 -0
- data/lib/machines/named_buffer.rb +9 -0
- data/lib/machines/questions.rb +15 -0
- data/lib/machines/services.rb +24 -0
- data/lib/machines/upload.rb +29 -0
- data/lib/machines/version.rb +4 -0
- data/lib/machines.rb +19 -0
- data/lib/packages/abiword.rb +11 -0
- data/lib/packages/amazon_mp3.rb +4 -0
- data/lib/packages/awstats.rb +16 -0
- data/lib/packages/base.rb +14 -0
- data/lib/packages/chrome.rb +12 -0
- data/lib/packages/cruisecontrol.rb +22 -0
- data/lib/packages/dependencies.rb +10 -0
- data/lib/packages/docky.rb +36 -0
- data/lib/packages/dotfiles.rb +26 -0
- data/lib/packages/file_roller.rb +12 -0
- data/lib/packages/finalise.rb +4 -0
- data/lib/packages/firefox.rb +4 -0
- data/lib/packages/gedit.rb +11 -0
- data/lib/packages/git.rb +4 -0
- data/lib/packages/gmate.rb +33 -0
- data/lib/packages/gnome.rb +10 -0
- data/lib/packages/gnumeric.rb +11 -0
- data/lib/packages/hosts.rb +13 -0
- data/lib/packages/load_machines.rb +38 -0
- data/lib/packages/monit.rb +10 -0
- data/lib/packages/mysql.rb +46 -0
- data/lib/packages/nginx.rb +22 -0
- data/lib/packages/nginx_logrotate.rb +26 -0
- data/lib/packages/openbox.rb +35 -0
- data/lib/packages/passenger.rb +14 -0
- data/lib/packages/passenger_nginx.rb +8 -0
- data/lib/packages/postfix.rb +10 -0
- data/lib/packages/questions.rb +5 -0
- data/lib/packages/rbenv.rb +27 -0
- data/lib/packages/rvm.rb +20 -0
- data/lib/packages/save_machines.rb +4 -0
- data/lib/packages/slim.rb +6 -0
- data/lib/packages/sqlserver.rb +5 -0
- data/lib/packages/subtle.rb +29 -0
- data/lib/packages/sudo_mods.rb +6 -0
- data/lib/packages/time.rb +6 -0
- data/lib/packages/time_daily.rb +5 -0
- data/lib/packages/timezone.rb +10 -0
- data/lib/packages/unison.rb +5 -0
- data/lib/packages/virtualbox.rb +11 -0
- data/lib/packages/virtualbox_guest.rb +7 -0
- data/lib/packages/webapps.rb +36 -0
- data/lib/template/Machinesfile +48 -0
- data/lib/template/certificates/example.com.crt +0 -0
- data/lib/template/certificates/example.com.key +0 -0
- data/lib/template/certificates/selfsigned.crt +14 -0
- data/lib/template/certificates/selfsigned.key +16 -0
- data/lib/template/config.yml +98 -0
- data/lib/template/logrotate/app.erb +10 -0
- data/lib/template/logrotate/nginx.erb +12 -0
- data/lib/template/machines.yml +179 -0
- data/lib/template/misc/awstats.conf.erb +7 -0
- data/lib/template/misc/ntp.conf +7 -0
- data/lib/template/monit/conf.d/delayed_job.erb +11 -0
- data/lib/template/monit/conf.d/mysql.erb +7 -0
- data/lib/template/monit/conf.d/nginx +5 -0
- data/lib/template/monit/conf.d/postfix +7 -0
- data/lib/template/monit/conf.d/ssh +6 -0
- data/lib/template/monit/conf.d/system.erb +14 -0
- data/lib/template/monit/monitrc.erb +10 -0
- data/lib/template/monit/upstart.conf +16 -0
- data/lib/template/mysql/dbmaster.cnf +7 -0
- data/lib/template/mysql/dbslave.cnf +3 -0
- data/lib/template/nginx/app_server.conf.erb +87 -0
- data/lib/template/nginx/nginx.conf.erb +46 -0
- data/lib/template/nginx/upstart.conf.erb +21 -0
- data/lib/template/packages/custom.rb +17 -0
- data/lib/template/packages/productivity.rb +18 -0
- data/lib/template/slim/themes/dark/background.jpg +0 -0
- data/lib/template/slim/themes/dark/panel.png +0 -0
- data/lib/template/slim/themes/dark/slim.theme +39 -0
- data/lib/template/users/phil/dotfiles/bash_aliases +45 -0
- data/lib/template/users/phil/dotfiles/config/Trolltech.conf +4 -0
- data/lib/template/users/phil/dotfiles/config/gtk-3.0/settings.ini +9 -0
- data/lib/template/users/phil/dotfiles/config/openbox/autostart.sh +14 -0
- data/lib/template/users/phil/dotfiles/config/openbox/rc.xml +482 -0
- data/lib/template/users/phil/dotfiles/config/terminator/config +10 -0
- data/lib/template/users/phil/dotfiles/fonts.conf +15 -0
- data/lib/template/users/phil/dotfiles/gitconfig +27 -0
- data/lib/template/users/phil/dotfiles/gtkrc-2.0 +16 -0
- data/lib/template/users/phil/dotfiles/local/share/applications/mimeapps.list +4 -0
- data/lib/template/users/phil/dotfiles/unison/default.prf +33 -0
- data/lib/template/users/www/authorized_keys +0 -0
- data/lib/template/users/www/dotfiles/bash_aliases +40 -0
- data/lib/template/webapps.yml +75 -0
- data/machines.gemspec +44 -0
- data/spec/acceptance/dev_machine_spec.rb +22 -0
- data/spec/lib/machines/app_settings_spec.rb +106 -0
- data/spec/lib/machines/checks_spec.rb +105 -0
- data/spec/lib/machines/cloud_machine_spec.rb +36 -0
- data/spec/lib/machines/command_spec.rb +184 -0
- data/spec/lib/machines/commandline_spec.rb +299 -0
- data/spec/lib/machines/configuration_spec.rb +61 -0
- data/spec/lib/machines/core_spec.rb +299 -0
- data/spec/lib/machines/database_spec.rb +51 -0
- data/spec/lib/machines/file_operations_spec.rb +124 -0
- data/spec/lib/machines/help_spec.rb +22 -0
- data/spec/lib/machines/installation_spec.rb +176 -0
- data/spec/lib/machines/log_command_spec.rb +16 -0
- data/spec/lib/machines/logger_spec.rb +70 -0
- data/spec/lib/machines/machinesfile_spec.rb +34 -0
- data/spec/lib/machines/questions_spec.rb +73 -0
- data/spec/lib/machines/services_spec.rb +26 -0
- data/spec/lib/machines/upload_spec.rb +86 -0
- data/spec/lib/packages/abiword_spec.rb +20 -0
- data/spec/lib/packages/amazon_mp3_spec.rb +17 -0
- data/spec/lib/packages/awstats_spec.rb +26 -0
- data/spec/lib/packages/base_spec.rb +21 -0
- data/spec/lib/packages/chrome_spec.rb +30 -0
- data/spec/lib/packages/cruisecontrol_spec.rb +33 -0
- data/spec/lib/packages/dependencies_spec.rb +20 -0
- data/spec/lib/packages/docky_spec.rb +32 -0
- data/spec/lib/packages/dotfiles_spec.rb +44 -0
- data/spec/lib/packages/file_roller_spec.rb +69 -0
- data/spec/lib/packages/firefox_spec.rb +16 -0
- data/spec/lib/packages/gedit_spec.rb +20 -0
- data/spec/lib/packages/git_spec.rb +16 -0
- data/spec/lib/packages/gmate_spec.rb +39 -0
- data/spec/lib/packages/gnome_spec.rb +22 -0
- data/spec/lib/packages/gnumeric_spec.rb +21 -0
- data/spec/lib/packages/hosts_spec.rb +41 -0
- data/spec/lib/packages/load_machines_spec.rb +118 -0
- data/spec/lib/packages/monit_spec.rb +34 -0
- data/spec/lib/packages/mysql_spec.rb +69 -0
- data/spec/lib/packages/nginx_logrotate_spec.rb +80 -0
- data/spec/lib/packages/nginx_spec.rb +46 -0
- data/spec/lib/packages/openbox_spec.rb +41 -0
- data/spec/lib/packages/passenger_nginx_spec.rb +20 -0
- data/spec/lib/packages/passenger_spec.rb +26 -0
- data/spec/lib/packages/postfix_spec.rb +19 -0
- data/spec/lib/packages/questions_spec.rb +29 -0
- data/spec/lib/packages/rbenv_spec.rb +32 -0
- data/spec/lib/packages/rvm_spec.rb +31 -0
- data/spec/lib/packages/save_machines_spec.rb +51 -0
- data/spec/lib/packages/slim_spec.rb +22 -0
- data/spec/lib/packages/sqlserver_spec.rb +17 -0
- data/spec/lib/packages/timezone_spec.rb +27 -0
- data/spec/lib/packages/unison_spec.rb +17 -0
- data/spec/lib/packages/virtualbox_guest_spec.rb +25 -0
- data/spec/lib/packages/virtualbox_spec.rb +23 -0
- data/spec/lib/packages/webapps_spec.rb +70 -0
- data/spec/spec_helper.rb +103 -0
- data/spec/support/coverage.rb +8 -0
- data/spec/support/fake_out.rb +22 -0
- data/spec/support/fakefs_additions.rb +10 -0
- data/spec/support/minitest.rb +69 -0
- data/spec/support/vm_control.rb +54 -0
- data/tmp/.gitkeep +0 -0
- metadata +581 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/mysql' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('mysql')
|
|
6
|
+
|
|
7
|
+
$conf.from_hash(:machine => {
|
|
8
|
+
:address => 'DB_IP',
|
|
9
|
+
:root_pass => 'DB_PASS',
|
|
10
|
+
:replication_user => 'REPL_USER',
|
|
11
|
+
:replication_pass => 'REPL_PASS'
|
|
12
|
+
})
|
|
13
|
+
$conf.from_hash(:db_server => {
|
|
14
|
+
:address => 'SERVER_IP',
|
|
15
|
+
:root_pass => 'SERVER_PASS',
|
|
16
|
+
:replication_user => 'REPL_USER',
|
|
17
|
+
:replication_pass => 'REPL_PASS'
|
|
18
|
+
})
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe 'db role' do
|
|
22
|
+
it 'installs MySQL' do
|
|
23
|
+
$conf.roles = :db
|
|
24
|
+
|
|
25
|
+
eval_package
|
|
26
|
+
$conf.commands.map(&:info).must_equal [
|
|
27
|
+
"TASK mysql - Install MySQL",
|
|
28
|
+
"SUDO echo mysql-server-5.5 mysql-server/root_password password DB_PASS | debconf-set-selections",
|
|
29
|
+
"SUDO echo mysql-server-5.5 mysql-server/root_password_again password DB_PASS | debconf-set-selections",
|
|
30
|
+
"SUDO apt-get -q -y install mysql-server",
|
|
31
|
+
"SUDO apt-get -q -y install mysql-client",
|
|
32
|
+
"SUDO apt-get -q -y install libmysqlclient-dev",
|
|
33
|
+
"RUN service mysql restart"
|
|
34
|
+
]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe 'dbmaster role' do
|
|
39
|
+
it 'sets permissions for each app to access database and grants replication rights for slave' do
|
|
40
|
+
$conf.roles = :dbmaster
|
|
41
|
+
$conf.webapps = {'name' => AppBuilder.new({:name => 'name', :password => 'PASSWORD'})}
|
|
42
|
+
eval_package
|
|
43
|
+
$conf.commands.map(&:info).must_equal [
|
|
44
|
+
"TASK dbperms - Grant applications access to the database",
|
|
45
|
+
%{RUN echo "GRANT ALL ON *.* TO 'name'@'%' IDENTIFIED BY 'PASSWORD';" | mysql -u root -pDB_PASS},
|
|
46
|
+
"TASK replication - Grant replication access to this machine",
|
|
47
|
+
"UPLOAD mysql/dbmaster.cnf to /tmp/dbmaster.cnf",
|
|
48
|
+
"SUDO cp -rf /tmp/dbmaster.cnf /etc/mysql/conf.d/dbmaster.cnf",
|
|
49
|
+
"RUN rm -rf /tmp/dbmaster.cnf",
|
|
50
|
+
"RUN echo \"GRANT REPLICATION SLAVE ON *.* TO 'REPL_USER'@'%' IDENTIFIED BY 'REPL_PASS';\" | mysql -u root -pDB_PASS"
|
|
51
|
+
]
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe 'dbslave role' do
|
|
56
|
+
it 'sets up slave to replicate from master' do
|
|
57
|
+
$conf.roles = :dbslave
|
|
58
|
+
eval_package
|
|
59
|
+
$conf.commands.map(&:info).must_equal [
|
|
60
|
+
"TASK replication - Setup database replication from master",
|
|
61
|
+
"UPLOAD mysql/dbslave.cnf to /tmp/dbslave.cnf",
|
|
62
|
+
"SUDO cp -rf /tmp/dbslave.cnf /etc/mysql/conf.d/dbslave.cnf",
|
|
63
|
+
"RUN rm -rf /tmp/dbslave.cnf",
|
|
64
|
+
"RUN echo \"CHANGE MASTER TO MASTER_HOST='SERVER_IP', MASTER_USER='REPL_USER' MASTER_PASSWORD='REPL_PASS';\" | mysql -u root -pDB_PASS"
|
|
65
|
+
]
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/nginx_logrotate' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('nginx_logrotate')
|
|
6
|
+
$conf.webapps = {'name' => AppBuilder.new({:name => 'appname', :path => 'apppath'})}
|
|
7
|
+
FileUtils.mkdir_p 'logrotate'
|
|
8
|
+
File.open('logrotate/nginx.erb', 'w') {|f| f.puts 'nginx template' }
|
|
9
|
+
File.open('logrotate/app.erb', 'w') {|f| f.puts 'app template' }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'generates command' do
|
|
13
|
+
eval_package
|
|
14
|
+
$conf.commands.map(&:info).must_equal [
|
|
15
|
+
'TASK logrotate_nginx - Logrotate nginx access and error logs and optionally generate stats',
|
|
16
|
+
"UPLOAD buffer from logrotate/nginx.erb to /tmp/appname_nginx_access",
|
|
17
|
+
"SUDO cp -rf /tmp/appname_nginx_access /etc/logrotate.d/appname_nginx_access",
|
|
18
|
+
"RUN rm -rf /tmp/appname_nginx_access",
|
|
19
|
+
"UPLOAD buffer from logrotate/nginx.erb to /tmp/appname_nginx_error",
|
|
20
|
+
"SUDO cp -rf /tmp/appname_nginx_error /etc/logrotate.d/appname_nginx_error",
|
|
21
|
+
"RUN rm -rf /tmp/appname_nginx_error",
|
|
22
|
+
'TASK logrotate_apps - Logrotate Rails app logs',
|
|
23
|
+
"UPLOAD buffer from logrotate/app.erb to /tmp/appname_app",
|
|
24
|
+
"SUDO cp -rf /tmp/appname_app /etc/logrotate.d/appname_app",
|
|
25
|
+
"RUN rm -rf /tmp/appname_app",
|
|
26
|
+
]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'nginx logs template' do
|
|
30
|
+
before(:each) do
|
|
31
|
+
nginx_template = nil
|
|
32
|
+
RealFS do
|
|
33
|
+
nginx_template = File.read 'lib/template/logrotate/nginx.erb'
|
|
34
|
+
end
|
|
35
|
+
File.open('logrotate/nginx.erb', 'w') {|f| f.puts nginx_template }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe 'when awstats set' do
|
|
39
|
+
it 'generates stats command' do
|
|
40
|
+
skip
|
|
41
|
+
settings = stub 'AppBuilder'
|
|
42
|
+
stats_prerotate = '/usr/lib/cgi-bin/awstats.pl -update -config=appname stats_path/appname > /dev/null'
|
|
43
|
+
stats_postrotate = '/usr/local/bin/awstats_render riskplatform.insidemedia.net /home/risk/riskplatform_stats/public > /dev/null'
|
|
44
|
+
options = {:log_path => '/var/log/nginx/appname.access.log', stats_prerotate: stats_prerotate, stats_postrotate: stats_postrotate}
|
|
45
|
+
AppBuilder.stubs(:new)
|
|
46
|
+
AppBuilder.expects(:new).with(options).returns settings
|
|
47
|
+
options = {:log_path => '/var/log/nginx/appname.error.log', stats_prerotate: nil, stats_postrotate: nil}
|
|
48
|
+
AppBuilder.expects(:new).with(options).returns settings
|
|
49
|
+
options = {:settings => settings, :to => '/etc/logrotate.d/appname_nginx_access'}
|
|
50
|
+
expects(:create_from).with('logrotate/nginx.erb', options).returns Machines::Command.new 'command', 'check'
|
|
51
|
+
eval_package
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe 'when awstats not set' do
|
|
56
|
+
it 'does not generate stats command' do
|
|
57
|
+
skip
|
|
58
|
+
settings = stub 'AppBuilder'
|
|
59
|
+
AppBuilder.stubs(:new)
|
|
60
|
+
options = {:log_path => '/var/log/nginx/appname.access.log', :stats_command => nil}
|
|
61
|
+
AppBuilder.expects(:new).with(options).returns settings
|
|
62
|
+
options = {:settings => settings, :to => '/etc/logrotate.d/appname_nginx_access'}
|
|
63
|
+
expects(:create_from).with('logrotate/nginx.erb', options).returns Command.new 'command', 'check'
|
|
64
|
+
eval_package
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
describe 'apps logs template' do
|
|
69
|
+
it 'generates correct template' do
|
|
70
|
+
mock_settings = mock 'AppBuilder'
|
|
71
|
+
stubs(:create_from).returns Machines::Command.new 'command', 'check'
|
|
72
|
+
AppBuilder.stubs(:new)
|
|
73
|
+
AppBuilder.expects(:new).with(:log_path => 'apppath/shared/log/*.log').returns mock_settings
|
|
74
|
+
options = {:settings => mock_settings, :to => '/etc/logrotate.d/appname_app'}
|
|
75
|
+
expects(:create_from).with('logrotate/app.erb', options).returns Machines::Command.new 'command', 'check'
|
|
76
|
+
eval_package
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/nginx' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('nginx')
|
|
6
|
+
$conf.from_hash(:webserver => {:name => 'nginx', :version => '1.0.2', :path => 'nginx_path', :conf_path => 'conf',
|
|
7
|
+
:url => 'nginx_url/package', :src_path => '/usr/local/src/nginx-1.2.3', :modules => '--with-http_ssl_module'})
|
|
8
|
+
$conf.from_hash(:passenger => {:nginx => '/passenger/path/ext/nginx'})
|
|
9
|
+
FileUtils.mkdir_p 'nginx'
|
|
10
|
+
File.open('nginx/nginx.conf.erb', 'w') {|f| f.puts 'the template' }
|
|
11
|
+
File.open('nginx/upstart.conf.erb', 'w') {|f| f.puts 'the template' }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'adds the following commands for staging environment' do
|
|
15
|
+
$conf.environment = 'staging'
|
|
16
|
+
eval_package
|
|
17
|
+
$conf.commands.map(&:info).join("\n").must_equal [
|
|
18
|
+
"TASK nginx - Download and configure Nginx",
|
|
19
|
+
"SUDO cd /usr/local/src && wget nginx_url/package && tar -zxf package && rm package && cd -",
|
|
20
|
+
'SUDO cd /usr/local/src/nginx-1.2.3 && ./configure --with-http_ssl_module --add-module=/passenger/path/ext/nginx && make && make install',
|
|
21
|
+
"UPLOAD buffer from nginx/nginx.conf.erb to /tmp/nginx.conf",
|
|
22
|
+
"SUDO cp -rf /tmp/nginx.conf nginx_path/conf/nginx.conf",
|
|
23
|
+
"RUN rm -rf /tmp/nginx.conf",
|
|
24
|
+
"UPLOAD buffer from nginx/upstart.conf.erb to /tmp/nginx.conf",
|
|
25
|
+
"SUDO cp -rf /tmp/nginx.conf /etc/init/nginx.conf",
|
|
26
|
+
"RUN rm -rf /tmp/nginx.conf"
|
|
27
|
+
].join("\n")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it 'adds the following commands for development environment' do
|
|
31
|
+
$conf.environment = 'development'
|
|
32
|
+
eval_package
|
|
33
|
+
$conf.commands.map(&:info).join("\n").must_equal [
|
|
34
|
+
"TASK nginx - Download and configure Nginx",
|
|
35
|
+
"SUDO cd /usr/local/src && wget nginx_url/package && tar -zxf package && rm package && cd -",
|
|
36
|
+
'SUDO cd /usr/local/src/nginx-1.2.3 && ./configure --with-http_ssl_module --add-module=/passenger/path/ext/nginx && make && make install',
|
|
37
|
+
"UPLOAD buffer from nginx/nginx.conf.erb to /tmp/nginx.conf",
|
|
38
|
+
"SUDO cp -rf /tmp/nginx.conf nginx_path/conf/nginx.conf",
|
|
39
|
+
"RUN rm -rf /tmp/nginx.conf",
|
|
40
|
+
"UPLOAD buffer from nginx/upstart.conf.erb to /tmp/nginx.conf",
|
|
41
|
+
"SUDO cp -rf /tmp/nginx.conf /etc/init/nginx.conf",
|
|
42
|
+
"RUN rm -rf /tmp/nginx.conf"
|
|
43
|
+
].join("\n")
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/openbox' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('openbox')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'adds the following commands' do
|
|
9
|
+
eval_package
|
|
10
|
+
$conf.commands.map(&:info).join("\n").must_equal [
|
|
11
|
+
"TASK openbox - Install Openbox window manager and associated fonts, themes, etc",
|
|
12
|
+
"SUDO echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true | debconf-set-selections",
|
|
13
|
+
"SUDO apt-get -q -y install dmz-cursor-theme",
|
|
14
|
+
"SUDO apt-get -q -y install elementary-icon-theme",
|
|
15
|
+
"SUDO apt-get -q -y install feh",
|
|
16
|
+
"SUDO apt-get -q -y install gnome-screenshot",
|
|
17
|
+
"SUDO apt-get -q -y install gnome-themes-standard",
|
|
18
|
+
"SUDO apt-get -q -y install lxappearance",
|
|
19
|
+
"SUDO apt-get -q -y install obconf",
|
|
20
|
+
"SUDO apt-get -q -y install openbox",
|
|
21
|
+
"SUDO apt-get -q -y install pcmanfm",
|
|
22
|
+
"SUDO apt-get -q -y install suckless-tools",
|
|
23
|
+
"SUDO apt-get -q -y install terminator",
|
|
24
|
+
"SUDO apt-get -q -y install ttf-ubuntu-font-family",
|
|
25
|
+
"SUDO apt-get -q -y install ttf-mscorefonts-installer",
|
|
26
|
+
"SUDO apt-get -q -y install xautolock",
|
|
27
|
+
"SUDO apt-get -q -y install xcompmgr",
|
|
28
|
+
"SUDO apt-get -q -y install xorg",
|
|
29
|
+
"TASK fonts - Set openbox and Gnome interface fonts (See also rc.xml, fonts.conf, gtkrc-2.0)",
|
|
30
|
+
"RUN gconftool-2 --set \"/apps/metacity/general/titlebar_font\" --type string \"Ubuntu Bold 8\"",
|
|
31
|
+
"RUN gconftool-2 --set \"/apps/nautilus/preferences/desktop_font\" --type string \"Ubuntu Light 8\"",
|
|
32
|
+
"RUN gconftool-2 --set \"/apps/nautilus/preferences/default_folder_viewer\" --type string \"compact_view\"",
|
|
33
|
+
"RUN gconftool-2 --set \"/desktop/gnome/interface/font_name\" --type string \"Ubuntu Light 8\"",
|
|
34
|
+
"RUN gconftool-2 --set \"/desktop/gnome/interface/document_font_name\" --type string \"Ubuntu Light 8\"",
|
|
35
|
+
"RUN gconftool-2 --set \"/desktop/gnome/interface/monospace_font_name\" --type string \"Monospace 10\"",
|
|
36
|
+
"SUDO grep \"inode/directory=pcmanfm.desktop\" .local/share/applications/mimeapps.list || echo \"inode/directory=pcmanfm.desktop\" >> .local/share/applications/mimeapps.list",
|
|
37
|
+
"RUN grep \"ck-launch-session openbox-session\" ~/.xinitrc || echo \"ck-launch-session openbox-session\" >> ~/.xinitrc"
|
|
38
|
+
].join("\n")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/passenger_nginx' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('passenger_nginx')
|
|
6
|
+
$conf.from_hash(:webserver => {:path => 'nginx_dest', :version => '1.0.2'})
|
|
7
|
+
$conf.password = 'pass'
|
|
8
|
+
$conf.from_hash(:passenger => {:root => '/home/user/gems/passenger-1.2.3'})
|
|
9
|
+
$conf.from_hash(:ruby => {:gems_path => 'lib/ruby/gems/1.9.1/gems'})
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'adds the following commands' do
|
|
13
|
+
eval_package
|
|
14
|
+
$conf.commands.map(&:info).must_equal [
|
|
15
|
+
"TASK passenger_nginx - Build the passenger module for Nginx",
|
|
16
|
+
'RUN cd /home/user/gems/passenger-1.2.3/ext/nginx && rake nginx RELEASE=yes && cd -'
|
|
17
|
+
]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/passenger' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('passenger')
|
|
6
|
+
$conf.user_home = '/home/user'
|
|
7
|
+
$conf.from_hash(:passenger => {:version => '3.0.7'})
|
|
8
|
+
$conf.from_hash(:ruby => {:gems_path => 'ruby/gems', :executable => 'bin/ruby'})
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'adds the following commands' do
|
|
12
|
+
eval_package
|
|
13
|
+
$conf.commands.map(&:info).must_equal [
|
|
14
|
+
"TASK passenger - Install passenger",
|
|
15
|
+
'SUDO apt-get -q -y install libcurl4-openssl-dev',
|
|
16
|
+
'RUN gem install passenger -v "3.0.7"',
|
|
17
|
+
]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'sets passenger root and ruby' do
|
|
21
|
+
eval_package
|
|
22
|
+
$conf.passenger.root.must_equal '/home/user/ruby/gems/passenger-3.0.7'
|
|
23
|
+
$conf.passenger.ruby.must_equal '/home/user/bin/ruby'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/postfix' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('postfix')
|
|
6
|
+
$conf.from_hash(:mail => {:domain => 'domain'})
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'adds the following commands' do
|
|
10
|
+
eval_package
|
|
11
|
+
$conf.commands.map(&:info).must_equal [
|
|
12
|
+
"TASK postfix - Install postfix mail",
|
|
13
|
+
"SUDO echo postfix postfix/main_mailer_type select Internet Site | debconf-set-selections",
|
|
14
|
+
"SUDO echo postfix postfix/mailname string domain | debconf-set-selections",
|
|
15
|
+
"SUDO apt-get -q -y install postfix"
|
|
16
|
+
]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/questions' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('questions')
|
|
6
|
+
$conf.machine = AppConf.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'asks for a password' do
|
|
10
|
+
expects(:enter_password).with('users', false)
|
|
11
|
+
eval_package
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'does not ask for a password when machine is EC2' do
|
|
15
|
+
$conf.machine.ec2 = {}
|
|
16
|
+
expects(:enter_password).never
|
|
17
|
+
eval_package
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'sets password when logging' do
|
|
21
|
+
$conf.log_only = true
|
|
22
|
+
expects(:enter_password).never
|
|
23
|
+
eval_package
|
|
24
|
+
$conf.passwords.must_equal ['pa55word']
|
|
25
|
+
$conf.password.must_equal 'pa55word'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/rbenv' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('rbenv')
|
|
6
|
+
$conf.ruby = AppConf.new
|
|
7
|
+
$conf.ruby.version = '1.9.2'
|
|
8
|
+
$conf.ruby.full_version = '1.9.2-p290'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'adds the following commands' do
|
|
12
|
+
eval_package
|
|
13
|
+
$conf.commands.map(&:info).join("\n").must_equal [
|
|
14
|
+
'TASK rbenv - Install ruby-build, rbenv, ruby 1.9.2 and Bundler',
|
|
15
|
+
"SUDO apt-get -q -y install git-core",
|
|
16
|
+
"SUDO apt-get -q -y install curl",
|
|
17
|
+
'RUN git clone --quiet git://github.com/sstephenson/ruby-build.git',
|
|
18
|
+
'SUDO cd ~/ruby-build && ./install.sh',
|
|
19
|
+
'RUN git clone --quiet git://github.com/sstephenson/rbenv.git ~/.rbenv',
|
|
20
|
+
'RUN grep "PATH=.bin/safe/../../.bin:\\$HOME/.rbenv/bin:\\$HOME/.rbenv/shims:\\$PATH" ~/.profile || echo "PATH=.bin/safe/../../.bin:\\$HOME/.rbenv/bin:\\$HOME/.rbenv/shims:\\$PATH" >> ~/.profile',
|
|
21
|
+
|
|
22
|
+
'RUN $HOME/.rbenv/bin/rbenv install 1.9.2-p290',
|
|
23
|
+
'RUN $HOME/.rbenv/bin/rbenv rehash',
|
|
24
|
+
'RUN $HOME/.rbenv/bin/rbenv global 1.9.2-p290',
|
|
25
|
+
|
|
26
|
+
'UPLOAD buffer from .gemrc to .gemrc',
|
|
27
|
+
'RUN $HOME/.rbenv/bin/rbenv exec gem install bundler',
|
|
28
|
+
'RUN $HOME/.rbenv/bin/rbenv rehash'
|
|
29
|
+
].join("\n")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/rvm' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('rvm')
|
|
6
|
+
$conf.from_hash(:ruby => {:version => '1.9'})
|
|
7
|
+
$conf.from_hash(:rvm => {:url => 'rvm_url', :version => '1.0'})
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'adds the following commands' do
|
|
11
|
+
eval_package
|
|
12
|
+
$conf.commands.map(&:info).must_equal [
|
|
13
|
+
"TASK rvm - Install RVM",
|
|
14
|
+
"SUDO apt-get -q -y install git-core",
|
|
15
|
+
'RUN bash -s 1.0 < <(wget -q https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )',
|
|
16
|
+
|
|
17
|
+
"RUN source .bashrc",
|
|
18
|
+
"RUN rm -rf rvm-installer",
|
|
19
|
+
|
|
20
|
+
"TASK rvm_prompt_off - turn off trust prompting for new .rvmrc files",
|
|
21
|
+
"RUN grep \"export rvm_trust_rvmrcs_flag=1\" .rvmrc || echo \"export rvm_trust_rvmrcs_flag=1\" >> .rvmrc",
|
|
22
|
+
|
|
23
|
+
'TASK ruby - Install Ruby, make 1.9@global the default and install Bundler',
|
|
24
|
+
'RUN rvm install 1.9',
|
|
25
|
+
'RUN rvm 1.9@global --default',
|
|
26
|
+
'UPLOAD buffer from .gemrc to .gemrc',
|
|
27
|
+
'RUN gem install bundler'
|
|
28
|
+
]
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/save_machines' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('save_machines')
|
|
6
|
+
$conf.machines_changed = true
|
|
7
|
+
$conf.from_hash({'machines' => {'a_machine' => {'hostname' => 'something', 'environment' => 'development'}}})
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'loads the machines.yml file' do
|
|
11
|
+
File.open('machines.yml', 'w'){|f| f.puts "\n"}
|
|
12
|
+
eval_package
|
|
13
|
+
File.read('machines.yml').must_equal <<-EOF
|
|
14
|
+
---
|
|
15
|
+
machines:
|
|
16
|
+
a_machine:
|
|
17
|
+
hostname: something
|
|
18
|
+
environment: development
|
|
19
|
+
EOF
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'preserves comments' do
|
|
23
|
+
File.open('machines.yml', 'w'){|f| f.puts "# Some\n# comments\n---\na_machine:\n hostname:\n"}
|
|
24
|
+
eval_package
|
|
25
|
+
File.read('machines.yml').must_equal <<-EOF
|
|
26
|
+
# Some
|
|
27
|
+
# comments
|
|
28
|
+
---
|
|
29
|
+
machines:
|
|
30
|
+
a_machine:
|
|
31
|
+
hostname: something
|
|
32
|
+
environment: development
|
|
33
|
+
EOF
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'does not raise when no machines.yml' do
|
|
37
|
+
eval_package
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'only saves when something changed' do
|
|
41
|
+
$conf.expects :save
|
|
42
|
+
eval_package
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'does not save when nothing changed' do
|
|
46
|
+
$conf.clear :machines_changed
|
|
47
|
+
$conf.expects(:save).never
|
|
48
|
+
eval_package
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/slim' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
$conf.login_theme = 'custom'
|
|
6
|
+
load_package('slim')
|
|
7
|
+
FileUtils.mkdir_p 'slim/themes'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'adds the following commands' do
|
|
11
|
+
eval_package
|
|
12
|
+
$conf.commands.map(&:info).must_equal [
|
|
13
|
+
"TASK slim - Install SLiM desktop manager",
|
|
14
|
+
"SUDO apt-get -q -y install slim",
|
|
15
|
+
"UPLOAD slim/themes to /tmp/themes",
|
|
16
|
+
"SUDO cp -rf /tmp/themes/. /usr/share/slim/themes",
|
|
17
|
+
"RUN rm -rf /tmp/themes",
|
|
18
|
+
"SUDO sed -i \"s/debian-spacefun/custom/\" /etc/slim.conf"
|
|
19
|
+
]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/sqlserver' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('sqlserver')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'adds the following commands' do
|
|
9
|
+
eval_package
|
|
10
|
+
$conf.commands.map(&:info).must_equal [
|
|
11
|
+
"TASK sqlserver - Download and build sqlserver driver",
|
|
12
|
+
"RUN git clone --quiet git://github.com/rails-sqlserver/tiny_tds.git",
|
|
13
|
+
"RUN cd tiny_tds && rake compile && rake native gem"
|
|
14
|
+
]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/timezone' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('timezone')
|
|
6
|
+
$conf.timezone = 'GB'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'adds the following commands' do
|
|
10
|
+
eval_package
|
|
11
|
+
$conf.commands.map(&:info).must_equal [
|
|
12
|
+
"TASK timezone - Set timezone from config.yml",
|
|
13
|
+
"SUDO ln -sf /etc/localtime /usr/share/zoneinfo/GB"
|
|
14
|
+
]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'UTC set when specified' do
|
|
18
|
+
$conf.clock_utc = true
|
|
19
|
+
eval_package
|
|
20
|
+
$conf.commands.map(&:info).must_equal [
|
|
21
|
+
"TASK timezone - Set timezone from config.yml",
|
|
22
|
+
"SUDO ln -sf /etc/localtime /usr/share/zoneinfo/GB",
|
|
23
|
+
"SUDO sed -i \"s/UTC=no/UTC=yes/\" /etc/default/rcS"
|
|
24
|
+
]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/unison' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('unison')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'adds the following commands' do
|
|
9
|
+
eval_package
|
|
10
|
+
$conf.commands.map(&:info).must_equal [
|
|
11
|
+
"TASK unison - Install unison two way file sync and set it to run hourly. Config in users/user/.unison/default.prf",
|
|
12
|
+
"SUDO apt-get -q -y install unison",
|
|
13
|
+
"RUN echo '30 18 * * * /usr/bin/unison' | crontab"
|
|
14
|
+
]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/virtualbox_guest' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('virtualbox_guest')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'adds the following commands' do
|
|
9
|
+
eval_package
|
|
10
|
+
$conf.commands.map(&:info).must_equal [
|
|
11
|
+
"TASK virtualbox_guest - Installs VirtualBox Guest Additions and fixes piix4_smbus error",
|
|
12
|
+
"SUDO add-apt-repository ppa:debfx/virtualbox",
|
|
13
|
+
"SUDO apt-get -q -y update > /tmp/apt-update.log",
|
|
14
|
+
'SUDO apt-get -q -y install virtualbox-guest-additions',
|
|
15
|
+
'SUDO grep "blacklist i2c_piix4" /etc/modprobe.d/blacklist.conf || echo "blacklist i2c_piix4" >> /etc/modprobe.d/blacklist.conf'
|
|
16
|
+
]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'autostart client when requested' do
|
|
20
|
+
$conf.confgure_vbox_client = true
|
|
21
|
+
eval_package
|
|
22
|
+
$conf.commands.map(&:info).join("\n").must_match /grep "VBoxClient-all &" .xinitrc || echo "VBoxClient-all &" >> .xinitrc/
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'packages/virtualbox' do
|
|
4
|
+
before(:each) do
|
|
5
|
+
load_package('virtualbox')
|
|
6
|
+
$conf.user = 'phil'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'adds the following commands' do
|
|
10
|
+
eval_package
|
|
11
|
+
$conf.commands.map(&:info).join("\n").must_equal [
|
|
12
|
+
"TASK virtualbox - Install VirtualBox",
|
|
13
|
+
"SUDO apt-get -q -y install dkms",
|
|
14
|
+
"SUDO add-apt-repository ppa:debfx/virtualbox",
|
|
15
|
+
"SUDO apt-get -q -y update > /tmp/apt-update.log",
|
|
16
|
+
"SUDO apt-get -q -y install virtualbox",
|
|
17
|
+
"SUDO usermod -a -G vboxusers phil",
|
|
18
|
+
"SUDO grep \"application/x-virtualbox-vbox-extpack=virtualbox.desktop\" .local/share/applications/mimeapps.list || echo \"application/x-virtualbox-vbox-extpack=virtualbox.desktop\" >> .local/share/applications/mimeapps.list",
|
|
19
|
+
"SUDO grep \"application/x-virtualbox-ova=virtualbox.desktop\" .local/share/applications/mimeapps.list || echo \"application/x-virtualbox-ova=virtualbox.desktop\" >> .local/share/applications/mimeapps.list"
|
|
20
|
+
].join("\n")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|