kameleon-builder 2.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. data/.editorconfig +0 -0
  2. data/.env +2 -6
  3. data/CHANGELOG.rst +74 -1
  4. data/Gemfile +20 -2
  5. data/README.rst +35 -25
  6. data/Thorfile +29 -0
  7. data/contrib/kameleon_bashrc.sh +61 -0
  8. data/contrib/polipo_env.sh +3 -2
  9. data/kameleon-builder.gemspec +3 -10
  10. data/lib/kameleon.rb +10 -14
  11. data/lib/kameleon/cli.rb +92 -105
  12. data/lib/kameleon/context.rb +76 -43
  13. data/lib/kameleon/engine.rb +147 -103
  14. data/lib/kameleon/environment.rb +10 -5
  15. data/lib/kameleon/error.rb +1 -32
  16. data/lib/kameleon/persistent_cache.rb +127 -29
  17. data/lib/kameleon/recipe.rb +63 -106
  18. data/lib/kameleon/shell.rb +32 -17
  19. data/lib/kameleon/step.rb +18 -1
  20. data/lib/kameleon/ui.rb +141 -0
  21. data/lib/kameleon/utils.rb +9 -0
  22. data/templates/{debian7-chroot.yaml → chroot/debian7-amd64.yaml} +29 -21
  23. data/templates/{docker-debian7.yaml → docker/debian7.yaml} +5 -5
  24. data/templates/extend.erb +2 -2
  25. data/templates/{debian7-g5k.yaml → grid5000/debian7.yaml} +1 -1
  26. data/templates/{archlinux-desktop.yaml → qemu/archlinux-desktop-i686.yaml} +2 -2
  27. data/templates/qemu/archlinux-desktop-x86_64.yaml +25 -0
  28. data/templates/qemu/archlinux-i686.yaml +25 -0
  29. data/templates/{archlinux.yaml → qemu/archlinux-x86_64.yaml} +37 -34
  30. data/templates/qemu/centos6.5-x86_64.yaml +113 -0
  31. data/templates/qemu/centos7-x86_64.yaml +119 -0
  32. data/templates/{debian7.yaml → qemu/debian7-amd64.yaml} +45 -40
  33. data/templates/{debian7-desktop.yaml → qemu/debian7-desktop-amd64.yaml} +2 -3
  34. data/templates/{debian7-kameleon.yaml → qemu/debian7-kameleon-amd64.yaml} +3 -6
  35. data/templates/{debian7-oar-dev.yaml → qemu/debian7-oar-amd64.yaml} +2 -2
  36. data/templates/qemu/debian8-amd64.yaml +25 -0
  37. data/templates/{fedora20-desktop.yaml → qemu/fedora20-desktop-x86_64.yaml} +2 -2
  38. data/templates/qemu/fedora20-x86_64.yaml +116 -0
  39. data/templates/{ubuntu-12.04.yaml → qemu/ubuntu-12.04-amd64.yaml} +42 -38
  40. data/templates/{ubuntu-12.04-desktop.yaml → qemu/ubuntu-12.04-desktop-amd64.yaml} +3 -3
  41. data/templates/{ubuntu-14.04.yaml → qemu/ubuntu-14.04-amd64.yaml} +2 -2
  42. data/templates/{ubuntu-14.04-desktop.yaml → qemu/ubuntu-14.04-desktop-amd64.yaml} +2 -2
  43. data/templates/steps/aliases/defaults.yaml +19 -13
  44. data/templates/steps/bootstrap/archlinux/arch_bootstrap.yaml +11 -19
  45. data/templates/steps/bootstrap/debian/debootstrap.yaml +10 -11
  46. data/templates/steps/bootstrap/debian/debootstrap_arm.yaml +11 -19
  47. data/templates/steps/bootstrap/fedora/init_pxeboot.yaml +13 -0
  48. data/templates/steps/bootstrap/fedora/yum_bootstrap.yaml +45 -0
  49. data/templates/steps/bootstrap/initialize_disk.yaml +16 -0
  50. data/templates/steps/bootstrap/initialize_disk_chroot.yaml +10 -14
  51. data/templates/steps/bootstrap/install_requirements.yaml +3 -0
  52. data/templates/steps/bootstrap/prepare_docker.yaml +7 -7
  53. data/templates/steps/bootstrap/prepare_qemu.yaml +20 -26
  54. data/templates/steps/bootstrap/prepare_virtualbox.yaml +63 -0
  55. data/templates/steps/bootstrap/start_chroot.yaml +2 -13
  56. data/templates/steps/bootstrap/start_qemu.yaml +50 -53
  57. data/templates/steps/bootstrap/start_virtualbox.yaml +37 -0
  58. data/templates/steps/bootstrap/switch_context_qemu.yaml +64 -0
  59. data/templates/steps/bootstrap/switch_context_virtualbox.yaml +66 -0
  60. data/templates/steps/breakpoint.yaml +2 -1
  61. data/templates/steps/checkpoints/docker.yaml +14 -11
  62. data/templates/steps/checkpoints/qcow2.yaml +26 -24
  63. data/templates/steps/checkpoints/qemu.yaml +30 -36
  64. data/templates/steps/checkpoints/virtualbox.yaml +21 -0
  65. data/templates/steps/disable_checkpoint.yaml +3 -0
  66. data/templates/steps/enable_checkpoint.yaml +5 -0
  67. data/templates/steps/export/qemu_save_appliance.yaml +52 -0
  68. data/templates/steps/export/virtualbox_save_appliance.yaml +67 -0
  69. data/templates/steps/setup/archlinux/install_bootloader.yaml +23 -0
  70. data/templates/steps/setup/centos/6.5/configure_network.yaml +31 -0
  71. data/templates/steps/setup/centos/6.5/configure_system.yaml +27 -0
  72. data/templates/steps/setup/debian/configure_apt.yaml +1 -6
  73. data/templates/steps/setup/debian/configure_kernel.yaml +0 -5
  74. data/templates/steps/setup/debian/install_bootloader.yaml +36 -0
  75. data/templates/steps/setup/debian/setup_vagrant_box.yaml +48 -18
  76. data/templates/steps/setup/debian/upgrade_system.yaml +2 -7
  77. data/templates/steps/setup/fedora/configure_kernel.yaml +9 -0
  78. data/templates/steps/setup/fedora/configure_keyboard.yaml +12 -0
  79. data/templates/steps/setup/fedora/configure_network.yaml +9 -1
  80. data/templates/steps/setup/fedora/configure_system.yaml +20 -45
  81. data/templates/steps/setup/fedora/install_bootloader.yaml +58 -0
  82. data/templates/steps/setup/fedora/minimal_install.yaml +3 -0
  83. data/templates/steps/setup/fedora/update_system.yaml +13 -5
  84. data/templates/steps/setup/ubuntu/configure_apt.yaml +4 -9
  85. data/templates/vagrant/debian7-amd64.yaml +130 -0
  86. data/templates/virtualbox/archlinux-desktop-i686.yaml +25 -0
  87. data/templates/virtualbox/archlinux-desktop-x86_64.yaml +28 -0
  88. data/templates/virtualbox/archlinux-i686.yaml +28 -0
  89. data/templates/virtualbox/archlinux-x86_64.yaml +109 -0
  90. data/templates/virtualbox/centos6.5-i386.yaml +39 -0
  91. data/templates/virtualbox/centos6.5-x86_64.yaml +111 -0
  92. data/templates/virtualbox/centos7-x86_64.yaml +116 -0
  93. data/{docs/source/debian7.yaml → templates/virtualbox/debian7-amd64.yaml} +53 -52
  94. data/templates/virtualbox/debian7-desktop-amd64.yaml +25 -0
  95. data/templates/{fedora-rawhide.yaml → virtualbox/debian7-i386.yaml} +12 -11
  96. data/templates/virtualbox/debian7-kameleon-amd64.yaml +38 -0
  97. data/templates/virtualbox/debian7-oar-amd64.yaml +51 -0
  98. data/templates/{debian-testing.yaml → virtualbox/debian8-amd64.yaml} +3 -3
  99. data/templates/virtualbox/debian8-i386.yaml +31 -0
  100. data/templates/virtualbox/fedora20-x86_64.yaml +116 -0
  101. data/templates/virtualbox/ubuntu-12.04-amd64.yaml +128 -0
  102. data/templates/virtualbox/ubuntu-12.04-desktop-amd64.yaml +25 -0
  103. data/templates/virtualbox/ubuntu-14.04-amd64.yaml +25 -0
  104. data/templates/virtualbox/ubuntu-14.04-desktop-amd64.yaml +27 -0
  105. data/version.txt +1 -1
  106. metadata +67 -212
  107. data/Rakefile +0 -24
  108. data/docs/.gitignore +0 -1
  109. data/docs/Makefile +0 -181
  110. data/docs/README.md +0 -17
  111. data/docs/make.bat +0 -242
  112. data/docs/source/_static/.gitignore +0 -0
  113. data/docs/source/_static/centos.png +0 -0
  114. data/docs/source/_static/debian.png +0 -0
  115. data/docs/source/_static/kameleon-logo.png +0 -0
  116. data/docs/source/_static/kameleon-logo.xcf +0 -0
  117. data/docs/source/_static/kameleon-long.png +0 -0
  118. data/docs/source/_static/ubuntu.png +0 -0
  119. data/docs/source/_themes/sphinx_rtd_theme/__init__.py +0 -17
  120. data/docs/source/_themes/sphinx_rtd_theme/breadcrumbs.html +0 -19
  121. data/docs/source/_themes/sphinx_rtd_theme/footer.html +0 -32
  122. data/docs/source/_themes/sphinx_rtd_theme/layout.html +0 -160
  123. data/docs/source/_themes/sphinx_rtd_theme/layout_old.html +0 -205
  124. data/docs/source/_themes/sphinx_rtd_theme/search.html +0 -50
  125. data/docs/source/_themes/sphinx_rtd_theme/searchbox.html +0 -7
  126. data/docs/source/_themes/sphinx_rtd_theme/static/css/badge_only.css +0 -1
  127. data/docs/source/_themes/sphinx_rtd_theme/static/css/theme.css +0 -4
  128. data/docs/source/_themes/sphinx_rtd_theme/static/fonts/FontAwesome.otf +0 -0
  129. data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.eot +0 -0
  130. data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.svg +0 -414
  131. data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.ttf +0 -0
  132. data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.woff +0 -0
  133. data/docs/source/_themes/sphinx_rtd_theme/static/js/theme.js +0 -47
  134. data/docs/source/_themes/sphinx_rtd_theme/theme.conf +0 -8
  135. data/docs/source/_themes/sphinx_rtd_theme/versions.html +0 -37
  136. data/docs/source/aliases.rst +0 -31
  137. data/docs/source/atlas_debian_g5k.yaml +0 -36
  138. data/docs/source/checkpoint.rst +0 -30
  139. data/docs/source/commands.rst +0 -63
  140. data/docs/source/conf.py +0 -262
  141. data/docs/source/context.rst +0 -47
  142. data/docs/source/debian_customized.yaml +0 -28
  143. data/docs/source/debian_customized_g5k.yaml +0 -21
  144. data/docs/source/faq.rst +0 -43
  145. data/docs/source/getting_started.rst +0 -260
  146. data/docs/source/grid5000_tutorial.rst +0 -525
  147. data/docs/source/index.rst +0 -53
  148. data/docs/source/install_atlas.yaml +0 -25
  149. data/docs/source/install_hpl.yaml +0 -24
  150. data/docs/source/installation.rst +0 -51
  151. data/docs/source/persistent_cache.rst +0 -34
  152. data/docs/source/recipe.rst +0 -177
  153. data/docs/source/tau_install.yaml +0 -19
  154. data/docs/source/tau_install_g5k.yaml +0 -25
  155. data/docs/source/use_cases.rst +0 -93
  156. data/docs/source/workspace.rst +0 -13
  157. data/lib/kameleon/logger.rb +0 -56
  158. data/omnibus/.gitignore +0 -11
  159. data/omnibus/.kitchen.yml +0 -25
  160. data/omnibus/Berksfile +0 -9
  161. data/omnibus/Berksfile.lock +0 -25
  162. data/omnibus/Gemfile +0 -12
  163. data/omnibus/README.md +0 -94
  164. data/omnibus/config/projects/kameleon.rb +0 -23
  165. data/omnibus/config/software/kameleon.rb +0 -24
  166. data/omnibus/config/software/polipo.rb +0 -30
  167. data/omnibus/config/software/ruby.rb +0 -158
  168. data/omnibus/files/mac_dmg/Resources/background.png +0 -0
  169. data/omnibus/files/mac_dmg/Resources/icon.png +0 -0
  170. data/omnibus/files/mac_pkg/Resources/background.png +0 -0
  171. data/omnibus/files/mac_pkg/Resources/license.html +0 -1
  172. data/omnibus/files/mac_pkg/Resources/welcome.html +0 -9
  173. data/omnibus/omnibus.rb +0 -27
  174. data/omnibus/package-scripts/kameleon/makeselfinst +0 -27
  175. data/omnibus/package-scripts/kameleon/postrm +0 -9
  176. data/templates/fedora20.yaml +0 -105
  177. data/templates/steps/bootstrap/archlinux/install_bootloader.yaml +0 -46
  178. data/templates/steps/bootstrap/archlinux/populate_disk.yaml +0 -39
  179. data/templates/steps/bootstrap/fedora/liveos_bootstrap.yaml +0 -123
  180. data/templates/steps/bootstrap/initialize_disk_qemu.yaml +0 -72
  181. data/templates/steps/bootstrap/install_bootloader.yaml +0 -42
  182. data/templates/steps/bootstrap/ubuntu/debootstrap.yaml +0 -27
  183. data/templates/steps/export/save_appliance.yaml +0 -58
  184. data/templates/steps/export/save_vagrant_box.yaml +0 -29
  185. data/templates/vagrant-debian7.yaml +0 -31
