kameleon-builder 2.0.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. data/.editorconfig +23 -0
  2. data/.env +51 -0
  3. data/.gitignore +22 -0
  4. data/AUTHORS +19 -0
  5. data/CHANGELOG +36 -0
  6. data/COPYING +340 -0
  7. data/Gemfile +4 -0
  8. data/README.md +53 -0
  9. data/Rakefile +24 -0
  10. data/Vagrantfile +68 -0
  11. data/bin/kameleon +16 -0
  12. data/contrib/kameleon_bashrc.sh +138 -0
  13. data/contrib/scripts/VirtualBox_deploy.sh +12 -0
  14. data/contrib/scripts/chroot_env +9 -0
  15. data/contrib/scripts/create_passwd.py +17 -0
  16. data/contrib/scripts/umount-chroot.sh +290 -0
  17. data/contrib/steps/bootstrap/debian/bootstrap_if_needed.yaml +47 -0
  18. data/contrib/steps/bootstrap/debian/bootstrap_static.yaml +38 -0
  19. data/contrib/steps/setup/add_timestamp.yaml +6 -0
  20. data/contrib/steps/setup/autologin.yaml +16 -0
  21. data/contrib/steps/setup/copy_ssh_auth_file.yaml +10 -0
  22. data/contrib/steps/setup/debian/add_network_interface.yaml +7 -0
  23. data/contrib/steps/setup/debian/cluster_tools_install.yaml +16 -0
  24. data/contrib/steps/setup/debian/network_config_static.yaml +17 -0
  25. data/contrib/steps/setup/generate_user_ssh_key.yaml +15 -0
  26. data/contrib/steps/setup/install_my_ssh_key.yaml +26 -0
  27. data/contrib/steps/setup/make_swap_file.yaml +9 -0
  28. data/contrib/steps/setup/root_ssh_config.yaml +18 -0
  29. data/contrib/steps/setup/set_user_password.yaml +7 -0
  30. data/contrib/steps/setup/system_optimization.yaml +8 -0
  31. data/docs/.gitignore +1 -0
  32. data/docs/Makefile +177 -0
  33. data/docs/make.bat +242 -0
  34. data/docs/source/_static/.gitignore +0 -0
  35. data/docs/source/aliases.rst +29 -0
  36. data/docs/source/checkpoint.rst +28 -0
  37. data/docs/source/cli.rst +3 -0
  38. data/docs/source/commands.rst +62 -0
  39. data/docs/source/conf.py +254 -0
  40. data/docs/source/context.rst +42 -0
  41. data/docs/source/faq.rst +3 -0
  42. data/docs/source/getting_started.rst +3 -0
  43. data/docs/source/index.rst +38 -0
  44. data/docs/source/installation.rst +3 -0
  45. data/docs/source/recipe.rst +256 -0
  46. data/docs/source/why.rst +3 -0
  47. data/docs/source/workspace.rst +11 -0
  48. data/kameleon-builder.gemspec +37 -0
  49. data/lib/kameleon.rb +75 -0
  50. data/lib/kameleon/cli.rb +176 -0
  51. data/lib/kameleon/context.rb +83 -0
  52. data/lib/kameleon/engine.rb +357 -0
  53. data/lib/kameleon/environment.rb +38 -0
  54. data/lib/kameleon/error.rb +51 -0
  55. data/lib/kameleon/logger.rb +53 -0
  56. data/lib/kameleon/recipe.rb +474 -0
  57. data/lib/kameleon/shell.rb +290 -0
  58. data/lib/kameleon/step.rb +213 -0
  59. data/lib/kameleon/utils.rb +45 -0
  60. data/lib/kameleon/version.rb +3 -0
  61. data/templates/COPYRIGHT +21 -0
  62. data/templates/aliases/defaults.yaml +83 -0
  63. data/templates/checkpoints/docker.yaml +14 -0
  64. data/templates/checkpoints/qcow2.yaml +44 -0
  65. data/templates/debian-wheezy-chroot.yaml +98 -0
  66. data/templates/debian-wheezy-docker.yaml +97 -0
  67. data/templates/fedora-docker.yaml +96 -0
  68. data/templates/steps/bootstrap/debian/debootstrap.yaml +13 -0
  69. data/templates/steps/bootstrap/fedora/docker_bootstrap.yaml +25 -0
  70. data/templates/steps/bootstrap/fedora/yum_bootstrap.yaml +22 -0
  71. data/templates/steps/bootstrap/prepare_appliance_with_nbd.yaml +93 -0
  72. data/templates/steps/bootstrap/prepare_docker.yaml +38 -0
  73. data/templates/steps/bootstrap/start_chroot.yaml +53 -0
  74. data/templates/steps/bootstrap/start_docker.yaml +12 -0
  75. data/templates/steps/export/build_appliance_from_docker.yaml +105 -0
  76. data/templates/steps/export/clean_appliance.yaml +3 -0
  77. data/templates/steps/export/save_appliance_from_nbd.yaml +54 -0
  78. data/templates/steps/setup/create_user.yaml +12 -0
  79. data/templates/steps/setup/debian/kernel_install.yaml +20 -0
  80. data/templates/steps/setup/debian/keyboard_config.yaml +10 -0
  81. data/templates/steps/setup/debian/network_config.yaml +30 -0
  82. data/templates/steps/setup/debian/software_install.yaml +15 -0
  83. data/templates/steps/setup/debian/system_config.yaml +12 -0
  84. data/templates/steps/setup/fedora/kernel_install.yaml +27 -0
  85. data/templates/steps/setup/fedora/software_install.yaml +10 -0
  86. data/tests/helper.rb +22 -0
  87. data/tests/recipes/dummy_recipe.yaml +48 -0
  88. data/tests/recipes/steps/bootstrap/dummy_distro/dummy_bootstrap_static.yaml +4 -0
  89. data/tests/recipes/steps/export/dummy_save_appliance.yaml +9 -0
  90. data/tests/recipes/steps/setup/default/dummy_root_passwd.yaml +8 -0
  91. data/tests/recipes/steps/setup/dummy_distro/dummy_software_install.yaml +7 -0
  92. data/tests/test_context.rb +16 -0
  93. data/tests/test_recipe.rb +15 -0
  94. data/tests/test_version.rb +9 -0
  95. metadata +300 -0
