gepetto 0.0.10 → 0.0.11
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/Manifest.txt +3 -2
- data/app_generators/gepetto/gepetto_generator.rb +1 -0
- data/app_generators/gepetto/templates/config/qemu-ifup +11 -0
- data/gepetto.gemspec +3 -3
- data/lib/gepetto.rb +1 -1
- data/tasks/host.pp +5 -18
- data/tasks/sandbox.pp +6 -1
- data/tasks/sandbox.rake +41 -32
- data/tasks/tmp.rake +5 -1
- metadata +5 -4
data/Manifest.txt
CHANGED
@@ -7,13 +7,14 @@ app_generators/gepetto/gepetto_generator.rb
|
|
7
7
|
app_generators/gepetto/templates/Rakefile
|
8
8
|
app_generators/gepetto/templates/config/fileserver.conf
|
9
9
|
app_generators/gepetto/templates/config/puppet.conf
|
10
|
+
app_generators/gepetto/templates/config/qemu-ifup
|
10
11
|
app_generators/gepetto/templates/manifests/classes/empty.pp
|
11
12
|
app_generators/gepetto/templates/manifests/defaults.pp
|
12
13
|
app_generators/gepetto/templates/manifests/nodes.pp
|
14
|
+
app_generators/gepetto/templates/manifests/sandbox-sample.pp
|
15
|
+
app_generators/gepetto/templates/manifests/sandbox.pp
|
13
16
|
app_generators/gepetto/templates/manifests/site.pp
|
14
17
|
app_generators/gepetto/templates/manifests/templates.pp
|
15
|
-
app_generators/gepetto/templates/manifests/sandbox.pp
|
16
|
-
app_generators/gepetto/templates/manifests/sandbox-sample.pp
|
17
18
|
app_generators/gepetto/templates/script/module
|
18
19
|
app_generators/gepetto/templates/script/puppetca
|
19
20
|
app_generators/gepetto/templates/script/puppetmasterd
|
@@ -29,6 +29,7 @@ class GepettoGenerator < RubiGen::Base
|
|
29
29
|
m.template_copy_each %w( empty.pp ), 'manifests/classes'
|
30
30
|
|
31
31
|
m.template_copy_each %w( puppet.conf fileserver.conf ), 'config'
|
32
|
+
m.template_copy_each %w( qemu-ifup ), 'config', script_options
|
32
33
|
|
33
34
|
m.template_copy_each %w( puppetmasterd puppetca puppetrun module ), 'script', script_options
|
34
35
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/bin/sh -x
|
2
|
+
|
3
|
+
if [ "$USER" != "root" -o "$1" != "sudo" ]; then
|
4
|
+
exec sudo -p "Password for $0:" $0 sudo $1
|
5
|
+
fi
|
6
|
+
|
7
|
+
[ "$1" = "sudo" ] && shift
|
8
|
+
|
9
|
+
/sbin/ifconfig $1 172.20.0.1
|
10
|
+
iptables -t nat -A POSTROUTING -s 172.20.0.1/24 -o eth0 -j MASQUERADE
|
11
|
+
sysctl -w net.ipv4.ip_forward=1
|
data/gepetto.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{gepetto}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.11"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Alban Peignier"]
|
9
|
-
s.date = %q{2010-02-
|
9
|
+
s.date = %q{2010-02-05}
|
10
10
|
s.default_executable = %q{gepetto}
|
11
11
|
s.description = %q{A helper suite for Puppet projects to create, manage and help daily development
|
12
12
|
|
@@ -14,7 +14,7 @@ More information about Puppet: http://reductivelabs.com/trac/puppet/}
|
|
14
14
|
s.email = ["alban.peignier@free.fr"]
|
15
15
|
s.executables = ["gepetto"]
|
16
16
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
|
17
|
-
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "app_generators/gepetto/USAGE", "app_generators/gepetto/gepetto_generator.rb", "app_generators/gepetto/templates/Rakefile", "app_generators/gepetto/templates/config/fileserver.conf", "app_generators/gepetto/templates/config/puppet.conf", "app_generators/gepetto/templates/manifests/classes/empty.pp", "app_generators/gepetto/templates/manifests/defaults.pp", "app_generators/gepetto/templates/manifests/nodes.pp", "app_generators/gepetto/templates/manifests/
|
17
|
+
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "app_generators/gepetto/USAGE", "app_generators/gepetto/gepetto_generator.rb", "app_generators/gepetto/templates/Rakefile", "app_generators/gepetto/templates/config/fileserver.conf", "app_generators/gepetto/templates/config/puppet.conf", "app_generators/gepetto/templates/config/qemu-ifup", "app_generators/gepetto/templates/manifests/classes/empty.pp", "app_generators/gepetto/templates/manifests/defaults.pp", "app_generators/gepetto/templates/manifests/nodes.pp", "app_generators/gepetto/templates/manifests/sandbox-sample.pp", "app_generators/gepetto/templates/manifests/sandbox.pp", "app_generators/gepetto/templates/manifests/site.pp", "app_generators/gepetto/templates/manifests/templates.pp", "app_generators/gepetto/templates/script/module", "app_generators/gepetto/templates/script/puppetca", "app_generators/gepetto/templates/script/puppetmasterd", "app_generators/gepetto/templates/script/puppetrun", "bin/gepetto", "gepetto.gemspec", "lib/gepetto.rb", "lib/gepetto/tasks.rb", "puppet_generators/module/USAGE", "puppet_generators/module/module_generator.rb", "puppet_generators/module/templates/README", "puppet_generators/module/templates/manifests/init.pp", "script/destroy", "script/generate", "tasks/host.pp", "tasks/log.rake", "tasks/puppet.rake", "tasks/sandbox.pp", "tasks/sandbox.rake", "tasks/tmp.rake", "tasks/utils.rake"]
|
18
18
|
s.homepage = %q{http://github.com/albanpeignier/gepetto/}
|
19
19
|
s.rdoc_options = ["--main", "README.rdoc"]
|
20
20
|
s.require_paths = ["lib"]
|
data/lib/gepetto.rb
CHANGED
data/tasks/host.pp
CHANGED
@@ -58,23 +58,10 @@ file { "/dev/net/tun":
|
|
58
58
|
mode => 666
|
59
59
|
}
|
60
60
|
|
61
|
-
|
61
|
+
package { debootstrap: }
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
if [ "$USER" != "root" -o "$1" != "sudo" ]; then
|
68
|
-
exec sudo -p "Password for $0:" $0 sudo $1
|
69
|
-
fi
|
70
|
-
|
71
|
-
[ "$1" = "sudo" ] && shift
|
72
|
-
|
73
|
-
/sbin/ifconfig $1 172.20.0.1
|
74
|
-
iptables -t nat -A POSTROUTING -s 172.20.0.1/24 -o eth0 -j MASQUERADE
|
75
|
-
sysctl -w net.ipv4.ip_forward=1
|
76
|
-
',
|
77
|
-
require => Package[qemu]
|
63
|
+
if $operatingsystem == Debian {
|
64
|
+
package { [syslinux-common, extlinux]: }
|
65
|
+
} else {
|
66
|
+
package { syslinux: }
|
78
67
|
}
|
79
|
-
|
80
|
-
package { [debootstrap, grub]: }
|
data/tasks/sandbox.pp
CHANGED
@@ -24,10 +24,14 @@ exec { "inittab-no-tty-gettys":
|
|
24
24
|
onlyif => "grep 'getty 38400 tty[23456]' /etc/inittab"
|
25
25
|
}
|
26
26
|
|
27
|
-
file { "/etc/hostname":
|
27
|
+
file { ["/etc/hostname", "/etc/mailname"]:
|
28
28
|
content => "sandbox"
|
29
29
|
}
|
30
30
|
|
31
|
+
file { "/etc/default/locale":
|
32
|
+
content => "LANG=en_US.UTF-8"
|
33
|
+
}
|
34
|
+
|
31
35
|
# an host object doesn't find a provider
|
32
36
|
file { "/etc/hosts":
|
33
37
|
content => "127.0.0.1 localhost
|
@@ -88,6 +92,7 @@ pluginsync=false
|
|
88
92
|
color=false
|
89
93
|
|
90
94
|
[puppetd]
|
95
|
+
certname=sandbox
|
91
96
|
report=true
|
92
97
|
# run puppetd .. every day
|
93
98
|
runinterval = 86400
|
data/tasks/sandbox.rake
CHANGED
@@ -95,7 +95,7 @@ class Sandbox < Rake::TaskLib
|
|
95
95
|
task :image do
|
96
96
|
sh "qemu-img create -f raw #{disk_image} #{disk_size}"
|
97
97
|
# create the partition table
|
98
|
-
sh "echo '63
|
98
|
+
sh "echo '63,,L,*' | /sbin/sfdisk --no-reread -uS -H16 -S63 #{disk_image}"
|
99
99
|
end
|
100
100
|
|
101
101
|
task :fs do
|
@@ -104,9 +104,10 @@ class Sandbox < Rake::TaskLib
|
|
104
104
|
sudo "losetup -o #{fs_offset} /dev/loop0 #{disk_image}"
|
105
105
|
|
106
106
|
# because '/sbin/sfdisk -s /dev/loop0' returns a wrong value :
|
107
|
-
|
107
|
+
linux_partition_info = `/sbin/sfdisk -l #{disk_image}`.scan(%r{#{disk_image}.*Linux}).first
|
108
|
+
extract_fs_block_size = linux_partition_info.split[5].to_i
|
108
109
|
|
109
|
-
sudo "/sbin/mke2fs -jqF /dev/loop0
|
110
|
+
sudo "/sbin/mke2fs -jqF /dev/loop0 #{extract_fs_block_size}"
|
110
111
|
ensure
|
111
112
|
sudo "losetup -d /dev/loop0"
|
112
113
|
end
|
@@ -137,35 +138,39 @@ class Sandbox < Rake::TaskLib
|
|
137
138
|
end
|
138
139
|
end
|
139
140
|
|
140
|
-
task :
|
141
|
+
task :syslinux do
|
142
|
+
extlinux_dir = "#{mount_point}/boot/extlinux"
|
143
|
+
|
141
144
|
mount do
|
142
|
-
|
145
|
+
sudo "mkdir -p #{extlinux_dir}" unless File.exists?(extlinux_dir)
|
146
|
+
Tempfile.open('extlinux_conf') do |f|
|
147
|
+
f.puts "DEFAULT linux"
|
148
|
+
f.puts "LABEL linux"
|
149
|
+
f.puts "SAY Now booting sandbox from syslinux ..."
|
150
|
+
f.puts "KERNEL /vmlinuz"
|
151
|
+
f.puts "APPEND ro root=/dev/hda1 initrd=/initrd.img"
|
152
|
+
f.close
|
153
|
+
sudo "cp #{f.path} #{extlinux_dir}/extlinux.conf"
|
154
|
+
end
|
143
155
|
|
144
|
-
|
145
|
-
|
156
|
+
sudo "extlinux --install -H16 -S63 #{mount_point}/boot/extlinux"
|
157
|
+
end
|
158
|
+
sudo "dd if=/usr/lib/syslinux/mbr.bin of=#{disk_image} conv=notrunc"
|
159
|
+
end
|
146
160
|
|
147
|
-
|
148
|
-
|
161
|
+
task :ssh do
|
162
|
+
ssh_pubkey = Dir["#{ENV['HOME']}/.ssh/id_*pub"].first
|
163
|
+
ssh_dir = "#{mount_point}/root/.ssh"
|
149
164
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
'title Linux',
|
154
|
-
'root (hd0,0)',
|
155
|
-
'kernel /vmlinuz root=/dev/hda1 ro',
|
156
|
-
'initrd /initrd.img'].join("\n"))
|
157
|
-
f.close
|
158
|
-
sudo "cp #{f.path} #{grub_dir}/menu.lst"
|
159
|
-
end
|
165
|
+
mount do
|
166
|
+
sudo "mkdir #{ssh_dir}"
|
167
|
+
sudo "cp #{ssh_pubkey} #{ssh_dir}/authorized_keys"
|
160
168
|
end
|
169
|
+
end
|
161
170
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
"setup (hd0)",
|
166
|
-
"quit"].join("\n"))
|
167
|
-
f.close
|
168
|
-
sudo "grub --device-map=/dev/null < #{f.path}"
|
171
|
+
task :update do
|
172
|
+
mount do
|
173
|
+
chroot_sh "apt-get update"
|
169
174
|
end
|
170
175
|
end
|
171
176
|
|
@@ -197,7 +202,7 @@ class Sandbox < Rake::TaskLib
|
|
197
202
|
end
|
198
203
|
|
199
204
|
desc "Create a fresh image for sandbox"
|
200
|
-
task :create => [ 'clean', 'create:image', 'create:fs', 'create:system', 'create:kernel', 'create:
|
205
|
+
task :create => [ 'clean', 'create:image', 'create:fs', 'create:system', 'create:update', 'create:kernel', 'create:syslinux', 'create:config', 'create:ssh', 'create:snapshot' ]
|
201
206
|
|
202
207
|
desc "Destroy sandbox images"
|
203
208
|
task :destroy => 'clean' do
|
@@ -239,7 +244,7 @@ class Sandbox < Rake::TaskLib
|
|
239
244
|
task :clean => 'puppet:clean' do
|
240
245
|
# clean known_hosts
|
241
246
|
known_hosts_file="#{ENV['HOME']}/.ssh/known_hosts"
|
242
|
-
sh "sed -i '/#{hostname}
|
247
|
+
sh "sed -i -e '/#{hostname} / d' -e '/#{ip_address} / d' #{known_hosts_file}" if File.exists?(known_hosts_file)
|
243
248
|
end
|
244
249
|
|
245
250
|
task :status do
|
@@ -274,8 +279,9 @@ class Sandbox < Rake::TaskLib
|
|
274
279
|
:snapshot => ENV['SNAPSHOT'],
|
275
280
|
:hda => disk_image,
|
276
281
|
:nographic => false,
|
282
|
+
:"enable-kvm" => true,
|
277
283
|
:m => memory_size,
|
278
|
-
:net => ["nic", "tap,ifname=#{tap_device}"]
|
284
|
+
:net => ["nic", "tap,ifname=#{tap_device},script=config/qemu-ifup"]
|
279
285
|
}.update(options)
|
280
286
|
|
281
287
|
if options[:daemonize]
|
@@ -394,8 +400,9 @@ class DebianBoostraper
|
|
394
400
|
def initialize(&block)
|
395
401
|
default_attributes
|
396
402
|
|
397
|
-
|
398
|
-
@
|
403
|
+
# extlinux is provided by syslinux in lenny
|
404
|
+
@include = %w{puppet ssh udev resolvconf syslinux debian-archive-keyring}
|
405
|
+
@exclude = %w{at exim mailx libstdc++2.10-glibc2.2 mbr setserial fdutils info ipchains iptables lilo pcmcia-cs ppp pppoe pppoeconf pppconfig telnet exim4 exim4-base exim4-config exim4-daemon-light pciutils modconf tasksel console-common console-tools console-data base-config man-db manpages}
|
399
406
|
|
400
407
|
yield self if block_given?
|
401
408
|
end
|
@@ -404,6 +411,7 @@ class DebianBoostraper
|
|
404
411
|
@version = 'lenny'
|
405
412
|
@mirror = 'http://ftp.debian.org/debian'
|
406
413
|
@architecture = Sandbox.default_architecture
|
414
|
+
@components = %w{main contrib non-free}
|
407
415
|
end
|
408
416
|
|
409
417
|
def bootstrap(root)
|
@@ -415,7 +423,8 @@ class DebianBoostraper
|
|
415
423
|
{
|
416
424
|
:arch => architecture,
|
417
425
|
:exclude => @exclude,
|
418
|
-
:include => @include
|
426
|
+
:include => @include,
|
427
|
+
:components => @components
|
419
428
|
}
|
420
429
|
end
|
421
430
|
|
data/tasks/tmp.rake
CHANGED
@@ -16,7 +16,11 @@ namespace :tmp do
|
|
16
16
|
namespace name do
|
17
17
|
desc "Clears all files in #{tmp_directory}"
|
18
18
|
task :clear do
|
19
|
-
|
19
|
+
files = Dir["#{tmp_directory}/**/*"].reject { |f| File.directory?(f) }
|
20
|
+
unless files.empty?
|
21
|
+
puts "* remove #{files.size} files in #{tmp_directory}"
|
22
|
+
FileUtils.rm files
|
23
|
+
end
|
20
24
|
end
|
21
25
|
end
|
22
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gepetto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alban Peignier
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-05 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -85,13 +85,14 @@ files:
|
|
85
85
|
- app_generators/gepetto/templates/Rakefile
|
86
86
|
- app_generators/gepetto/templates/config/fileserver.conf
|
87
87
|
- app_generators/gepetto/templates/config/puppet.conf
|
88
|
+
- app_generators/gepetto/templates/config/qemu-ifup
|
88
89
|
- app_generators/gepetto/templates/manifests/classes/empty.pp
|
89
90
|
- app_generators/gepetto/templates/manifests/defaults.pp
|
90
91
|
- app_generators/gepetto/templates/manifests/nodes.pp
|
92
|
+
- app_generators/gepetto/templates/manifests/sandbox-sample.pp
|
93
|
+
- app_generators/gepetto/templates/manifests/sandbox.pp
|
91
94
|
- app_generators/gepetto/templates/manifests/site.pp
|
92
95
|
- app_generators/gepetto/templates/manifests/templates.pp
|
93
|
-
- app_generators/gepetto/templates/manifests/sandbox.pp
|
94
|
-
- app_generators/gepetto/templates/manifests/sandbox-sample.pp
|
95
96
|
- app_generators/gepetto/templates/script/module
|
96
97
|
- app_generators/gepetto/templates/script/puppetca
|
97
98
|
- app_generators/gepetto/templates/script/puppetmasterd
|