@@ -1,39 +1,33 @@
1
- create: |
2
- if [ -f "$$kameleon_cwd/checkpoint_enabled" ] ; then
3
- if nc -w 1 -z localhost $$qemu_monitor_port 2>/dev/null
4
- then
5
- echo "savevm @microstep_id" | nc localhost $$qemu_monitor_port
6
- fi
7
- fi
1
+ enabled?:
2
+ - exec_local: test -f $$kameleon_cwd/checkpoint_enabled
3
+ - exec_local: test -S $$qemu_monitor_socket
4
+
5
+ create:
6
+ - exec_local: echo -e "savevm @microstep_id" | socat - UNIX-CONNECT:$$qemu_monitor_socket
8
7
 
9
- apply: |
10
- [[ ! -f "$$kameleon_cwd/vm_state_to_load.txt" ]] || rm -f $$kameleon_cwd/vm_state_to_load.txt
11
- if [ -f "$$image_disk" ] ; then
12
- _checkpoints=$(qemu-img snapshot -l $$image_disk | tail -n +3 | awk '{print $2}')
13
- _checkpoints=($_checkpoints)
14
- for checkpoint in "${_checkpoints[@]}"; do
15
- if [ -f "$$kameleon_cwd/vm_state_to_load.txt" ]; then
16
- echo "Removing old checkpoint $checkpoint"
17
- qemu-img snapshot -d $checkpoint $$image_disk
18
- fi
19
- if [[ "$checkpoint" == "@microstep_id" ]]; then
20
- echo "@microstep_id" > $$kameleon_cwd/vm_state_to_load.txt
21
- qemu-img snapshot -a $checkpoint $$image_disk
22
- fi
23
- done
24
- fi
8
+ apply:
9
+ - exec_local: |
10
+ [[ ! -f "$$kameleon_cwd/vm_state_to_load.txt" ]] || rm -f $$kameleon_cwd/vm_state_to_load.txt
11
+ if [ -f "$$qemu_image_disk" ] ; then
12
+ _checkpoints=$(qemu-img snapshot -l $$qemu_image_disk | tail -n +3 | awk '{print $2}')
13
+ _checkpoints=($_checkpoints)
14
+ for checkpoint in "${_checkpoints[@]}"; do
15
+ if [ -f "$$kameleon_cwd/vm_state_to_load.txt" ]; then
16
+ echo "Removing old checkpoint $checkpoint"
17
+ qemu-img snapshot -d $checkpoint $$qemu_image_disk
18
+ fi
19
+ if [[ "$checkpoint" == "@microstep_id" ]]; then
20
+ echo "@microstep_id" > $$kameleon_cwd/vm_state_to_load.txt
21
+ qemu-img snapshot -a $checkpoint $$qemu_image_disk
22
+ fi
23
+ done
24
+ fi
25
25
 
