pvcglue 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|