@@ -0,0 +1,20 @@
1
+ - configure_kernel:
2
+ - write_in:
3
+ - /etc/kernel-img.conf
4
+ - |
5
+ do_symlinks = yes
6
+ relative_links = yes
7
+ do_bootloader = yes
8
+ do_bootfloppy = no
9
+ do_initrd = yes
10
+ link_in_boot = no
11
+
12
+ - install_kernel:
13
+ - exec_in: "apt-get -y --force-yes install linux-image-$$arch 2>&1"
14
+
15
+ - install_extlinux:
16
+ - exec_in: "apt-get -y --force-yes install extlinux 2>&1"
17
+ - on_setup_clean:
18
+ - exec_in: |
19
+ dir=/var/lib/os-prober/mount
20
+ test ! -d "$dir" || (umount -f -l "$dir" && rmdir "$dir")
@@ -0,0 +1,10 @@
1
+ # # Network Config
2
+ - keyboard_config:
3
+ - write_in:
4
+ - /etc/default/keyboard
5
+ - |
6
+ XKBMODEL="pc105"
7
+ XKBLAYOUT="$$layout"
8
+ XKBVARIANT=""
9
+ XKBOPTIONS=""
10
+ - exec_in: apt-get -y --force-yes install console-setup console-tools console-data 2>&1
@@ -0,0 +1,30 @@
1
+ # # Network Config
2
+
3
+ # WARNING: The MTU is set to 1492 to avoid connection failure over some
4
+ # network du to PPP header
5
+ - mtu: 1492
6
+ - network_interfaces:
7
+ - write_in:
8
+ - /etc/network/interfaces
9
+ - |
10
+ auto lo
11
+ iface lo inet loopback
12
+
13
+ auto eth0
14
+ iface eth0 inet dhcp
15
+ pre-up ip link set mtu $$mtu eth0
16
+
17
+ - set_hosts:
18
+ - write_in:
19
+ - /etc/hosts
20
+ - |
21
+ #
22
+ # /etc/hosts: static lookup table for host names
23
+ #
24
+
25
+ #<ip-address> <hostname.domain.org> <hostname>
26
+ 127.0.0.1 localhost.localdomain localhost $$hostname
27
+ ::1 localhost.localdomain localhost
28
+
29
+ - set_hostname:
30
+ - exec_in: echo "$$hostname" > /etc/hostname
@@ -0,0 +1,15 @@
1
+ # Software Install
2
+ - add_contribs_source:
3
+ - exec_in: perl -pi -e "s/main$/main contrib non-free/" /etc/apt/sources.list
4
+ - update_repositories:
5
+ - exec_in: apt-get -y --force-yes update
6
+ - upgrade_system:
7
+ - exec_in: apt-get -y --force-yes dist-upgrade 2>&1
8
+ - clean:
9
+ - on_export_init:
10
+ - exec_in: apt-get -y --force-yes autoclean
11
+ - exec_in: apt-get -y --force-yes clean
12
+ - exec_in: apt-get -y --force-yes autoremove
13
+ - core_packages:
14
+ - exec_in: apt-get -y --force-yes install $$packages 2>&1
15
+
@@ -0,0 +1,12 @@
1
+ # # System Config
2
+ - configure_locales:
3
+ # set locales programtically, based on http://linux.livejournal.com/1880366.html
4
+ - exec_in: |
5
+ test ! -f /etc/locale.gen || \
6
+ (echo $$locales | tr ' ' '\n' | xargs -I {} sed -i 's/^# {}/{}/' /etc/locale.gen)
7
+ - exec_in: locale-gen $$lang
8
+ - exec_in: update-locale LANG=$$lang
9
+
10
+ - set_timezone:
11
+ - exec_in: echo "$$timezone" > /etc/timezone
12
+ - exec_in: "dpkg-reconfigure -f noninteractive tzdata 2>&1"
@@ -0,0 +1,27 @@
1
+ - setup_build_environment:
2
+ - exec_in: kversion=3.12.10-300
3
+ - exec_in: yum install -y rpmdevtools yum-utils rpm-build ncurses-devel pesign
4
+ - exec_in: rpmdev-setuptree
5
+ - exec_in: yumdownloader --source kernel
6
+ - exec_in: yum-builddep -y kernel-${kversion}.fc$${release}.src.rpm
7
+ - exec_in: rpm -Uvh kernel-${kversion}.fc$${release}.src.rpm
8
+ - exec_in: pushd ~/rpmbuild/SPECS
9
+ - exec_in: rpmbuild -bp --target=$(uname -m) kernel.spec 2>&1
10
+ - exec_in: popd
11
+
12
+ - build_kernel:
13
+ - exec_in: pushd ~/rpmbuild/SPECS
14
+ - exec_in: rpmbuild -bb --target=$(uname -m) --define "buildid .vbox" --with baseonly --with firmware --without debuginfo kernel.spec
15
+ - exec_in: popd
16
+
17
+ - install_kernel:
18
+ - exec_in: pushd ~/rpmbuild/RPMS/x86_64
19
+ - exec_in: rpm -ivh kernel-${kversion}.vbox.fc$${release}.x86_64.rpm kernel-headers-${kversion}.vbox.fc$${release}.x86_64.rpm 2>&1
20
+ - exec_in: popd
21
+
22
+ - install_extlinux:
23
+ - exec_in: "yum install -y install syslinux-extlinux 2>&1"
24
+ - on_setup_clean:
25
+ - exec_in: |
26
+ dir=/var/lib/os-prober/mount
27
+ test ! -d "$dir" || (umount -f -l "$dir" && rmdir "$dir")
@@ -0,0 +1,10 @@
1
+ # Software Install
2
+ - update_system:
3
+ - exec_in: yum update
4
+ - clean:
5
+ - on_export_init:
6
+ - exec_in: yum clean all
7
+ - install_packages:
8
+ - exec_in: yum install -y $$packages 2>&1
9
+ # - install_groupackages:
10
+ # - exec_in: yum groupinstall -y $$group_packages 2>&1
data/tests/helper.rb ADDED
@@ -0,0 +1,22 @@
1
+ if ENV['COVERAGE']
2
+ require 'simplecov'
3
+ require 'coveralls'
4
+
5
+ SimpleCov.profiles.define 'kameleon' do
6
+ add_filter './tests/'
7
+ add_filter './spec/'
8
+ add_filter './autotest/'
9
+
10
+ add_group 'Binaries', 'bin/'
11
+ add_group 'Libraries', 'lib/'
12
+ end
13
+
14
+ SimpleCov.start 'kameleon'
15
+ SimpleCov.merge_timeout 300
16
+ SimpleCov.command_name 'unit'
17
+ end
18
+
19
+ require 'minitest/unit'
20
+ require 'minitest/autorun'
21
+ require 'minitest/pride'
22
+ require 'kameleon'
@@ -0,0 +1,48 @@
1
+ #===============================================================================
2
+ # vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
3
+ #===============================================================================
4
+ #
5
+ # RECIPE: dummy_recipe.yaml
6
+ #
7
+ # DESCRIPTION: This is a test recipe made for unit testing
8
+ #
9
+ # WARNING: This is a warning!!!
10
+ #
11
+ #===============================================================================
12
+ ---
13
+ # This is a comment :/!* $$toto
14
+ global:
15
+ # This is another comment // ,;:!*ù$=)àç_ç_èè-(-('""é&'" ¹~~##{[{[|``\^^@]}
16
+ distrib: dummy_distro
17
+ debian_version_name: distrib_repository
18
+ outside_context: bash
19
+ inside_context: chroot $$workdir/chroot
20
+ variables: test
21
+ extra_packages: vim
22
+
23
+ bootstrap:
24
+ # &é"'(-è_çà)=~#{#{|~{|`\[`^|\@^@]*$ùlmjtgsioht jhié"ç_è (y'éy _This
25
+ - dummy_bootstrap_static:
26
+ - distrib_version_name: wheeeeeeze
27
+ # Comment
28
+ - distrib_repository: http://myrepo.com/test
29
+
30
+ setup:
31
+ - dummy_software_install:
32
+ - extra_packages: "titi toto tata"
33
+ # Comment
34
+ - install_cmd: 12345.213
35
+ - dummy_step1
36
+ # Comment
37
+ - dummy_step2
38
+ - dummy_root_passwd
39
+
40
+ # Comment
41
+
42
+ export:
43
+ - dummy_save_appliance:
44
+ - save_as_raw
45
+ # Comment
46
+ - save_as_vmdk
47
+ # Comment
48
+ # Comment
@@ -0,0 +1,4 @@
1
+ # # Dummy Bootstrap Static
2
+ - dummy_bootstrap_static:
3
+ - exec_out: echo $$distrib_version_name > /dev/null
4
+ - exec_in: echo $$distrib_repository > /dev/null
@@ -0,0 +1,9 @@
1
+ # # Dummy Save Appliance
2
+ - save_as_raw:
3
+ - exec_out: echo test > /dev/null
4
+ - exec_in: echo test > /dev/null
5
+ - exec_out: echo test > /dev/null
6
+ - save_as_vmdk:
7
+ - exec_out: echo test > /dev/null
8
+ - exec_in: echo test > /dev/null
9
+ - exec_out: echo test > /dev/null
@@ -0,0 +1,8 @@
1
+ # # Dummy Passwd Root
2
+ - dummy_passwd_root:
3
+ - exec_in: echo dummy > /dev/null
4
+ - exec_in: |
5
+ echo toto > /dev/null
6
+ - exec_out: echo dummy > /dev/null
7
+ - exec_out: |
8
+ echo toto > /dev/null
@@ -0,0 +1,7 @@
1
+ # # Dummy Software Install
2
+ - dummy_step1:
3
+ - exec_in: echo $$install_cmd > /dev/null
4
+ - dummy_step2:
5
+ - exec_out: echo $$extra_packages > /dev/null
6
+ - dummy_step3:
7
+ - exec_in: echo test > /dev/null
@@ -0,0 +1,16 @@
1
+ require File.expand_path("../helper", __FILE__)
2
+
3
+
4
+ class TestLocalContext < Minitest::Unit::TestCase
5
+ def setup
6
+ @local = Kameleon::LocalContext.new
7
+ end
8
+
9
+ def test_echo_cmd
10
+ out = capture_io{ @local.exec "echo mymessage" }.join ''
11
+ assert_equal "mymessage\n", out
12
+ out = capture_io{ @local.exec "echo >&2 myerror" }.join ''
13
+ assert_equal "myerror\n", out
14
+ end
15
+
16
+ end
@@ -0,0 +1,15 @@
1
+ require File.expand_path("../helper", __FILE__)
2
+
3
+
4
+ class TestRecipe < Minitest::Unit::TestCase
5
+
6
+ def setup
7
+ Kameleon.ui.level = "silent"
8
+ @recipe = Kameleon::Recipe.new File.join(File.dirname(__FILE__), "recipes/dummy_recipe.yaml")
9
+ end
10
+
11
+ def test_dummy_recipe_name
12
+ assert_equal @recipe.name, "dummy_recipe"
13
+ end
14
+
15
+ end
@@ -0,0 +1,9 @@
1
+ require File.expand_path("../helper", __FILE__)
2
+
3
+ describe Kameleon do
4
+
5
+ it "must be defined" do
6
+ Kameleon::VERSION.wont_be_nil
7
+ end
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,300 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kameleon-builder
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0.dev
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Salem Harrache
9
+ - Michael Mercier
10
+ - Cristan Ruiz
11
+ - Bruno Bzeznik
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2014-02-14 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: childprocess
19
+ requirement: !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: '0.3'
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: thor
35
+ requirement: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.15'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '0.15'
49
+ - !ruby/object:Gem::Dependency
50
+ name: table_print
51
+ requirement: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '1.5'
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ version: '1.5'
65
+ - !ruby/object:Gem::Dependency
66
+ name: log4r-color
67
+ requirement: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ version: '1.2'
73
+ type: :runtime
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '1.2'
81
+ - !ruby/object:Gem::Dependency
82
+ name: pry
83
+ requirement: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: '0.9'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '0.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-debugger
99
+ requirement: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '0.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ~>
111
+ - !ruby/object:Gem::Version
112
+ version: '0.2'
113
+ - !ruby/object:Gem::Dependency
114
+ name: rake
115
+ requirement: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '10.1'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ~>
127
+ - !ruby/object:Gem::Version
128
+ version: '10.1'
129
+ - !ruby/object:Gem::Dependency
130
+ name: minitest
131
+ requirement: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ~>
135
+ - !ruby/object:Gem::Version
136
+ version: '4.7'
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: '4.7'
145
+ - !ruby/object:Gem::Dependency
146
+ name: coveralls
147
+ requirement: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '0.7'
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '0.7'
161
+ description: The mindful appliance builder
162
+ email:
163
+ - salem.harrache@inria.fr
164
+ - michael.mercier@inria.fr
165
+ - cristian.ruiz@imag.fr
166
+ - bruno.bzeznik@imag.fr
167
+ executables:
168
+ - kameleon
169
+ extensions: []
170
+ extra_rdoc_files: []
171
+ files:
172
+ - .editorconfig
173
+ - .env
174
+ - .gitignore
175
+ - AUTHORS
176
+ - CHANGELOG
177
+ - COPYING
178
+ - Gemfile
179
+ - README.md
180
+ - Rakefile
181
+ - Vagrantfile
182
+ - bin/kameleon
183
+ - contrib/kameleon_bashrc.sh
184
+ - contrib/scripts/VirtualBox_deploy.sh
185
+ - contrib/scripts/chroot_env
186
+ - contrib/scripts/create_passwd.py
187
+ - contrib/scripts/umount-chroot.sh
188
+ - contrib/steps/bootstrap/debian/bootstrap_if_needed.yaml
189
+ - contrib/steps/bootstrap/debian/bootstrap_static.yaml
190
+ - contrib/steps/setup/add_timestamp.yaml
191
+ - contrib/steps/setup/autologin.yaml
192
+ - contrib/steps/setup/copy_ssh_auth_file.yaml
193
+ - contrib/steps/setup/debian/add_network_interface.yaml
194
+ - contrib/steps/setup/debian/cluster_tools_install.yaml
195
+ - contrib/steps/setup/debian/network_config_static.yaml
196
+ - contrib/steps/setup/generate_user_ssh_key.yaml
197
+ - contrib/steps/setup/install_my_ssh_key.yaml
198
+ - contrib/steps/setup/make_swap_file.yaml
199
+ - contrib/steps/setup/root_ssh_config.yaml
200
+ - contrib/steps/setup/set_user_password.yaml
201
+ - contrib/steps/setup/system_optimization.yaml
202
+ - docs/.gitignore
203
+ - docs/Makefile
204
+ - docs/make.bat
205
+ - docs/source/_static/.gitignore
206
+ - docs/source/aliases.rst
207
+ - docs/source/checkpoint.rst
208
+ - docs/source/cli.rst
209
+ - docs/source/commands.rst
210
+ - docs/source/conf.py
211
+ - docs/source/context.rst
212
+ - docs/source/faq.rst
213
+ - docs/source/getting_started.rst
214
+ - docs/source/index.rst
215
+ - docs/source/installation.rst
216
+ - docs/source/recipe.rst
217
+ - docs/source/why.rst
218
+ - docs/source/workspace.rst
219
+ - kameleon-builder.gemspec
220
+ - lib/kameleon.rb
221
+ - lib/kameleon/cli.rb
222
+ - lib/kameleon/context.rb
223
+ - lib/kameleon/engine.rb
224
+ - lib/kameleon/environment.rb
225
+ - lib/kameleon/error.rb
226
+ - lib/kameleon/logger.rb
227
+ - lib/kameleon/recipe.rb
228
+ - lib/kameleon/shell.rb
229
+ - lib/kameleon/step.rb
230
+ - lib/kameleon/utils.rb
231
+ - lib/kameleon/version.rb
232
+ - templates/COPYRIGHT
233
+ - templates/aliases/defaults.yaml
234
+ - templates/checkpoints/docker.yaml
235
+ - templates/checkpoints/qcow2.yaml
236
+ - templates/debian-wheezy-chroot.yaml
237
+ - templates/debian-wheezy-docker.yaml
238
+ - templates/fedora-docker.yaml
239
+ - templates/steps/bootstrap/debian/debootstrap.yaml
240
+ - templates/steps/bootstrap/fedora/docker_bootstrap.yaml
241
+ - templates/steps/bootstrap/fedora/yum_bootstrap.yaml
242
+ - templates/steps/bootstrap/prepare_appliance_with_nbd.yaml
243
+ - templates/steps/bootstrap/prepare_docker.yaml
244
+ - templates/steps/bootstrap/start_chroot.yaml
245
+ - templates/steps/bootstrap/start_docker.yaml
246
+ - templates/steps/export/build_appliance_from_docker.yaml
247
+ - templates/steps/export/clean_appliance.yaml
248
+ - templates/steps/export/save_appliance_from_nbd.yaml
249
+ - templates/steps/setup/create_user.yaml
250
+ - templates/steps/setup/debian/kernel_install.yaml
251
+ - templates/steps/setup/debian/keyboard_config.yaml
252
+ - templates/steps/setup/debian/network_config.yaml
253
+ - templates/steps/setup/debian/software_install.yaml
254
+ - templates/steps/setup/debian/system_config.yaml
255
+ - templates/steps/setup/fedora/kernel_install.yaml
256
+ - templates/steps/setup/fedora/software_install.yaml
257
+ - tests/helper.rb
258
+ - tests/recipes/dummy_recipe.yaml
259
+ - tests/recipes/steps/bootstrap/dummy_distro/dummy_bootstrap_static.yaml
260
+ - tests/recipes/steps/export/dummy_save_appliance.yaml
261
+ - tests/recipes/steps/setup/default/dummy_root_passwd.yaml
262
+ - tests/recipes/steps/setup/dummy_distro/dummy_software_install.yaml
263
+ - tests/test_context.rb
264
+ - tests/test_recipe.rb
265
+ - tests/test_version.rb
266
+ homepage: http://kameleon.readthedocs.org/
267
+ licenses:
268
+ - GPL-2
269
+ post_install_message:
270
+ rdoc_options: []
271
+ require_paths:
272
+ - lib
273
+ required_ruby_version: !ruby/object:Gem::Requirement
274
+ none: false
275
+ requirements:
276
+ - - ! '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ required_rubygems_version: !ruby/object:Gem::Requirement
280
+ none: false
281
+ requirements:
282
+ - - ! '>'
283
+ - !ruby/object:Gem::Version
284
+ version: 1.3.1
285
+ requirements: []
286
+ rubyforge_project:
287
+ rubygems_version: 1.8.22
288
+ signing_key:
289
+ specification_version: 3
290
+ summary: Kameleon is a tool to build virtual machines from scratch
291
+ test_files:
292
+ - tests/helper.rb
293
+ - tests/recipes/dummy_recipe.yaml
294
+ - tests/recipes/steps/bootstrap/dummy_distro/dummy_bootstrap_static.yaml
295
+ - tests/recipes/steps/export/dummy_save_appliance.yaml
296
+ - tests/recipes/steps/setup/default/dummy_root_passwd.yaml
297
+ - tests/recipes/steps/setup/dummy_distro/dummy_software_install.yaml
298
+ - tests/test_context.rb
299
+ - tests/test_recipe.rb
300
+ - tests/test_version.rb