26
- clear: |
27
- if [ -f "$$image_disk" ] ; then
28
- _checkpoints=$(qemu-img snapshot -l $$image_disk | tail -n +3 | awk '{print $2}')
29
- _checkpoints=($_checkpoints)
30
- for checkpoint in "${_checkpoints[@]}"; do
31
- echo "Removing old checkpoint $checkpoint"
32
- qemu-img snapshot -d $checkpoint $$image_disk
33
- done
34
- fi
26
+ clear:
27
+ - exec_local: rm -f $$qemu_image_disk
35
28
 
36
- list: |
37
- if [ -f "$$image_disk" ] ; then
38
- qemu-img snapshot -l $$image_disk | tail -n +3 | awk '{print $2}'
39
- fi
29
+ list:
30
+ - exec_local: |
31
+ if [ -f "$$qemu_image_disk" ] ; then
32
+ qemu-img snapshot -l $$qemu_image_disk | tail -n +3 | awk '{print $2}'
33
+ fi
@@ -0,0 +1,21 @@
1
+ enabled?:
2
+ - exec_local: test -f $$kameleon_cwd/checkpoint_enabled
3
+ - exec_local: VBoxManage list vms | grep -q $$virtualbox_vmid
4
+
5
+ create:
6
+ - exec_local: VBoxManage snapshot $$virtualbox_vmid take @microstep_id 2>&1
7
+
8
+ apply:
9
+ - exec_local: VBoxManage snapshot $$virtualbox_vmid restore @microstep_id 2>&1
10
+
11
+ clear:
12
+ - exec_local: |
13
+ if VBoxManage list vms | grep -q $$virtualbox_vmid; then
14
+ VBoxManage unregistervm --delete $$virtualbox_vmid 2>&1
15
+ fi
16
+
17
+ list:
18
+ - exec_local: |
19
+ if VBoxManage list vms | grep -q $$virtualbox_vmid; then
20
+ VBoxManage snapshot $$virtualbox_vmid list | grep 'Name:' | awk '{print $2}'
21
+ fi
@@ -0,0 +1,3 @@
1
+ - disable_checkpoint:
2
+ - on_checkpoint: redo
3
+ - exec_local: rm -f $$kameleon_cwd/checkpoint_enabled
@@ -0,0 +1,5 @@
1
+ - enable_checkpoint:
2
+ - on_checkpoint: redo
3
+ - on_bootstrap_init:
4
+ - exec_local: rm -f $$kameleon_cwd/checkpoint_enabled
5
+ - exec_local: touch $$kameleon_cwd/checkpoint_enabled
@@ -0,0 +1,52 @@
1
+ # Save Appliance
2
+
3
+ - tar_out_opts: numericowner:true excludes:etc/fstab
4
+
5
+ - save_as_tar_gz:
6
+ - check_cmd_local: guestfish
7
+ - check_cmd_local: gzip
8
+ - exec_local: echo "Exporting appliance to $$output.tar.gz..."
9
+ - exec_local: guestfish --ro -i tar-out -a $$input / - $$tar_out_opts | gzip --best > $$output.tar.gz
10
+
11
+ - save_as_tar_xz:
12
+ - check_cmd_local: guestfish
13
+ - check_cmd_local: xz
14
+ - exec_local: echo "Exporting appliance to $$output.tar.xz..."
15
+ - exec_local: guestfish --ro -i tar-out -a $$input / - $$tar_out_opts | xz -9 -c - > $$output.tar.xz
16
+
17
+ - save_as_tar_bz2:
18
+ - check_cmd_local: guestfish
19
+ - check_cmd_local: bzip2
20
+ - exec_local: echo "Exporting appliance to $$output.tar.bz2..."
21
+ - exec_local: guestfish --ro -i tar-out -a $$input / - $$tar_out_opts | bzip2 --best > $$output.tar.bz2
22
+
23
+ - save_as_raw:
24
+ - check_cmd_local: qemu-img
25
+ - exec_local: echo "Exporting appliance to $$output.raw..."
26
+ - exec_local: qemu-img convert -O raw $$input $$output.raw
27
+
28
+ - save_as_qcow2:
29
+ - check_cmd_local: qemu-img
30
+ - exec_local: echo "Exporting appliance to $$output.qcow2..."
31
+ - exec_local: qemu-img convert -c -O qcow2 $$input $$output.qcow2
32
+
33
+ - save_as_qed:
34
+ - check_cmd_local: qemu-img
35
+ - exec_local: echo "Exporting appliance to $$output.qed..."
36
+ - exec_local: qemu-img convert -O qed $$input $$output.qed
37
+
38
+ - save_as_vmdk:
39
+ - check_cmd_local: qemu-img
40
+ - exec_local: echo "Exporting appliance to $$output.vmdk..."
41
+ - exec_local: qemu-img convert -O vmdk $$input $$output.vmdk
42
+
43
+ - save_as_vdi:
44
+ - check_cmd_local: qemu-img
45
+ - exec_local: echo "Exporting appliance to $$output.vdi..."
46
+ - exec_local: qemu-img convert -O vdi $$input $$output.vdi
47
+ - rescue:
48
+ - exec_local: |
49
+ echo "Compact the vdi disk"
50
+ VBoxManage modifyhd $$output.vdi --compact 2>&1
51
+ - exec_local: |
52
+ echo "Cannot compact the vdi disk : VBoxManage is missing."
@@ -0,0 +1,67 @@
1
+ # Save Appliance from virtualbox
2
+
3
+ - tar_out_opts: numericowner:true excludes:etc/fstab
4
+
5
+ - save_as_ova:
6
+ - exec_local: rm -f $$output.ova
7
+ - exec_local: VBoxManage modifyvm $$virtualbox_vmid --natpf1 delete guestssh
8
+ - exec_local: VBoxManage storageattach $$virtualbox_vmid --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium none
9
+ - exec_local: VBoxManage export $$virtualbox_vmid -o $$output.ova
10
+
11
+ - save_as_vdi:
12
+ - check_cmd_local: qemu-img
13
+ - exec_local: echo "Exporting appliance to $$output.vdi..."
14
+ - exec_local: qemu-img convert -O vdi $$virtualbox_image_disk $$output.vdi
15
+ - rescue:
16
+ - exec_local: |
17
+ echo "Compact the vdi disk"
18
+ VBoxManage modifyhd $$output.vdi --compact 2>&1
19
+ - exec_local: |
20
+ echo "Cannot compact the vdi disk : VBoxManage is missing."
21
+ - exec_local: echo "Saved vdi appliance to $$output.vdi"
22
+
23
+ - save_as_vmdk:
24
+ - check_cmd_local: qemu-img
25
+ - exec_local: echo "Exporting appliance to $$output.vmdk..."
26
+ - exec_local: qemu-img convert -O vmdk $$virtualbox_image_disk $$output.vmdk
27
+ - exec_local: echo "Saved vmdk appliance to $$output.vmdk"
28
+
29
+ - save_as_tar_gz:
30
+ - check_cmd_local: guestfish
31
+ - check_cmd_local: gzip
32
+ - exec_local: echo "Exporting appliance to $$output.tar.gz..."
33
+ - exec_local: guestfish --ro -i tar-out -a $$virtualbox_image_disk / - $$tar_out_opts | gzip --best > $$output.tar.gz
34
+
35
+ - save_as_tar_xz:
36
+ - check_cmd_local: guestfish
37
+ - check_cmd_local: xz
38
+ - exec_local: echo "Exporting appliance to $$output.tar.xz..."
39
+ - exec_local: guestfish --ro -i tar-out -a $$virtualbox_image_disk / - $$tar_out_opts | xz -9 -c - > $$output.tar.xz
40
+
41
+ - save_as_tar_bz2:
42
+ - check_cmd_local: guestfish
43
+ - check_cmd_local: bzip2
44
+ - exec_local: echo "Exporting appliance to $$output.tar.bz2..."
45
+ - exec_local: guestfish --ro -i tar-out -a $$virtualbox_image_disk / - $$tar_out_opts | bzip2 --best > $$output.tar.bz2
46
+
47
+ - save_as_raw:
48
+ - check_cmd_local: qemu-img
49
+ - exec_local: echo "Exporting appliance to $$output.raw..."
50
+ - exec_local: qemu-img convert -O raw $$virtualbox_image_disk $$output.raw
51
+ - exec_local: echo "Saved raw appliance to $$output.raw"
52
+
53
+ - save_as_qcow2:
54
+ - check_cmd_local: qemu-img
55
+ - exec_local: echo "Exporting appliance to $$output.qcow2..."
56
+ - exec_local: qemu-img convert -c -O qcow2 $$virtualbox_image_disk $$output.qcow2
57
+
58
+ - save_as_qed:
59
+ - check_cmd_local: qemu-img
60
+ - exec_local: echo "Exporting appliance to $$output.qed..."
61
+ - exec_local: qemu-img convert -O qed $$virtualbox_image_disk $$output.qed
62
+
63
+ - save_as_vagrant_box:
64
+ - check_cmd_local: vagrant
65
+ - exec_local: echo "Exporting appliance to $$output.box..."
66
+ - exec_local: rm -f $$output.box
67
+ - exec_local: vagrant package --base $$virtualbox_vmid --output $$output.box
@@ -0,0 +1,23 @@
1
+ # Install extlinux bootloader
2
+
3
+ - install_syslinux:
4
+ - check_cmd_in: extlinux
5
+ - check_cmd_in: syslinux-install_update
6
+ - exec_in: DISTRIB_TITLE="$$kameleon_recipe_name"
7
+ - exec_in: syslinux-install_update -a -m
8
+ - exec_in: cp -r /usr/lib/syslinux/bios/*.c32 /boot/syslinux/
9
+ - exec_in: extlinux --install /boot/syslinux 2>&1
10
+ - exec_in: syslinux-install_update -a -m
11
+ - write_in:
12
+ - /boot/syslinux/syslinux.cfg
13
+ - |
14
+ default ${DISTRIB_TITLE^}
15
+ timeout 1
16
+
17
+ label ${DISTRIB_TITLE^}
18
+ kernel ../vmlinuz-linux
19
+ initrd ../initramfs-linux.img
20
+ # the net.ifnames option is disable to get default net interface
21
+ # names according to this page:
22
+ # https://wiki.archlinux.org/index.php/Network_Configuration#Device_names
23
+ append root=UUID=`blkid -s UUID -o value $(__find_linux_boot_device)` rw net.ifnames=0
@@ -0,0 +1,31 @@
1
+ - mtu: "1492"
2
+
3
+ - set_hostname:
4
+ - exec_in: echo $$hostname > /etc/hostname
5
+
6
+ - enable_network:
7
+ - exec_in: chkconfig network on
8
+
9
+ - set_host:
10
+ - write_in:
11
+ - /etc/hosts
12
+ - |
13
+ 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 $$hostname
14
+ ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 $$hostname
15
+
16
+ - set_interface:
17
+ - write_in:
18
+ - /etc/sysconfig/network-scripts/ifcfg-eth0
19
+ - |
20
+ DEVICE=eth0
21
+ BOOTPROTO=dhcp
22
+ ONBOOT=yes
23
+ HOSTNAME=$$hostname
24
+ NM_CONTROLLED=no
25
+ TYPE=Ethernet
26
+ MTU=$$mtu
27
+ - write_in:
28
+ - /etc/sysconfig/network
29
+ - |
30
+ NETWORKING=yes
31
+ HOSTNAME=$$hostname
@@ -0,0 +1,27 @@
1
+ # System configuration
2
+ #
3
+ # This will set the locals and the timezone
4
+
5
+ - set_locales:
6
+ # uncomment the locales
7
+ - exec_in: |
8
+ echo $$locales | tr ' ' '\n' | xargs -I {} localedef -v -c -i {} -i {} -f UTF-8 $$lang 2>&1 || :
9
+
10
+ - set_timezone:
11
+ - exec_in: ln -sf /usr/share/zoneinfo/$$timezone /etc/localtime
12
+
13
+ - set_wheel_sudo:
14
+ - exec_in: echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers
15
+
16
+ - remove_random_seed:
17
+ - exec_in: echo "Removing random-seed so it's not the same in every image."
18
+ - exec_in: rm -f /var/lib/random-seed
19
+
20
+ - compress_cracklib:
21
+ - exec_in: gzip -9 /usr/share/cracklib/pw_dict.pwd
22
+
23
+ - enable_sshd:
24
+ - exec_in: chkconfig sshd on
25
+
26
+ - enable_ntpdate_service:
27
+ - exec_in: chkconfig ntpd on
@@ -1,7 +1,7 @@
1
1
  # Software Install
2
2
  - enable_contrib: true
3
3
  - enable_nonfree: true
4
- - install_recommends: false
4
+
5
5
 
6
6
  - configure_apt_to_use_less_disk_space:
7
7
  - write_in:
@@ -9,11 +9,6 @@
9
9
  - |
10
10
  Acquire::GzipIndexes "true";
11
11
  Acquire::CompressionTypes::Order:: "gz";
12
- - exec_in: |
13
- if [ $$install_recommends = false ]; then
14
- echo 'APT::Install-Recommends "0";' >> /etc/apt/apt.conf.d/01norecommend
15
- echo 'APT::Install-Suggests "0";' >> /etc/apt/apt.conf.d/01norecommend
16
- fi
17
12
  - write_in:
18
13
  - /etc/apt/apt.conf.d/02nocache
19
14
  - |
@@ -11,8 +11,3 @@
11
11
 
12
12
  - update_initramfs:
13
13
  - exec_in: update-initramfs -u
14
-
15
- - reconfigure_extlinux:
16
- - exec_in: apt-get -y --force-yes --install-suggests --reinstall install extlinux
17
- - exec_in: extlinux --install /boot/extlinux 2>&1
18
- - exec_in: extlinux-update 2>&1
@@ -0,0 +1,36 @@
1
+ - install_extlinux:
2
+ - check_cmd_in: extlinux
3
+ - exec_in: DISTRIB_TITLE="$$kameleon_recipe_name"
4
+ - exec_in: extlinux --install /boot/extlinux 2>&1
5
+ - exec_in: |
6
+ MBR_PATH=
7
+ PATHS=("/usr/share/syslinux/mbr.bin"
8
+ "/usr/lib/bios/syslinux/mbr.bin"
9
+ "/usr/lib/syslinux/bios/mbr.bin"
10
+ "/usr/lib/extlinux/mbr.bin"
11
+ "/usr/lib/syslinux/mbr.bin")
12
+ for element in "${PATHS[@]}"
13
+ do
14
+ if [ -f "$element" ]; then
15
+ MBR_PATH="$element"
16
+ break
17
+ fi
18
+ done
19
+ if [ "$MBR_PATH" == "" ]; then
20
+ fail "unable to locate the extlinux mbr"
21
+ else
22
+ dd if="$MBR_PATH" of="$(__find_linux_boot_device | sed 's/[0-9]*//g')" bs=440 2>&1
23
+ fi
24
+ - write_in:
25
+ - /boot/extlinux/extlinux.conf
26
+ - |
27
+ default ${DISTRIB_TITLE^}
28
+ timeout 1
29
+
30
+ label ${DISTRIB_TITLE^}
31
+ kernel ../`basename /boot/vmlinuz*`
32
+ initrd ../`basename /boot/init*`
33
+ # the net.ifnames option is disable to get default net interface
34
+ # names according to this page:
35
+ # https://wiki.archlinux.org/index.php/Network_Configuration#Device_names
36
+ append root=UUID=`blkid -s UUID -o value $(__find_linux_boot_device)` rw net.ifnames=0
@@ -9,33 +9,39 @@
9
9
 
