pvcglue 0.1.5
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.
- checksums.yaml +15 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +91 -0
- data/Rakefile +1 -0
- data/bin/pvc +13 -0
- data/lib/pvcglue.rb +43 -0
- data/lib/pvcglue/all_the_things.rb +7 -0
- data/lib/pvcglue/bootstrap.rb +8 -0
- data/lib/pvcglue/capistrano.rb +35 -0
- data/lib/pvcglue/cli.rb +150 -0
- data/lib/pvcglue/cloud.rb +278 -0
- data/lib/pvcglue/configuration.rb +157 -0
- data/lib/pvcglue/db.rb +145 -0
- data/lib/pvcglue/deploy.rb +4 -0
- data/lib/pvcglue/env.rb +141 -0
- data/lib/pvcglue/manager.rb +137 -0
- data/lib/pvcglue/nodes.rb +29 -0
- data/lib/pvcglue/packages.rb +47 -0
- data/lib/pvcglue/packages/bootstrap.rb +92 -0
- data/lib/pvcglue/packages/env.rb +80 -0
- data/lib/pvcglue/packages/firewall.rb +48 -0
- data/lib/pvcglue/packages/manager.rb +102 -0
- data/lib/pvcglue/packages/nginx.rb +10 -0
- data/lib/pvcglue/packages/nodejs.rb +17 -0
- data/lib/pvcglue/packages/passenger.rb +28 -0
- data/lib/pvcglue/packages/postgresql.rb +10 -0
- data/lib/pvcglue/packages/role_db.rb +47 -0
- data/lib/pvcglue/packages/role_lb.rb +64 -0
- data/lib/pvcglue/packages/role_memcached.rb +14 -0
- data/lib/pvcglue/packages/role_web.rb +60 -0
- data/lib/pvcglue/packages/rvm.rb +75 -0
- data/lib/pvcglue/packages/timezone.rb +17 -0
- data/lib/pvcglue/packages/ubuntu.rb +100 -0
- data/lib/pvcglue/railtie.rb +11 -0
- data/lib/pvcglue/ssl.rb +37 -0
- data/lib/pvcglue/templates/20auto-upgrades.erb +2 -0
- data/lib/pvcglue/templates/authorized_keys.erb +3 -0
- data/lib/pvcglue/templates/capfile.erb +20 -0
- data/lib/pvcglue/templates/database.yml.erb +57 -0
- data/lib/pvcglue/templates/denial_of_service.erb +3 -0
- data/lib/pvcglue/templates/deploy.rb.erb +81 -0
- data/lib/pvcglue/templates/gemrc.erb +1 -0
- data/lib/pvcglue/templates/hosts.erb +9 -0
- data/lib/pvcglue/templates/lb.nginx.conf.erb +88 -0
- data/lib/pvcglue/templates/lb.sites-enabled.erb +74 -0
- data/lib/pvcglue/templates/maintenance_mode.erb +46 -0
- data/lib/pvcglue/templates/memcached.conf.erb +55 -0
- data/lib/pvcglue/templates/passenger.list.erb +2 -0
- data/lib/pvcglue/templates/pg_hba.conf.erb +101 -0
- data/lib/pvcglue/templates/postgresql.conf.erb +557 -0
- data/lib/pvcglue/templates/sshd_config.erb +91 -0
- data/lib/pvcglue/templates/stage-deploy.rb.erb +33 -0
- data/lib/pvcglue/templates/timezone.erb +1 -0
- data/lib/pvcglue/templates/ufw.rules.erb +42 -0
- data/lib/pvcglue/templates/ufw.rules6.erb +25 -0
- data/lib/pvcglue/templates/web.bashrc.erb +120 -0
- data/lib/pvcglue/templates/web.env.erb +3 -0
- data/lib/pvcglue/templates/web.nginx.conf.erb +82 -0
- data/lib/pvcglue/templates/web.sites-enabled.erb +8 -0
- data/lib/pvcglue/toml_pvc_dumper.rb +53 -0
- data/lib/pvcglue/version.rb +3 -0
- data/pvcglue.gemspec +33 -0
- metadata +296 -0
@@ -0,0 +1,10 @@
|
|
1
|
+
# Reference http://www.modrails.com/documentation/Users%20guide%20Nginx.html
|
2
|
+
# 'nginx-extras' is the "everything" install, https://wiki.debian.org/Nginx
|
3
|
+
apt_package 'nginx', 'nginx-extras' do
|
4
|
+
depends_on 'phusion-repository' # Must use nginx from phusion repo to automatically get passenger integration and the latest version
|
5
|
+
action('start') { sudo 'service nginx start' }
|
6
|
+
action('stop') { sudo 'service nginx stop' }
|
7
|
+
action('restart') { trigger('nginx:running') ? sudo('service nginx restart') : trigger('nginx:start') }
|
8
|
+
action('running') { run('ps aux | grep [n]ginx') =~ /nginx: master process/ }
|
9
|
+
action('reload') { sudo 'pkill -HUP nginx' }
|
10
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
package 'nodejs' do
|
2
|
+
depends_on 'apt'
|
3
|
+
validate do
|
4
|
+
trigger('apt:exists', 'nodejs') &&
|
5
|
+
binary_exists?('node') &&
|
6
|
+
binary_exists?('npm')
|
7
|
+
end
|
8
|
+
apply do
|
9
|
+
trigger 'apt:ppa', 'ppa:chris-lea/node.js'
|
10
|
+
trigger 'apt:update'
|
11
|
+
trigger 'apt:install', 'nodejs'
|
12
|
+
end
|
13
|
+
remove do
|
14
|
+
trigger 'apt:remove', 'nodejs'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
apt_package 'apt-transport-https'
|
2
|
+
apt_package 'passenger'
|
3
|
+
|
4
|
+
package 'phusion-sources-list' do
|
5
|
+
file({
|
6
|
+
:template => Pvcglue.template_file_name('passenger.list.erb'),
|
7
|
+
:destination => '/etc/apt/sources.list.d/passenger.list',
|
8
|
+
:permissions => 644,
|
9
|
+
:user => 'root',
|
10
|
+
:group => 'root'
|
11
|
+
}) { trigger 'apt:update', true
|
12
|
+
}
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
package 'phusion-apt-key' do
|
17
|
+
apply do
|
18
|
+
sudo "apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
package 'phusion-repository' do
|
23
|
+
# http://www.modrails.com/documentation/Users%20guide%20Nginx.html#install_on_debian_ubuntu
|
24
|
+
depends_on 'apt-transport-https'
|
25
|
+
depends_on 'phusion-apt-key'
|
26
|
+
depends_on 'phusion-sources-list'
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
apt_package 'postgresql' do
|
2
|
+
action('start') { sudo 'service postgresql start' }
|
3
|
+
action('stop') { sudo 'service postgresql stop' }
|
4
|
+
action('restart') { sudo('service postgresql restart') }
|
5
|
+
end
|
6
|
+
|
7
|
+
package 'postgres' do
|
8
|
+
depends_on 'postgresql', 'libpq-dev'
|
9
|
+
end
|
10
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
package 'db' do
|
2
|
+
depends_on 'env-initialized'
|
3
|
+
depends_on 'postgresql'
|
4
|
+
depends_on 'postgresql-conf'
|
5
|
+
depends_on 'postgresql-app-stage-conf'
|
6
|
+
end
|
7
|
+
|
8
|
+
package 'postgresql-conf' do
|
9
|
+
file({
|
10
|
+
:template => Pvcglue.template_file_name('postgresql.conf.erb'),
|
11
|
+
:destination => '/etc/postgresql/9.1/main/postgresql.conf',
|
12
|
+
:create_dirs => false,
|
13
|
+
:permissions => 0644,
|
14
|
+
:user => 'postgres',
|
15
|
+
:group => 'postgres'
|
16
|
+
}) { trigger 'postgresql:restart' }
|
17
|
+
|
18
|
+
file({
|
19
|
+
:template => Pvcglue.template_file_name('pg_hba.conf.erb'),
|
20
|
+
:destination => '/etc/postgresql/9.1/main/pg_hba.conf',
|
21
|
+
:create_dirs => false,
|
22
|
+
:permissions => 0644,
|
23
|
+
:user => 'postgres',
|
24
|
+
:group => 'postgres'
|
25
|
+
}) { trigger 'postgresql:restart' }
|
26
|
+
end
|
27
|
+
|
28
|
+
package 'postgresql-app-stage-conf' do
|
29
|
+
# TODO: Add `verify` method so it will be faster, and won't display errors
|
30
|
+
apply do
|
31
|
+
username = Pvcglue.cloud.stage_env['DB_USER_POSTGRES_USERNAME']
|
32
|
+
password = Pvcglue.cloud.stage_env['DB_USER_POSTGRES_PASSWORD']
|
33
|
+
db_name = username # just for clarity in later statements. This also must match database.yml.
|
34
|
+
run(%Q[sudo -u postgres psql -c "CREATE ROLE #{username} LOGIN CREATEDB PASSWORD '#{password}'"])
|
35
|
+
run(%Q[sudo -u postgres psql -c "ALTER ROLE #{username} PASSWORD '#{password}' CREATEDB LOGIN"])
|
36
|
+
run(%Q[sudo -u postgres psql -c "CREATE DATABASE #{db_name} WITH OWNER #{username}"])
|
37
|
+
run(%Q[sudo -u postgres psql #{db_name} -c "ALTER SCHEMA public OWNER TO #{username}"])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
package 'postgresql-root-password' do
|
42
|
+
apply do
|
43
|
+
# TODO: Use this to implement setting of the root password
|
44
|
+
# sudo(%q[sudo -u postgres psql -c "ALTER ROLE postgres WITH PASSWORD 'zzz';"])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
package 'lb' do
|
2
|
+
depends_on 'nginx'
|
3
|
+
depends_on 'ssl-cert'
|
4
|
+
depends_on 'lb-config'
|
5
|
+
depends_on 'lb-maintenance-files'
|
6
|
+
|
7
|
+
validate do
|
8
|
+
trigger('nginx:running')
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
package 'lb-config' do
|
14
|
+
file({
|
15
|
+
:template => Pvcglue.template_file_name('lb.nginx.conf.erb'),
|
16
|
+
:destination => '/etc/./nginx/nginx.conf', # !!! Yes the extra '.' is important !!! It makes this nginx.conf a 'different' nginx.conf than the web server. Seems to be a "feature" of the orca gem.
|
17
|
+
:create_dirs => false,
|
18
|
+
:permissions => 0644,
|
19
|
+
:user => 'root',
|
20
|
+
:group => 'root'
|
21
|
+
}) { sudo('service nginx restart') }
|
22
|
+
|
23
|
+
file({
|
24
|
+
:template => Pvcglue.template_file_name('lb.sites-enabled.erb'),
|
25
|
+
:destination => "/etc/./nginx/sites-enabled/#{Pvcglue.cloud.app_and_stage_name}", # !!! Yes the extra '.' is important !!! It makes this nginx.conf a 'different' nginx.conf than the web server. Seems to be a "feature" of the orca gem.
|
26
|
+
:create_dirs => false,
|
27
|
+
:permissions => 0644,
|
28
|
+
:user => 'root',
|
29
|
+
:group => 'root'
|
30
|
+
}) { sudo('service nginx restart') }
|
31
|
+
end
|
32
|
+
|
33
|
+
package 'lb-maintenance-files' do
|
34
|
+
apply do
|
35
|
+
source_dir = Pvcglue.configuration.app_maintenance_files_dir
|
36
|
+
dest_dir = Pvcglue.cloud.maintenance_files_dir
|
37
|
+
# run on remote
|
38
|
+
run(%(mkdir -p #{dest_dir}))
|
39
|
+
# run rsync from local machine (and it will connect to remote)
|
40
|
+
cmd = (%(rsync -rzv --exclude=maintenance.on --delete -e 'ssh -p #{Pvcglue.cloud.port_in_node_context}' #{source_dir}/ #{node.get(:user)}@#{node.host}:#{dest_dir}/))
|
41
|
+
raise $?.to_s unless system(cmd)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
package 'maintenance_mode' do
|
46
|
+
apply do
|
47
|
+
if Pvcglue.cloud.maintenance_mode == 'on'
|
48
|
+
run "touch #{Pvcglue.cloud.maintenance_mode_file_name}"
|
49
|
+
else
|
50
|
+
run "rm #{Pvcglue.cloud.maintenance_mode_file_name}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
package 'ssl-cert' do
|
56
|
+
apply do
|
57
|
+
if Pvcglue.cloud.ssl_mode == :load_balancer_force_ssl
|
58
|
+
sudo(%(mkdir -p #{Pvcglue.cloud.nginx_config_ssl_path}))
|
59
|
+
sudo(%Q[echo '#{Pvcglue.cloud.ssl_crt}' | sudo tee #{Pvcglue.cloud.nginx_ssl_crt_file_name} && sudo chmod 600 #{Pvcglue.cloud.nginx_ssl_crt_file_name}])
|
60
|
+
sudo(%Q[echo '#{Pvcglue.cloud.ssl_key}' | sudo tee #{Pvcglue.cloud.nginx_ssl_key_file_name} && sudo chmod 600 #{Pvcglue.cloud.nginx_ssl_key_file_name}])
|
61
|
+
# TODO: Restart nginx!!!
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
apt_package 'memcached'
|
2
|
+
|
3
|
+
package 'caching' do
|
4
|
+
depends_on 'memcached'
|
5
|
+
file({
|
6
|
+
:template => Pvcglue.template_file_name('memcached.conf.erb'),
|
7
|
+
:destination => '/etc/memcached.conf',
|
8
|
+
:create_dirs => false,
|
9
|
+
:permissions => 0644,
|
10
|
+
:user => 'root',
|
11
|
+
:group => 'root'
|
12
|
+
}) { sudo('service memcached restart') }
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
package 'web' do
|
2
|
+
# rvm/ruby install based on http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/
|
3
|
+
depends_on 'swap' # needed for deployment/asset building on < 1GB machines
|
4
|
+
depends_on 'build-essential'
|
5
|
+
depends_on 'git'
|
6
|
+
depends_on 'rvm'
|
7
|
+
depends_on 'no-rdoc'
|
8
|
+
|
9
|
+
|
10
|
+
depends_on 'rvm-ruby'
|
11
|
+
depends_on 'bundler'
|
12
|
+
depends_on 'nginx'
|
13
|
+
depends_on 'phusion-passenger'
|
14
|
+
depends_on 'app-env'
|
15
|
+
depends_on 'web-site-config'
|
16
|
+
|
17
|
+
depends_on 'imagemagick' # TODO: app specific--will need to make system to include extra packages
|
18
|
+
depends_on 'libpq-dev' # for pg gem
|
19
|
+
depends_on 'nodejs'
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
package 'web-site-config' do
|
24
|
+
depends_on 'web-get-passenger-ruby'
|
25
|
+
file({
|
26
|
+
:template => Pvcglue.template_file_name('web.sites-enabled.erb'),
|
27
|
+
:destination => "/etc/nginx/sites-enabled/#{Pvcglue.cloud.app_and_stage_name}",
|
28
|
+
:create_dirs => false,
|
29
|
+
:permissions => 0644,
|
30
|
+
:user => 'root',
|
31
|
+
:group => 'root'
|
32
|
+
}) { sudo('service nginx restart') }
|
33
|
+
end
|
34
|
+
|
35
|
+
package 'web-get-passenger-ruby' do
|
36
|
+
apply do
|
37
|
+
info = run("rvm use #{Pvcglue.configuration.ruby_version} && $(which passenger-config) --ruby-command")
|
38
|
+
if info =~ /passenger_ruby (.*)/
|
39
|
+
Pvcglue.cloud.passenger_ruby = $1
|
40
|
+
else
|
41
|
+
raise "'passenger_ruby' not found." unless Pvcglue.cloud.passenger_ruby
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
package 'phusion-passenger' do
|
47
|
+
depends_on 'phusion-repository'
|
48
|
+
depends_on 'passenger'
|
49
|
+
validate do
|
50
|
+
run('passenger -v') =~ /Phusion Passenger version 4/
|
51
|
+
end
|
52
|
+
|
53
|
+
file({
|
54
|
+
:template => Pvcglue.template_file_name('web.nginx.conf.erb'),
|
55
|
+
:destination => '/etc/nginx/nginx.conf',
|
56
|
+
:permissions => 0644,
|
57
|
+
:user => 'root',
|
58
|
+
:group => 'root'
|
59
|
+
}) { trigger 'nginx:restart' }
|
60
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
package 'rvm' do
|
2
|
+
depends_on 'curl'
|
3
|
+
depends_on 'rvm-bashrc'
|
4
|
+
|
5
|
+
validate do
|
6
|
+
run('type rvm | head -n 1') =~ /rvm is a function/
|
7
|
+
end
|
8
|
+
|
9
|
+
apply do
|
10
|
+
run '\curl -sSL https://get.rvm.io | bash -s stable'
|
11
|
+
run "rvm requirements"
|
12
|
+
end
|
13
|
+
|
14
|
+
remove do
|
15
|
+
run 'yes "yes" | rvm implode'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
package 'rvm-bashrc' do
|
20
|
+
file({
|
21
|
+
:template => Pvcglue.template_file_name('web.bashrc.erb'),
|
22
|
+
:destination => '/home/deploy/.bashrc',
|
23
|
+
:create_dirs => false,
|
24
|
+
:permissions => 0644,
|
25
|
+
:user => 'deploy',
|
26
|
+
:group => 'deploy'
|
27
|
+
})
|
28
|
+
end
|
29
|
+
|
30
|
+
package 'gem' do
|
31
|
+
depends_on 'rvm-ruby'
|
32
|
+
action 'exists' do |gem_name|
|
33
|
+
run("gem list -i #{gem_name}") =~ /true/
|
34
|
+
end
|
35
|
+
action 'install' do |gem_name|
|
36
|
+
sudo "gem install #{gem_name} --no-ri --no-rdoc"
|
37
|
+
end
|
38
|
+
action 'uninstall' do |gem_name|
|
39
|
+
sudo "gem uninstall #{gem_name} -x -a"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
package 'bundler' do
|
44
|
+
depends_on 'gem'
|
45
|
+
apply { trigger 'gem:install', 'bundler' }
|
46
|
+
remove { trigger 'gem:remove', 'bundler' }
|
47
|
+
validate { trigger 'gem:exists', 'bundler' }
|
48
|
+
end
|
49
|
+
|
50
|
+
package 'rvm-ruby' do
|
51
|
+
depends_on 'rvm'
|
52
|
+
|
53
|
+
validate do
|
54
|
+
run('rvm list strings') =~ /#{Pvcglue.configuration.ruby_version.gsub('.', '\.')}/
|
55
|
+
end
|
56
|
+
|
57
|
+
apply do
|
58
|
+
run "rvm install #{Pvcglue.configuration.ruby_version}"
|
59
|
+
# run "rvm --default use 2.0.0"
|
60
|
+
end
|
61
|
+
|
62
|
+
remove do
|
63
|
+
run "rvm remove --archive --gems #{Pvcglue.configuration.ruby_version}"
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
package 'no-rdoc' do
|
69
|
+
file({
|
70
|
+
:template => Pvcglue.template_file_name('gemrc.erb'),
|
71
|
+
:destination => '/home/deploy/.gemrc',
|
72
|
+
:create_dirs => false
|
73
|
+
})
|
74
|
+
end
|
75
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
package 'time-zone' do
|
2
|
+
# http://hacksforge.com/How-to-change-time-zone-in-Ubuntu-Linux.html
|
3
|
+
|
4
|
+
file({
|
5
|
+
:template => Pvcglue.template_file_name('timezone.erb'),
|
6
|
+
:destination => '/etc/timezone',
|
7
|
+
:create_dirs => false,
|
8
|
+
:permissions => 0644,
|
9
|
+
:user => 'root',
|
10
|
+
:group => 'root'
|
11
|
+
}) do
|
12
|
+
sudo %Q[dpkg-reconfigure --frontend noninteractive tzdata]
|
13
|
+
sudo %Q[service cron restart]
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# apt_package 'htop' # moved to manager
|
2
|
+
# apt_package 'ufw' # moved to manager
|
3
|
+
apt_package 'build-essential'
|
4
|
+
apt_package 'git', 'git-core'
|
5
|
+
apt_package 'libpq-dev'
|
6
|
+
apt_package 'libxml2', 'libxml2-dev'
|
7
|
+
apt_package 'libxslt', 'libxslt1-dev'
|
8
|
+
apt_package 'imagemagick'
|
9
|
+
apt_package 'curl'
|
10
|
+
|
11
|
+
package 'swap' do
|
12
|
+
# https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04
|
13
|
+
depends_on 'swap-fstab'
|
14
|
+
|
15
|
+
validate do
|
16
|
+
# TODO: This may be brittle
|
17
|
+
# Ex: "Filename\t\t\t\tType\t\tSize\tUsed\tPriority\n/swapfile file\t\t524284\t306372\t-1\n"
|
18
|
+
result = sudo("swapon -s")
|
19
|
+
data = result.split("\n").last.split("\t")[2]
|
20
|
+
# sudo("swapon -s") =~ /\/swapfile file #{Pvcglue.cloud.swapfile_size} 0 -1/
|
21
|
+
megs = (data.to_f / 1024).round
|
22
|
+
puts megs.inspect
|
23
|
+
puts Pvcglue.cloud.swapfile_size.inspect
|
24
|
+
megs == Pvcglue.cloud.swapfile_size
|
25
|
+
end
|
26
|
+
|
27
|
+
apply do
|
28
|
+
sudo("swapoff -a")
|
29
|
+
sudo("rm /swapfile")
|
30
|
+
sudo("fallocate -l #{Pvcglue.cloud.swapfile_size}M /swapfile")
|
31
|
+
# sudo("dd if=/dev/zero of=/swapfile bs=1024 count=#{Pvcglue.cloud.swapfile_size}k")
|
32
|
+
sudo("sudo chown root:root /swapfile && sudo chmod 0600 /swapfile")
|
33
|
+
sudo("echo 10 | sudo tee /proc/sys/vm/swappiness")
|
34
|
+
sudo("echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf")
|
35
|
+
sudo("mkswap /swapfile")
|
36
|
+
sudo("swapon /swapfile")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
package 'swap-fstab' do
|
41
|
+
validate do
|
42
|
+
sudo("cat /etc/fstab") =~ /\/swapfile/
|
43
|
+
end
|
44
|
+
|
45
|
+
apply do
|
46
|
+
sudo(%Q[echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
package 'apt-get-upgrade' do
|
51
|
+
apply do
|
52
|
+
sudo "DEBIAN_FRONTEND=noninteractive apt-get update -y -qq"
|
53
|
+
sudo "DEBIAN_FRONTEND=noninteractive apt-get upgrade -y"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
=begin
|
57
|
+
# /etc/fstab: static file system information.
|
58
|
+
#
|
59
|
+
# Use 'blkid' to print the universally unique identifier for a
|
60
|
+
# device; this may be used with UUID= as a more robust way to name devices
|
61
|
+
# that works even if disks are added and removed. See fstab(5).
|
62
|
+
#
|
63
|
+
# <file system> <mount point> <type> <options> <dump> <pass>
|
64
|
+
proc /proc proc nodev,noexec,nosuid 0 0
|
65
|
+
# / was on /dev/vda1 during installation
|
66
|
+
UUID=b96601ba-7d51-4c5f-bfe2-63815708aabd / ext4 noatime,errors=remount-ro 0 1
|
67
|
+
=end
|
68
|
+
package 'reboot' do
|
69
|
+
apply do
|
70
|
+
sudo "reboot"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
package 'get-hostname' do
|
75
|
+
apply do
|
76
|
+
Pvcglue.cloud.current_hostname = run('hostname')
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
package 'hostname' do
|
82
|
+
depends_on 'get-hostname'
|
83
|
+
|
84
|
+
file({
|
85
|
+
:template => Pvcglue.template_file_name('hosts.erb'),
|
86
|
+
:destination => '/etc/hosts',
|
87
|
+
:create_dirs => false,
|
88
|
+
:permissions => 0644,
|
89
|
+
:user => 'root',
|
90
|
+
:group => 'root'
|
91
|
+
}) do
|
92
|
+
sudo('service hostname restart')
|
93
|
+
hostname_f = run 'hostname -f'
|
94
|
+
if Pvcglue.cloud.current_hostname != hostname_f
|
95
|
+
raise "Hostname mismatch: #{Pvcglue.cloud.current_hostname} != #{hostname_f}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
|