pupcap 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/pupcap/action.rb +35 -27
- data/lib/pupcap/action/cook.rb +44 -6
- data/lib/pupcap/action/cook/Capfile +18 -14
- data/lib/pupcap/action/prepare.rb +44 -18
- data/lib/pupcap/action/prepare/Capfile +16 -4
- data/lib/pupcap/action/prepare/ubuntu/precise.sh +42 -0
- data/lib/pupcap/action/ssh.rb +42 -0
- data/lib/pupcap/action/ssh/Capfile +9 -0
- data/lib/pupcap/cli.rb +13 -52
- data/lib/pupcap/command.rb +23 -0
- data/lib/pupcap/lsb_release.rb +19 -0
- data/lib/pupcap/version.rb +1 -1
- metadata +6 -2
- data/lib/pupcap/action/prepare/ubuntu/precise.rb +0 -48
data/lib/pupcap/action.rb
CHANGED
@@ -5,49 +5,57 @@ require 'capistrano/cli'
|
|
5
5
|
module Pupcap::Action
|
6
6
|
class Base
|
7
7
|
|
8
|
-
def
|
9
|
-
|
10
|
-
@options = options
|
11
|
-
set_default_vars
|
12
|
-
ENV["ROLES"] = @options[:role]
|
8
|
+
def parsed_options
|
9
|
+
{}
|
13
10
|
end
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
def check_puppetfile!
|
13
|
+
unless File.exists?(parsed_options[:file])
|
14
|
+
$stderr.puts "File #{parsed_options[:file]} does not exists"
|
15
|
+
exit 1
|
19
16
|
end
|
17
|
+
end
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
def check_role!
|
20
|
+
unless parsed_options[:role]
|
21
|
+
$stderr.puts "Please specify role"
|
22
|
+
exit 1
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
|
-
def
|
28
|
-
|
29
|
-
cap.
|
26
|
+
def create_cap_for(file)
|
27
|
+
cap = Capistrano::Configuration.new
|
28
|
+
cap.logger.level = Capistrano::Logger::DEBUG
|
29
|
+
set_cap_vars!(cap, file)
|
30
|
+
cap.load file
|
31
|
+
cap
|
32
|
+
end
|
33
|
+
|
34
|
+
def lib_root
|
35
|
+
File.dirname(File.expand_path __FILE__) + "/action"
|
36
|
+
end
|
37
|
+
|
38
|
+
def cap_load_and_run_task(cap, task)
|
39
|
+
cap.set :pupcap_options, parsed_options
|
40
|
+
cap.load "#{lib_root}/#{task}/Capfile"
|
41
|
+
cap.trigger(:load)
|
42
|
+
cap.find_and_execute_task(task, :before => :start, :after => :finish)
|
43
|
+
cap.trigger(:exit)
|
30
44
|
end
|
31
45
|
|
32
46
|
private
|
33
|
-
|
34
|
-
|
47
|
+
|
48
|
+
def set_cap_vars!(cap, file)
|
49
|
+
app = ENV['app'] || File.basename(File.dirname(file))
|
35
50
|
cap.set :application, app
|
36
|
-
cap.set :local_root, File.dirname(
|
51
|
+
cap.set :local_root, File.dirname(file)
|
37
52
|
cap.set :provision_key, "#{cap.local_root}/.keys/provision"
|
38
53
|
cap.set :provision_key_pub, "#{cap.local_root}/.keys/provision.pub"
|
54
|
+
cap.set :deploy_to, "/tmp/puppet"
|
39
55
|
cap.ssh_options[:keys] = cap.provision_key
|
40
56
|
cap.ssh_options[:forward_agent] = true
|
41
57
|
cap.default_run_options[:pty] = true
|
42
|
-
cap
|
43
|
-
end
|
44
|
-
|
45
|
-
def cap
|
46
|
-
unless @cap
|
47
|
-
@cap = Capistrano::Configuration.new
|
48
|
-
@cap.logger.level = Capistrano::Logger::DEBUG
|
49
|
-
end
|
50
|
-
@cap
|
58
|
+
cap
|
51
59
|
end
|
52
60
|
end
|
53
61
|
end
|
data/lib/pupcap/action/cook.rb
CHANGED
@@ -1,14 +1,52 @@
|
|
1
1
|
require 'pupcap/action'
|
2
|
+
require 'pupcap/command'
|
2
3
|
|
3
4
|
class Pupcap::Action::Cook < Pupcap::Action::Base
|
5
|
+
def initialize
|
6
|
+
check_role!
|
7
|
+
check_puppetfile!
|
8
|
+
ENV["ROLES"] = parsed_options[:role]
|
9
|
+
end
|
10
|
+
|
4
11
|
def start
|
5
|
-
cap
|
6
|
-
cap
|
7
|
-
|
8
|
-
|
12
|
+
cap = create_cap_for(parsed_options[:file])
|
13
|
+
cap_load_and_run_task(cap, "cook")
|
14
|
+
end
|
15
|
+
|
16
|
+
def parsed_options
|
17
|
+
unless @parsed_options
|
18
|
+
options = default_options.dup
|
19
|
+
OptionParser.new do |opts|
|
20
|
+
opts.banner = "Usage: #{File.basename($0)} [options] <role> cook"
|
21
|
+
|
22
|
+
opts.on("-f", "--file FILE", "A recipe file to load") do |file|
|
23
|
+
options[:file] = File.expand_path(file)
|
24
|
+
end
|
25
|
+
|
26
|
+
opts.on("-h", "--help", "Displays this help info") do
|
27
|
+
puts opts
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
|
31
|
+
opts.on("-d", "--debug", "Debug output") do
|
32
|
+
options[:debug] = true
|
33
|
+
end
|
34
|
+
|
35
|
+
opts.on("-n", "--noop", "Noop") do |file|
|
36
|
+
options[:noop] = true
|
37
|
+
end
|
38
|
+
end.parse!
|
39
|
+
options[:role] = ARGV.first
|
40
|
+
@parsed_options = options
|
41
|
+
end
|
42
|
+
@parsed_options
|
9
43
|
end
|
10
44
|
|
11
|
-
def
|
12
|
-
|
45
|
+
def default_options
|
46
|
+
{
|
47
|
+
:file => File.expand_path("Puppetfile"),
|
48
|
+
:debug => false,
|
49
|
+
:noop => false
|
50
|
+
}
|
13
51
|
end
|
14
52
|
end
|
@@ -1,26 +1,30 @@
|
|
1
1
|
namespace :cook do
|
2
2
|
task :default do
|
3
|
-
|
3
|
+
rsync
|
4
|
+
apply
|
5
|
+
cleanup
|
6
|
+
end
|
7
|
+
|
8
|
+
task :rsync do
|
4
9
|
find_servers.each do |server|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
10
|
+
port = Pupcap::Command.server_port(self, server)
|
11
|
+
host = Pupcap::Command.server_host(self, server)
|
12
|
+
ssh_cmd = "-e \"ssh -p #{port} -i #{provision_key}\""
|
13
|
+
rsync_options = "-p --chmod=o+r,g+r -az"
|
14
|
+
cmd = "rsync #{rsync_options} #{ssh_cmd} #{local_root}/ #{host}:#{deploy_to}"
|
9
15
|
logger.important(cmd)
|
10
16
|
system(cmd)
|
11
17
|
end
|
12
|
-
modules = "--modulepath=#{remote_path}/modules:#{remote_path}/manifests"
|
13
|
-
nook = ENV["try"] ? "--noop" : ""
|
14
|
-
debug = ENV["debug"] ? "--debug" : ""
|
15
|
-
sudo("/usr/local/bin/puppet apply --detailed-exitcodes #{nook} #{debug} #{modules} #{remote_path}/manifests/#{ENV["ROLES"]}.pp || true")
|
16
18
|
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
task :apply do
|
21
|
+
modules = "--modulepath=#{deploy_to}/modules:#{deploy_to}/manifests"
|
22
|
+
nook = pupcap_options[:noop] ? "--noop" : ""
|
23
|
+
debug = pupcap_options[:debug] ? "--debug" : ""
|
24
|
+
sudo("/usr/local/bin/puppet apply --detailed-exitcodes #{nook} #{debug} #{modules} #{deploy_to}/manifests/#{ENV["ROLES"]}.pp || true")
|
20
25
|
end
|
21
26
|
|
22
|
-
|
23
|
-
|
24
|
-
u ? "#{u}@#{server.host}" : server.host
|
27
|
+
task :cleanup do
|
28
|
+
run("rm -rf #{deploy_to}")
|
25
29
|
end
|
26
30
|
end
|
@@ -1,28 +1,54 @@
|
|
1
1
|
require 'pupcap/action'
|
2
|
+
require 'pupcap/lsb_release'
|
2
3
|
|
3
4
|
class Pupcap::Action::Prepare < Pupcap::Action::Base
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
prepare_dist
|
9
|
-
cap.trigger(:exit)
|
5
|
+
def initialize
|
6
|
+
check_role!
|
7
|
+
check_puppetfile!
|
8
|
+
ENV["ROLES"] = parsed_options[:role]
|
10
9
|
end
|
11
10
|
|
12
|
-
def
|
13
|
-
|
11
|
+
def start
|
12
|
+
cap = create_cap_for(parsed_options[:file])
|
13
|
+
lsb = Pupcap::LsbRelease.new(cap)
|
14
|
+
prepare_script = "#{lib_root}/prepare/#{lsb.name.downcase}/#{lsb.codename.downcase}.sh"
|
15
|
+
if File.exists?(prepare_script)
|
16
|
+
cap.set :pupcap_prepare_script, prepare_script
|
17
|
+
end
|
18
|
+
cap_load_and_run_task(cap, "prepare")
|
14
19
|
end
|
15
20
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
def parsed_options
|
22
|
+
unless @parsed_options
|
23
|
+
options = default_options.dup
|
24
|
+
OptionParser.new do |opts|
|
25
|
+
opts.banner = "Usage: #{File.basename($0)} [options] <role> prepare"
|
26
|
+
|
27
|
+
opts.on("-h", "--help", "Displays this help info") do
|
28
|
+
puts opts
|
29
|
+
exit 0
|
30
|
+
end
|
31
|
+
|
32
|
+
opts.on("-F", "--force", "Force prepare") do
|
33
|
+
options[:force] = true
|
34
|
+
end
|
35
|
+
|
36
|
+
opts.on("-f", "--file FILE", "A recipe file to load") do |file|
|
37
|
+
options[:file] = File.expand_path(file)
|
38
|
+
end
|
39
|
+
end.parse!
|
40
|
+
options[:role] = ARGV.first
|
41
|
+
@parsed_options = options
|
26
42
|
end
|
43
|
+
@parsed_options
|
44
|
+
end
|
45
|
+
|
46
|
+
def default_options
|
47
|
+
{
|
48
|
+
:file => File.expand_path("Puppetfile"),
|
49
|
+
:force => false,
|
50
|
+
:upgrade => false
|
51
|
+
}
|
27
52
|
end
|
28
53
|
end
|
54
|
+
|
@@ -2,6 +2,7 @@ namespace :prepare do
|
|
2
2
|
task :default do
|
3
3
|
generate_keys
|
4
4
|
ssh_copy_id
|
5
|
+
run_script
|
5
6
|
end
|
6
7
|
|
7
8
|
task :ssh_copy_id do
|
@@ -15,10 +16,21 @@ namespace :prepare do
|
|
15
16
|
task :generate_keys do
|
16
17
|
unless File.exists?(provision_key)
|
17
18
|
logger.important("Generate keys")
|
18
|
-
Pupcap::
|
19
|
-
Pupcap::
|
20
|
-
Pupcap::
|
21
|
-
Pupcap::
|
19
|
+
Pupcap::Command.ensure_local_dir("#{local_root}/.keys", "0700")
|
20
|
+
Pupcap::Command.run_local("ssh-keygen -q -b 1024 -t rsa -C \"#{application} provision key\" -f #{provision_key}")
|
21
|
+
Pupcap::Command.run_local("chmod 0600 #{provision_key}")
|
22
|
+
Pupcap::Command.run_local("chmod 0600 #{provision_key_pub}")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
task :run_script do
|
27
|
+
if exists?(:pupcap_prepare_script)
|
28
|
+
remote_script_name = "/tmp/pupcap_prepare.#{Time.now.to_i}.sh"
|
29
|
+
upload(pupcap_prepare_script, remote_script_name)
|
30
|
+
run("chmod 0755 #{remote_script_name}")
|
31
|
+
force = pupcap_options[:force] ? "1" : "0"
|
32
|
+
sudo("env PUPCAP_FORCE=#{force} #{remote_script_name}")
|
33
|
+
run("rm #{remote_script_name}")
|
22
34
|
end
|
23
35
|
end
|
24
36
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
set -e
|
2
|
+
|
3
|
+
test -e /root/.pupcap_prepare_ok -a ${PUPCAP_FORCE} = "0" && exit 0
|
4
|
+
|
5
|
+
if [ ! -e /root/.pupcap_prepare_locale_ok -o ${PUPCAP_FORCE} = "1" ]; then
|
6
|
+
locale-gen && update-locale LANG=en_US.UTF8 && touch /root/pupcap_prepare_locale_ok
|
7
|
+
fi
|
8
|
+
|
9
|
+
SOURCES_LIST=/etc/apt/sources.list
|
10
|
+
|
11
|
+
SOURCES_LIST_MD5=`md5sum ${SOURCES_LIST} | awk '{ print $1 }'`
|
12
|
+
|
13
|
+
if [ "$SOURCES_LIST_MD5" != "0af83b87b34bcdebf8a81a7ccc523e26" -o ${PUPCAP_FORCE} = "1" ]; then
|
14
|
+
|
15
|
+
cat <<EOF > ${SOURCES_LIST}
|
16
|
+
#############################################################
|
17
|
+
################### OFFICIAL UBUNTU REPOS ###################
|
18
|
+
#############################################################
|
19
|
+
|
20
|
+
###### Ubuntu Main Repos
|
21
|
+
deb mirror://mirrors.ubuntu.com/mirrors.txt precise main
|
22
|
+
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise main
|
23
|
+
|
24
|
+
###### Ubuntu Update Repos
|
25
|
+
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main
|
26
|
+
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main
|
27
|
+
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise-security main
|
28
|
+
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main
|
29
|
+
EOF
|
30
|
+
echo >> ${SOURCES_LIST} # new line
|
31
|
+
|
32
|
+
chown root:root ${SOURCES_LIST}
|
33
|
+
chmod 0644 ${SOURCES_LIST}
|
34
|
+
fi
|
35
|
+
|
36
|
+
apt-get -qy update > /dev/null
|
37
|
+
apt-get install -qy rsync wget rubygems vim git-core build-essential > /dev/null
|
38
|
+
apt-get -qy clean
|
39
|
+
|
40
|
+
/usr/bin/gem install -q --no-ri --no-rdoc --version '~> 2.7.1' puppet
|
41
|
+
touch /root/.pupcap_prepare_ok
|
42
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'pupcap/action'
|
2
|
+
require 'pupcap/command'
|
3
|
+
|
4
|
+
class Pupcap::Action::Ssh < Pupcap::Action::Base
|
5
|
+
def initialize
|
6
|
+
check_role!
|
7
|
+
check_puppetfile!
|
8
|
+
ENV["ROLES"] = parsed_options[:role]
|
9
|
+
end
|
10
|
+
|
11
|
+
def start
|
12
|
+
cap = create_cap_for(parsed_options[:file])
|
13
|
+
cap_load_and_run_task(cap, "ssh")
|
14
|
+
end
|
15
|
+
|
16
|
+
def parsed_options
|
17
|
+
unless @parsed_options
|
18
|
+
options = default_options.dup
|
19
|
+
OptionParser.new do |opts|
|
20
|
+
opts.banner = "Usage: #{File.basename($0)} [options] <role> ssh"
|
21
|
+
|
22
|
+
opts.on("-f", "--file FILE", "A recipe file to load") do |file|
|
23
|
+
options[:file] = File.expand_path(file)
|
24
|
+
end
|
25
|
+
|
26
|
+
opts.on("-h", "--help", "Displays this help info") do
|
27
|
+
puts opts
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
end.parse!
|
31
|
+
options[:role] = ARGV.first
|
32
|
+
@parsed_options = options
|
33
|
+
end
|
34
|
+
@parsed_options
|
35
|
+
end
|
36
|
+
|
37
|
+
def default_options
|
38
|
+
{
|
39
|
+
:file => File.expand_path("Puppetfile"),
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
namespace :ssh do
|
2
|
+
task :default do
|
3
|
+
server = find_servers_for_task(current_task).first
|
4
|
+
host = Pupcap::Command.server_host(self, server)
|
5
|
+
port = Pupcap::Command.server_port(self, server)
|
6
|
+
exec "ssh #{host} -t -p #{port} -i #{ssh_options[:keys]} '${SHELL} -l'"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
data/lib/pupcap/cli.rb
CHANGED
@@ -4,60 +4,21 @@ require 'pupcap'
|
|
4
4
|
class Pupcap::CLI
|
5
5
|
class << self
|
6
6
|
def start
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
inst.start
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
def get_action
|
16
|
-
options_parser
|
17
|
-
|
18
|
-
action = ARGV[1]
|
19
|
-
role = ARGV[0]
|
20
|
-
if !action || !valid_actions.include?(action)
|
21
|
-
$stderr.puts "Please specify a action to run: #{valid_actions.join("|")}"
|
22
|
-
exit 1
|
23
|
-
end
|
24
|
-
|
25
|
-
if !role
|
26
|
-
$stderr.puts "Please specify a role to run"
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
|
30
|
-
unless File.exists?(options[:file])
|
31
|
-
$stderr.puts "A file #{options[:file]} does not exists"
|
32
|
-
exit 1
|
33
|
-
end
|
34
|
-
|
35
|
-
options.merge!(:action => action, :role => role)
|
36
|
-
end
|
37
|
-
|
38
|
-
def valid_actions
|
39
|
-
@valid_actions ||= %w{ prepare cook }
|
40
|
-
end
|
41
|
-
|
42
|
-
def options
|
43
|
-
@options ||= {
|
44
|
-
:file => File.expand_path("Puppetfile")
|
45
|
-
}
|
7
|
+
action = ARGV.last
|
8
|
+
if !action || !valid_actions.include?(action)
|
9
|
+
$stderr.puts "Please specify a action to run: #{valid_actions.join("|")}"
|
10
|
+
exit 1
|
46
11
|
end
|
47
12
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
exit 0
|
55
|
-
end
|
13
|
+
ARGV.pop
|
14
|
+
require "pupcap/action/#{action}"
|
15
|
+
klass = Pupcap::Action.const_get(action.capitalize)
|
16
|
+
inst = klass.new
|
17
|
+
inst.start
|
18
|
+
end
|
56
19
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end.parse!
|
61
|
-
end
|
20
|
+
def valid_actions
|
21
|
+
%w{ prepare cook ssh }
|
22
|
+
end
|
62
23
|
end
|
63
24
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'pupcap'
|
2
|
+
|
3
|
+
class Pupcap::Command
|
4
|
+
class << self
|
5
|
+
def ensure_local_dir(dir, mode = "0755")
|
6
|
+
run_local("mkdir -p #{dir} && chmod #{mode} #{dir}")
|
7
|
+
end
|
8
|
+
|
9
|
+
def run_local(cmd)
|
10
|
+
system cmd
|
11
|
+
fail "#{cmd} fail" if $?.to_i != 0
|
12
|
+
end
|
13
|
+
|
14
|
+
def server_port(cap, server)
|
15
|
+
server.port || cap.ssh_options[:port] || 22
|
16
|
+
end
|
17
|
+
|
18
|
+
def server_host(cap, server)
|
19
|
+
u = server.user || cap.fetch(:user)
|
20
|
+
u ? "#{u}@#{server.host}" : server.host
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Pupcap::LsbRelease
|
2
|
+
def initialize(cap)
|
3
|
+
@cap = cap
|
4
|
+
end
|
5
|
+
|
6
|
+
def name
|
7
|
+
@name ||= get("i")
|
8
|
+
end
|
9
|
+
|
10
|
+
def codename
|
11
|
+
@release ||= get("c")
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def get(code)
|
16
|
+
code = @cap.capture("lsb_release -#{code}")
|
17
|
+
code.split(":")[1].to_s.strip
|
18
|
+
end
|
19
|
+
end
|
data/lib/pupcap/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pupcap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -46,8 +46,12 @@ files:
|
|
46
46
|
- lib/pupcap/action/cook/Capfile
|
47
47
|
- lib/pupcap/action/prepare.rb
|
48
48
|
- lib/pupcap/action/prepare/Capfile
|
49
|
-
- lib/pupcap/action/prepare/ubuntu/precise.
|
49
|
+
- lib/pupcap/action/prepare/ubuntu/precise.sh
|
50
|
+
- lib/pupcap/action/ssh.rb
|
51
|
+
- lib/pupcap/action/ssh/Capfile
|
50
52
|
- lib/pupcap/cli.rb
|
53
|
+
- lib/pupcap/command.rb
|
54
|
+
- lib/pupcap/lsb_release.rb
|
51
55
|
- lib/pupcap/version.rb
|
52
56
|
- pupcap.gemspec
|
53
57
|
homepage: http://github.com/dima-exe/pupcap
|
@@ -1,48 +0,0 @@
|
|
1
|
-
namespace :prepare do
|
2
|
-
namespace :ubuntu do
|
3
|
-
task :precise do
|
4
|
-
run("#{sudo} [ ! -f /root/.prepare_locale_ok ] && #{sudo} locale-gen && #{sudo} update-locale LANG=en_US.UTF8 && #{sudo} touch /root/.prepare_locale_ok || true")
|
5
|
-
|
6
|
-
tmp_list = "/tmp/sources.list.#{Time.now.to_i}"
|
7
|
-
sources_list = "/etc/apt/sources.list"
|
8
|
-
|
9
|
-
dist_upgraded = false
|
10
|
-
current_list = capture("md5sum #{sources_list}").split(" ")[0].to_s.strip
|
11
|
-
if current_list != "1f722c129d80782e4fa323a6a70dee59"
|
12
|
-
sudo("cp #{sources_list} #{sources_list}.back#{Time.now.to_i}")
|
13
|
-
put(precise_sources_list, tmp_list)
|
14
|
-
sudo("cp #{tmp_list} #{sources_list}")
|
15
|
-
sudo("chown root:root #{sources_list}")
|
16
|
-
sudo("chmod 0644 #{sources_list}")
|
17
|
-
run("rm -f #{tmp_list}")
|
18
|
-
sudo("apt-get -qy update > /dev/null")
|
19
|
-
if ENV['upgrade']
|
20
|
-
run("echo \"grub-pc hold\" | #{sudo} dpkg --set-selections")
|
21
|
-
sudo("apt-get -qy upgrade")
|
22
|
-
run("echo \"grub-pc install\" | #{sudo} dpkg --set-selections")
|
23
|
-
dist_upgraded = true
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
sudo("apt-get install -qy rsync wget rubygems vim git-core build-essential > /dev/null")
|
28
|
-
sudo("/usr/bin/gem install -q --no-ri --no-rdoc --version '~> 2.7.1' puppet")
|
29
|
-
sudo("reboot") if dist_upgraded
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
UBUNTU_PRECISE_SOURCES_LIST = <<-CODE
|
35
|
-
#############################################################
|
36
|
-
################### OFFICIAL UBUNTU REPOS ###################
|
37
|
-
#############################################################
|
38
|
-
|
39
|
-
###### Ubuntu Main Repos
|
40
|
-
deb mirror://mirrors.ubuntu.com/mirrors.txt precise main
|
41
|
-
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise main
|
42
|
-
|
43
|
-
###### Ubuntu Update Repos
|
44
|
-
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main
|
45
|
-
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main
|
46
|
-
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise-security main
|
47
|
-
deb-src mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main
|
48
|
-
CODE
|