10
10
  - install_vbox_guest_additions:
11
11
  - exec_in: echo "VirtualBox Guest Additions..."
12
- - exec_in: wget http://download.virtualbox.org/virtualbox/4.3.8/VBoxGuestAdditions_4.3.8.iso
13
- - exec_in: sudo mkdir /media/VBoxGuestAdditions
14
- - exec_in: sudo mount -o loop,ro VBoxGuestAdditions_4.3.8.iso /media/VBoxGuestAdditions
15
- - exec_in: sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run --nox11
16
- - exec_in: rm VBoxGuestAdditions_4.3.8.iso
17
- - exec_in: sudo umount /media/VBoxGuestAdditions
18
- - exec_in: sudo rmdir /media/VBoxGuestAdditions
12
+ - download_file_in:
13
+ - "http://download.virtualbox.org/virtualbox/4.3.8/VBoxGuestAdditions_4.3.8.iso"
14
+ - VBoxGuestAdditions_4.3.8.iso
15
+ - exec_in: mkdir /media/VBoxGuestAdditions
16
+ - exec_in: mount -o loop VBoxGuestAdditions_4.3.8.iso /media/VBoxGuestAdditions
17
+ - exec_in: yes|sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run --nox11 || true 2>&1
18
+ - exec_in: rm -f VBoxGuestAdditions_4.3.8.iso
19
+ - exec_in: umount /media/VBoxGuestAdditions
20
+ - exec_in: rmdir /media/VBoxGuestAdditions
19
21
 
20
22
  - install_puppet:
21
23
  - exec_in: echo "Installing puppet..."
22
- - exec_in: wget -q http://apt.puppetlabs.com/puppetlabs-release-stable.deb -O /tmp/puppetlabs-release-stable.deb
23
- - exec_in: dpkg -i "/tmp/puppetlabs-release-stable.deb"
24
+ - download_file_in:
25
+ - "http://apt.puppetlabs.com/puppetlabs-release-stable.deb"
26
+ - puppetlabs-release-stable.deb
27
+ - exec_in: dpkg -i "puppetlabs-release-stable.deb"
24
28
  - exec_in: apt-get update
25
29
  - exec_in: apt-get install puppet -y --force-yes
26
- - exec_in: rm -f /tmp/puppetlabs-release-stable.deb
30
+ - exec_in: rm -f puppetlabs-release-stable.deb
27
31
 
28
32
  - install_chef:
29
33
  - exec_in: curl -L https://www.opscode.com/chef/install.sh -k | bash
30
34
 
31
35
  - copy_insecure_sshkey:
32
- - exec_in: mkdir -p /home/$$user_name/.ssh/
33
- - exec_in: chmod 0755 /home/$$user_name/.ssh/
34
- - exec_in: echo -e 'y\n' | ssh-keygen -q -t dsa -f /home/$$user_name/.ssh/id_rsa -N ''
35
- - write_in:
36
- - /home/$$user_name/.ssh/authorized_keys
37
- - |
38
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== $$user_name insecure public key
36
+ - exec_in: mkdir -pm 700 /home/$$user_name/.ssh/
37
+ - download_file_in:
38
+ - "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant"
39
+ - /home/$$user_name/.ssh/id_rsa
40
+ - download_file_in:
41
+ - "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub"
42
+ - /home/$$user_name/.ssh/id_rsa.pub
43
+ - exec_in: cp /home/$$user_name/.ssh/id_rsa.pub /home/$$user_name/.ssh/authorized_keys
44
+ - exec_in: chmod 0600 /home/$$user_name/.ssh/*
39
45
 
40
46
  - config_ssh:
41
47
  - exec_in: echo "UseDNS no" >> /etc/ssh/sshd_config
@@ -49,4 +55,28 @@
49
55
  AddressFamily inet
50
56
  - exec_in: chmod 0600 /home/$$user_name/.ssh/config
51
57
  - exec_in: rsync -ah /home/$$user_name/.ssh/ /root/.ssh/
52
- - exec_in: chown "$$user_name:" -R /home/$$user_name
58
+ - exec_in: chown "$$user_name:$$user_name" -R /home/$$user_name
59
+
60
+ - customize_motd:
61
+ - exec_in: echo 'Welcome to your Vagrant-built virtual machine.' > /etc/motd
62
+
63
+ - cleanup:
64
+ - exec_in: rm -rf /tmp/* || true
65
+ - exec_in: rm -rf /var/tmp/* || true
66
+ - exec_in: apt-get -y remove linux-headers-$(uname -r) build-essential
67
+ - exec_in: echo "cleaning up dhcp leases"
68
+ - exec_in: rm -f /var/lib/dhcp/*
69
+ - exec_in: echo "cleaning up udev rules"
70
+ - exec_in: rm -f /etc/udev/rules.d/70-persistent-net.rules
71
+ - exec_in: mkdir /etc/udev/rules.d/70-persistent-net.rules
72
+ - exec_in: rm -rf /dev/.udev/
73
+ - exec_in: rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
74
+ - exec_in: |
75
+ echo "Adding a 2 sec delay to the interface up, to make the dhclient happy"
76
+ echo "pre-up sleep 2" >> /etc/network/interfaces
77
+
78
+ - nullify_freespace:
79
+ - exec_in: |
80
+ echo "Nullify freespace..."
81
+ dd if=/dev/zero of=/bigemptyfile bs=1M 2>&1 >/dev/null || true
82
+ rm -f /bigemptyfile