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.
- data/.editorconfig +0 -0
- data/.env +2 -6
- data/CHANGELOG.rst +74 -1
- data/Gemfile +20 -2
- data/README.rst +35 -25
- data/Thorfile +29 -0
- data/contrib/kameleon_bashrc.sh +61 -0
- data/contrib/polipo_env.sh +3 -2
- data/kameleon-builder.gemspec +3 -10
- data/lib/kameleon.rb +10 -14
- data/lib/kameleon/cli.rb +92 -105
- data/lib/kameleon/context.rb +76 -43
- data/lib/kameleon/engine.rb +147 -103
- data/lib/kameleon/environment.rb +10 -5
- data/lib/kameleon/error.rb +1 -32
- data/lib/kameleon/persistent_cache.rb +127 -29
- data/lib/kameleon/recipe.rb +63 -106
- data/lib/kameleon/shell.rb +32 -17
- data/lib/kameleon/step.rb +18 -1
- data/lib/kameleon/ui.rb +141 -0
- data/lib/kameleon/utils.rb +9 -0
- data/templates/{debian7-chroot.yaml → chroot/debian7-amd64.yaml} +29 -21
- data/templates/{docker-debian7.yaml → docker/debian7.yaml} +5 -5
- data/templates/extend.erb +2 -2
- data/templates/{debian7-g5k.yaml → grid5000/debian7.yaml} +1 -1
- data/templates/{archlinux-desktop.yaml → qemu/archlinux-desktop-i686.yaml} +2 -2
- data/templates/qemu/archlinux-desktop-x86_64.yaml +25 -0
- data/templates/qemu/archlinux-i686.yaml +25 -0
- data/templates/{archlinux.yaml → qemu/archlinux-x86_64.yaml} +37 -34
- data/templates/qemu/centos6.5-x86_64.yaml +113 -0
- data/templates/qemu/centos7-x86_64.yaml +119 -0
- data/templates/{debian7.yaml → qemu/debian7-amd64.yaml} +45 -40
- data/templates/{debian7-desktop.yaml → qemu/debian7-desktop-amd64.yaml} +2 -3
- data/templates/{debian7-kameleon.yaml → qemu/debian7-kameleon-amd64.yaml} +3 -6
- data/templates/{debian7-oar-dev.yaml → qemu/debian7-oar-amd64.yaml} +2 -2
- data/templates/qemu/debian8-amd64.yaml +25 -0
- data/templates/{fedora20-desktop.yaml → qemu/fedora20-desktop-x86_64.yaml} +2 -2
- data/templates/qemu/fedora20-x86_64.yaml +116 -0
- data/templates/{ubuntu-12.04.yaml → qemu/ubuntu-12.04-amd64.yaml} +42 -38
- data/templates/{ubuntu-12.04-desktop.yaml → qemu/ubuntu-12.04-desktop-amd64.yaml} +3 -3
- data/templates/{ubuntu-14.04.yaml → qemu/ubuntu-14.04-amd64.yaml} +2 -2
- data/templates/{ubuntu-14.04-desktop.yaml → qemu/ubuntu-14.04-desktop-amd64.yaml} +2 -2
- data/templates/steps/aliases/defaults.yaml +19 -13
- data/templates/steps/bootstrap/archlinux/arch_bootstrap.yaml +11 -19
- data/templates/steps/bootstrap/debian/debootstrap.yaml +10 -11
- data/templates/steps/bootstrap/debian/debootstrap_arm.yaml +11 -19
- data/templates/steps/bootstrap/fedora/init_pxeboot.yaml +13 -0
- data/templates/steps/bootstrap/fedora/yum_bootstrap.yaml +45 -0
- data/templates/steps/bootstrap/initialize_disk.yaml +16 -0
- data/templates/steps/bootstrap/initialize_disk_chroot.yaml +10 -14
- data/templates/steps/bootstrap/install_requirements.yaml +3 -0
- data/templates/steps/bootstrap/prepare_docker.yaml +7 -7
- data/templates/steps/bootstrap/prepare_qemu.yaml +20 -26
- data/templates/steps/bootstrap/prepare_virtualbox.yaml +63 -0
- data/templates/steps/bootstrap/start_chroot.yaml +2 -13
- data/templates/steps/bootstrap/start_qemu.yaml +50 -53
- data/templates/steps/bootstrap/start_virtualbox.yaml +37 -0
- data/templates/steps/bootstrap/switch_context_qemu.yaml +64 -0
- data/templates/steps/bootstrap/switch_context_virtualbox.yaml +66 -0
- data/templates/steps/breakpoint.yaml +2 -1
- data/templates/steps/checkpoints/docker.yaml +14 -11
- data/templates/steps/checkpoints/qcow2.yaml +26 -24
- data/templates/steps/checkpoints/qemu.yaml +30 -36
- data/templates/steps/checkpoints/virtualbox.yaml +21 -0
- data/templates/steps/disable_checkpoint.yaml +3 -0
- data/templates/steps/enable_checkpoint.yaml +5 -0
- data/templates/steps/export/qemu_save_appliance.yaml +52 -0
- data/templates/steps/export/virtualbox_save_appliance.yaml +67 -0
- data/templates/steps/setup/archlinux/install_bootloader.yaml +23 -0
- data/templates/steps/setup/centos/6.5/configure_network.yaml +31 -0
- data/templates/steps/setup/centos/6.5/configure_system.yaml +27 -0
- data/templates/steps/setup/debian/configure_apt.yaml +1 -6
- data/templates/steps/setup/debian/configure_kernel.yaml +0 -5
- data/templates/steps/setup/debian/install_bootloader.yaml +36 -0
- data/templates/steps/setup/debian/setup_vagrant_box.yaml +48 -18
- data/templates/steps/setup/debian/upgrade_system.yaml +2 -7
- data/templates/steps/setup/fedora/configure_kernel.yaml +9 -0
- data/templates/steps/setup/fedora/configure_keyboard.yaml +12 -0
- data/templates/steps/setup/fedora/configure_network.yaml +9 -1
- data/templates/steps/setup/fedora/configure_system.yaml +20 -45
- data/templates/steps/setup/fedora/install_bootloader.yaml +58 -0
- data/templates/steps/setup/fedora/minimal_install.yaml +3 -0
- data/templates/steps/setup/fedora/update_system.yaml +13 -5
- data/templates/steps/setup/ubuntu/configure_apt.yaml +4 -9
- data/templates/vagrant/debian7-amd64.yaml +130 -0
- data/templates/virtualbox/archlinux-desktop-i686.yaml +25 -0
- data/templates/virtualbox/archlinux-desktop-x86_64.yaml +28 -0
- data/templates/virtualbox/archlinux-i686.yaml +28 -0
- data/templates/virtualbox/archlinux-x86_64.yaml +109 -0
- data/templates/virtualbox/centos6.5-i386.yaml +39 -0
- data/templates/virtualbox/centos6.5-x86_64.yaml +111 -0
- data/templates/virtualbox/centos7-x86_64.yaml +116 -0
- data/{docs/source/debian7.yaml → templates/virtualbox/debian7-amd64.yaml} +53 -52
- data/templates/virtualbox/debian7-desktop-amd64.yaml +25 -0
- data/templates/{fedora-rawhide.yaml → virtualbox/debian7-i386.yaml} +12 -11
- data/templates/virtualbox/debian7-kameleon-amd64.yaml +38 -0
- data/templates/virtualbox/debian7-oar-amd64.yaml +51 -0
- data/templates/{debian-testing.yaml → virtualbox/debian8-amd64.yaml} +3 -3
- data/templates/virtualbox/debian8-i386.yaml +31 -0
- data/templates/virtualbox/fedora20-x86_64.yaml +116 -0
- data/templates/virtualbox/ubuntu-12.04-amd64.yaml +128 -0
- data/templates/virtualbox/ubuntu-12.04-desktop-amd64.yaml +25 -0
- data/templates/virtualbox/ubuntu-14.04-amd64.yaml +25 -0
- data/templates/virtualbox/ubuntu-14.04-desktop-amd64.yaml +27 -0
- data/version.txt +1 -1
- metadata +67 -212
- data/Rakefile +0 -24
- data/docs/.gitignore +0 -1
- data/docs/Makefile +0 -181
- data/docs/README.md +0 -17
- data/docs/make.bat +0 -242
- data/docs/source/_static/.gitignore +0 -0
- data/docs/source/_static/centos.png +0 -0
- data/docs/source/_static/debian.png +0 -0
- data/docs/source/_static/kameleon-logo.png +0 -0
- data/docs/source/_static/kameleon-logo.xcf +0 -0
- data/docs/source/_static/kameleon-long.png +0 -0
- data/docs/source/_static/ubuntu.png +0 -0
- data/docs/source/_themes/sphinx_rtd_theme/__init__.py +0 -17
- data/docs/source/_themes/sphinx_rtd_theme/breadcrumbs.html +0 -19
- data/docs/source/_themes/sphinx_rtd_theme/footer.html +0 -32
- data/docs/source/_themes/sphinx_rtd_theme/layout.html +0 -160
- data/docs/source/_themes/sphinx_rtd_theme/layout_old.html +0 -205
- data/docs/source/_themes/sphinx_rtd_theme/search.html +0 -50
- data/docs/source/_themes/sphinx_rtd_theme/searchbox.html +0 -7
- data/docs/source/_themes/sphinx_rtd_theme/static/css/badge_only.css +0 -1
- data/docs/source/_themes/sphinx_rtd_theme/static/css/theme.css +0 -4
- data/docs/source/_themes/sphinx_rtd_theme/static/fonts/FontAwesome.otf +0 -0
- data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.eot +0 -0
- data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.svg +0 -414
- data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.ttf +0 -0
- data/docs/source/_themes/sphinx_rtd_theme/static/fonts/fontawesome-webfont.woff +0 -0
- data/docs/source/_themes/sphinx_rtd_theme/static/js/theme.js +0 -47
- data/docs/source/_themes/sphinx_rtd_theme/theme.conf +0 -8
- data/docs/source/_themes/sphinx_rtd_theme/versions.html +0 -37
- data/docs/source/aliases.rst +0 -31
- data/docs/source/atlas_debian_g5k.yaml +0 -36
- data/docs/source/checkpoint.rst +0 -30
- data/docs/source/commands.rst +0 -63
- data/docs/source/conf.py +0 -262
- data/docs/source/context.rst +0 -47
- data/docs/source/debian_customized.yaml +0 -28
- data/docs/source/debian_customized_g5k.yaml +0 -21
- data/docs/source/faq.rst +0 -43
- data/docs/source/getting_started.rst +0 -260
- data/docs/source/grid5000_tutorial.rst +0 -525
- data/docs/source/index.rst +0 -53
- data/docs/source/install_atlas.yaml +0 -25
- data/docs/source/install_hpl.yaml +0 -24
- data/docs/source/installation.rst +0 -51
- data/docs/source/persistent_cache.rst +0 -34
- data/docs/source/recipe.rst +0 -177
- data/docs/source/tau_install.yaml +0 -19
- data/docs/source/tau_install_g5k.yaml +0 -25
- data/docs/source/use_cases.rst +0 -93
- data/docs/source/workspace.rst +0 -13
- data/lib/kameleon/logger.rb +0 -56
- data/omnibus/.gitignore +0 -11
- data/omnibus/.kitchen.yml +0 -25
- data/omnibus/Berksfile +0 -9
- data/omnibus/Berksfile.lock +0 -25
- data/omnibus/Gemfile +0 -12
- data/omnibus/README.md +0 -94
- data/omnibus/config/projects/kameleon.rb +0 -23
- data/omnibus/config/software/kameleon.rb +0 -24
- data/omnibus/config/software/polipo.rb +0 -30
- data/omnibus/config/software/ruby.rb +0 -158
- data/omnibus/files/mac_dmg/Resources/background.png +0 -0
- data/omnibus/files/mac_dmg/Resources/icon.png +0 -0
- data/omnibus/files/mac_pkg/Resources/background.png +0 -0
- data/omnibus/files/mac_pkg/Resources/license.html +0 -1
- data/omnibus/files/mac_pkg/Resources/welcome.html +0 -9
- data/omnibus/omnibus.rb +0 -27
- data/omnibus/package-scripts/kameleon/makeselfinst +0 -27
- data/omnibus/package-scripts/kameleon/postrm +0 -9
- data/templates/fedora20.yaml +0 -105
- data/templates/steps/bootstrap/archlinux/install_bootloader.yaml +0 -46
- data/templates/steps/bootstrap/archlinux/populate_disk.yaml +0 -39
- data/templates/steps/bootstrap/fedora/liveos_bootstrap.yaml +0 -123
- data/templates/steps/bootstrap/initialize_disk_qemu.yaml +0 -72
- data/templates/steps/bootstrap/install_bootloader.yaml +0 -42
- data/templates/steps/bootstrap/ubuntu/debootstrap.yaml +0 -27
- data/templates/steps/export/save_appliance.yaml +0 -58
- data/templates/steps/export/save_vagrant_box.yaml +0 -29
- data/templates/vagrant-debian7.yaml +0 -31
@@ -0,0 +1,63 @@
|
|
1
|
+
- insecure_ssh_key: $$kameleon_cwd/insecure_ssh_key
|
2
|
+
|
3
|
+
- download_boot2kameleon_iso:
|
4
|
+
- download_file_local:
|
5
|
+
- $$boot2kameleon_url
|
6
|
+
- $$kameleon_cwd/boot2kameleon.iso
|
7
|
+
|
8
|
+
- create_vdi_disk:
|
9
|
+
- exec_local: rm -f $$virtualbox_image_disk
|
10
|
+
- exec_local: VBoxManage createhd --filename $$virtualbox_image_disk --size $$virtualbox_image_size 2>&1
|
11
|
+
|
12
|
+
- register_vm:
|
13
|
+
- exec_local: echo "Creating virtual machine"
|
14
|
+
- exec_local: VBoxManage createvm --name $$virtualbox_vmid --register
|
15
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --ostype $$virtualbox_os_type
|
16
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --boot1 dvd
|
17
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --boot2 disk
|
18
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --memory $$virtualbox_memory_size
|
19
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --acpi on
|
20
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --nic1 nat --nictype1 82540EM --cableconnected1 on
|
21
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --natpf1 guestssh,tcp,,$$virtualbox_ssh_port,,22
|
22
|
+
- exec_local: VBoxManage storagectl $$virtualbox_vmid --name "IDE Controller" --add ide
|
23
|
+
- exec_local: |
|
24
|
+
VBoxManage storageattach $$virtualbox_vmid \
|
25
|
+
--storagectl "IDE Controller" \
|
26
|
+
--port 0 \
|
27
|
+
--device 0 \
|
28
|
+
--type hdd \
|
29
|
+
--medium $$virtualbox_image_disk
|
30
|
+
- exec_local: VBoxManage storageattach $$virtualbox_vmid --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium $$kameleon_cwd/boot2kameleon.iso
|
31
|
+
|
32
|
+
- delete_vm:
|
33
|
+
- on_checkpoint: skip
|
34
|
+
- on_export_clean:
|
35
|
+
- exec_local: |
|
36
|
+
if VBoxManage list vms | grep -q $$virtualbox_vmid; then
|
37
|
+
echo "Removing the virtualbox vm ($$virtualbox_vmid)..."
|
38
|
+
VBoxManage unregistervm --delete $$virtualbox_vmid 2>&1
|
39
|
+
fi
|
40
|
+
|
41
|
+
- configure_ssh_access:
|
42
|
+
- download_file_local:
|
43
|
+
- $$insecure_ssh_key_url
|
44
|
+
- $$insecure_ssh_key
|
45
|
+
- exec_local: chmod 600 $$insecure_ssh_key
|
46
|
+
|
47
|
+
- create_ssh_config:
|
48
|
+
- write_local:
|
49
|
+
- $$ssh_config_file
|
50
|
+
- |
|
51
|
+
Host $${kameleon_recipe_name}
|
52
|
+
HostName 127.0.0.1
|
53
|
+
Port $${virtualbox_ssh_port}
|
54
|
+
User root
|
55
|
+
IdentityFile $$insecure_ssh_key
|
56
|
+
UserKnownHostsFile /dev/null
|
57
|
+
StrictHostKeyChecking no
|
58
|
+
PasswordAuthentication no
|
59
|
+
IdentitiesOnly yes
|
60
|
+
LogLevel FATAL
|
61
|
+
ForwardAgent yes
|
62
|
+
Compression yes
|
63
|
+
Protocol 2
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# # Bootstrap
|
2
2
|
- mount_chroot:
|
3
|
-
- on_checkpoint: redo
|
4
3
|
- check_cmd_out: chroot
|
5
4
|
- exec_out: mount -o bind /dev $$rootfs/dev
|
6
5
|
- exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
|
7
6
|
- exec_out: mount -t proc /proc $$rootfs/proc
|
8
7
|
- exec_out: mount -t sysfs /sys $$rootfs/sys
|
9
8
|
- exec_out: test -f $$rootfs/etc/mtab || cat /proc/mounts > $$rootfs/etc/mtab
|
9
|
+
- exec_out: cat /etc/resolv.conf > $$rootfs/etc/resolv.conf
|
10
10
|
- on_setup_clean:
|
11
|
+
- exec_out: rm -f $$rootfs/etc/resolv.conf
|
11
12
|
- exec_out: echo try umount $$rootfs/sys... ; mountpoint -q $$rootfs/sys && umount -f -l $$rootfs/sys || true
|
12
13
|
- exec_out: echo try umount $$rootfs/proc... ; mountpoint -q $$rootfs/proc && umount -f -l $$rootfs/proc || true
|
13
14
|
- exec_out: echo try umount $$rootfs/dev/pts... ; mountpoint -q $$rootfs/dev/pts && umount -f -l $$rootfs/dev/pts || true
|
@@ -17,7 +18,6 @@
|
|
17
18
|
- cpuset_name: kameleon
|
18
19
|
|
19
20
|
- init_cpuset:
|
20
|
-
- on_checkpoint: redo
|
21
21
|
- on_setup_init:
|
22
22
|
- exec_in: |
|
23
23
|
if [ ! -f $$cpuset_base_name/cpus ]; then
|
@@ -32,7 +32,6 @@
|
|
32
32
|
- exec_in: echo $$ > $$cpuset_base_name/$$cpuset_name/tasks
|
33
33
|
|
34
34
|
- clean_cpuset:
|
35
|
-
- on_checkpoint: redo
|
36
35
|
- on_setup_clean:
|
37
36
|
- exec_out: CPUSET_DIR="$$rootfs/$$cpuset_base_name"
|
38
37
|
- exec_out: |
|
@@ -50,13 +49,3 @@
|
|
50
49
|
rmdir $CPUSET_DIR/$$cpuset_name
|
51
50
|
fi
|
52
51
|
- exec_out: echo try umount $CPUSET_DIR... ; mountpoint -q $CPUSET_DIR && umount -f -l $CPUSET_DIR || true
|
53
|
-
|
54
|
-
- enable_checkpoint:
|
55
|
-
- on_checkpoint: redo
|
56
|
-
- on_setup_init:
|
57
|
-
- exec_out: touch $$kameleon_cwd/checkpoint_enabled
|
58
|
-
|
59
|
-
- disable_checkpoint:
|
60
|
-
- on_checkpoint: redo
|
61
|
-
- on_setup_clean:
|
62
|
-
- exec_out: rm -f $$kameleon_cwd/checkpoint_enabled
|
@@ -1,75 +1,72 @@
|
|
1
|
+
- boot_timeout: 30
|
2
|
+
- shutdown_timeout: 10
|
3
|
+
|
1
4
|
- start_qemu_vm:
|
2
5
|
- on_checkpoint: redo
|
3
|
-
-
|
4
|
-
-
|
5
|
-
-
|
6
|
-
- exec_out: |
|
6
|
+
- check_cmd_local: qemu-system-$$qemu_arch
|
7
|
+
- exec_local: echo "Starting qemu..."
|
8
|
+
- exec_local: |
|
7
9
|
if [ $$qemu_enable_kvm = true ]; then
|
8
10
|
ENABLE_KVM="-enable-kvm"
|
9
11
|
fi
|
10
|
-
-
|
12
|
+
- exec_local: |
|
11
13
|
if [ -f "vm_state_to_load.txt" ]
|
12
14
|
then
|
13
15
|
SAVED_STATE="$(cat vm_state_to_load.txt)"
|
14
16
|
LOADVM="-loadvm $SAVED_STATE"
|
15
17
|
rm -f vm_state_to_load.txt
|
16
18
|
fi
|
17
|
-
-
|
18
|
-
|
19
|
-
$ENABLE_KVM
|
20
|
-
-
|
19
|
+
- exec_local: |
|
20
|
+
qemu-system-$$qemu_arch \
|
21
|
+
$ENABLE_KVM \
|
22
|
+
-cdrom $$kameleon_cwd/boot2kameleon.iso \
|
23
|
+
-drive file="$$qemu_image_disk",cache=unsafe,media=disk,if=virtio,id=drive0 \
|
21
24
|
-smp $${qemu_cpu} \
|
22
25
|
-m $$qemu_memory_size \
|
23
26
|
-rtc base=localtime \
|
24
27
|
-net nic,model=virtio -net user \
|
25
28
|
-redir tcp:$${qemu_ssh_port}::22 \
|
26
|
-
-monitor
|
27
|
-
-
|
28
|
-
|
29
|
-
-
|
30
|
-
|
31
|
-
until ssh-keyscan -4 -p $$qemu_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null
|
29
|
+
-monitor unix:$$qemu_monitor_socket,server,nowait \
|
30
|
+
-pidfile $$qemu_pidfile \
|
31
|
+
-daemonize -vnc :1 $LOADVM
|
32
|
+
- exec_local: |
|
33
|
+
NEXT_WAIT_TIME=0
|
34
|
+
until ssh-keyscan -T 1 -4 -p $$qemu_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null || [ $NEXT_WAIT_TIME -eq $$boot_timeout ];
|
32
35
|
do
|
33
|
-
echo -
|
34
|
-
sleep 1
|
36
|
+
echo -en "\rWaiting for SSH to become available for out_context...($(( $$boot_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
35
37
|
done
|
36
|
-
echo "
|
37
|
-
|
38
|
-
-
|
39
|
-
|
40
|
-
- on_setup_clean:
|
41
|
-
- exec_in: echo "Removing insecure ssh key..."
|
42
|
-
- exec_in: |
|
43
|
-
grep -f /root/.ssh/kameleon_insecure_public_key -v /root/.ssh/authorized_keys \
|
44
|
-
| cat > /root/.ssh/authorized_keys
|
45
|
-
rm -f /root/.ssh/kameleon_insecure_public_key
|
46
|
-
- exec_out: echo -n "Shutting down qemu virtual machine"
|
47
|
-
- exec_in: |
|
48
|
-
sleep 2 && shutdown -h now &
|
49
|
-
- exec_out: |
|
50
|
-
while nc -w 1 -z localhost $$qemu_monitor_port
|
51
|
-
do
|
52
|
-
sleep 1
|
53
|
-
echo -n "."
|
54
|
-
done
|
55
|
-
echo " ~> OK"
|
38
|
+
echo ""
|
39
|
+
- rescue:
|
40
|
+
- exec_local: ssh-keyscan -T 1 -4 -p $$qemu_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null
|
41
|
+
- breakpoint: Failed to connect to VM via SSH. Please verify the VM successfully booted with a vnc client.
|
56
42
|
|
57
43
|
- force_shutdown_qemu_vm:
|
58
44
|
- on_checkpoint: redo
|
59
|
-
-
|
60
|
-
- exec_out: |
|
61
|
-
if nc -w 1 -z localhost $$qemu_monitor_port 2>/dev/null
|
62
|
-
then
|
63
|
-
echo "Shutting down qemu virtual machine..."
|
64
|
-
echo "system_reset" | nc localhost $$qemu_monitor_port 1>/dev/null 2>&1
|
65
|
-
fi
|
66
|
-
|
67
|
-
- enable_checkpoint:
|
68
|
-
- on_checkpoint: redo
|
69
|
-
- on_setup_init:
|
70
|
-
- exec_out: touch $$kameleon_cwd/checkpoint_enabled
|
71
|
-
|
72
|
-
- disable_checkpoint:
|
73
|
-
- on_checkpoint: redo
|
45
|
+
- check_cmd_local: socat
|
74
46
|
- on_setup_clean:
|
75
|
-
-
|
47
|
+
- exec_local: |
|
48
|
+
if [ -f $$qemu_pidfile ]; then
|
49
|
+
_QEMU_PID=$(cat $$qemu_pidfile)
|
50
|
+
if [ -S $$qemu_monitor_socket ]; then
|
51
|
+
NEXT_WAIT_TIME=0
|
52
|
+
echo system_powerdown | socat - UNIX-CONNECT:$$qemu_monitor_socket
|
53
|
+
while ps -p $_QEMU_PID > /dev/null && [ $NEXT_WAIT_TIME -lt $$shutdown_timeout ];
|
54
|
+
do
|
55
|
+
sleep 1
|
56
|
+
echo -en "\rWaiting for qemu virtual machine to shutdown...($(( $$shutdown_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
57
|
+
done
|
58
|
+
fi
|
59
|
+
if ps -p $_QEMU_PID > /dev/null; then
|
60
|
+
if [ -S $$qemu_monitor_socket ]; then
|
61
|
+
echo " ~> Failed"
|
62
|
+
fi
|
63
|
+
echo "Killing QEMU (pid: $_QEMU_PID)..."
|
64
|
+
kill -9 "$_QEMU_PID"
|
65
|
+
else
|
66
|
+
if [ -S $$qemu_monitor_socket ]; then
|
67
|
+
echo " ~> Done"
|
68
|
+
fi
|
69
|
+
fi
|
70
|
+
rm -f $$qemu_pidfile
|
71
|
+
fi
|
72
|
+
rm -f $$qemu_monitor_socket
|
@@ -0,0 +1,37 @@
|
|
1
|
+
- boot_timeout: 30
|
2
|
+
- shutdown_timeout: 10
|
3
|
+
|
4
|
+
- start_vm:
|
5
|
+
- on_checkpoint: redo
|
6
|
+
- exec_local: echo "Starting virtualbox..."
|
7
|
+
- exec_local: VBoxManage startvm $$virtualbox_vmid --type headless 2>&1
|
8
|
+
- exec_local: |
|
9
|
+
NEXT_WAIT_TIME=0
|
10
|
+
until ssh-keyscan -T 1 -4 -p $$virtualbox_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null || [ $NEXT_WAIT_TIME -eq $$boot_timeout ];
|
11
|
+
do
|
12
|
+
echo -en "\rWaiting for SSH to become available for out_context...($(( $$boot_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
13
|
+
done
|
14
|
+
echo ""
|
15
|
+
- rescue:
|
16
|
+
- exec_local: ssh-keyscan -T 1 -4 -p $$virtualbox_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null
|
17
|
+
- breakpoint: Failed to connect to VM via SSH. Please verify the VM successfully booted by looking at the VirtualBox GUI.
|
18
|
+
|
19
|
+
- shutdown_vm:
|
20
|
+
- on_checkpoint: redo
|
21
|
+
- on_setup_clean:
|
22
|
+
- exec_local: |
|
23
|
+
if VBoxManage list runningvms | grep -q $$virtualbox_vmid; then
|
24
|
+
VBoxManage controlvm $$virtualbox_vmid acpipowerbutton
|
25
|
+
NEXT_WAIT_TIME=0
|
26
|
+
until $(VBoxManage showvminfo --machinereadable $$virtualbox_vmid | grep -q ^VMState=.poweroff.) || [ $NEXT_WAIT_TIME -eq $$shutdown_timeout ];
|
27
|
+
do
|
28
|
+
sleep 1
|
29
|
+
echo -en "\rWaiting for machine $$virtualbox_vmid to shutdown...($(( $$shutdown_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
30
|
+
done
|
31
|
+
fi
|
32
|
+
- exec_local: |
|
33
|
+
if VBoxManage list runningvms | grep -q $$virtualbox_vmid; then
|
34
|
+
echo " ~> Failed"
|
35
|
+
echo "Forcing shutdown !"
|
36
|
+
VBoxManage controlvm $$virtualbox_vmid poweroff
|
37
|
+
fi
|
@@ -0,0 +1,64 @@
|
|
1
|
+
- reboot_timeout: 30
|
2
|
+
|
3
|
+
- prepare_sshd:
|
4
|
+
- exec_out: mkdir -p $$rootfs/root/.ssh/
|
5
|
+
- exec_out: cat /root/.ssh/authorized_keys >> $$rootfs/root/.ssh/authorized_keys
|
6
|
+
- exec_out: cat /root/.ssh/authorized_keys >> $$rootfs/root/.ssh/authorized_keys_to_remove
|
7
|
+
- exec_out: chmod 600 -R $$rootfs/root/.ssh
|
8
|
+
- on_setup_clean:
|
9
|
+
- exec_in: grep -v -f /root/.ssh/authorized_keys_to_remove /root/.ssh/authorized_keys || true
|
10
|
+
- exec_in: rm -f /root/.ssh/authorized_keys_to_remove
|
11
|
+
|
12
|
+
- mount_chroot:
|
13
|
+
- exec_out: mount -o bind /dev $$rootfs/dev
|
14
|
+
- exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
|
15
|
+
- exec_out: mount -t proc /proc $$rootfs/proc
|
16
|
+
- exec_out: mount -t sysfs /sys $$rootfs/sys
|
17
|
+
|
18
|
+
- create_fstab:
|
19
|
+
- write_out:
|
20
|
+
- $$rootfs/etc/fstab
|
21
|
+
- |
|
22
|
+
# /etc/fstab: static file system information.
|
23
|
+
#
|
24
|
+
# <file system> <mount point> <type> <options> <dump> <pass>
|
25
|
+
UUID=`blkid -s UUID -o value $${disk_device}1` / $$filesystem_type errors=remount-ro 0 1
|
26
|
+
|
27
|
+
- install_initial_bootloader:
|
28
|
+
- exec_out: mkdir -p $$rootfs/boot/extlinux
|
29
|
+
- exec_out: extlinux --install $$rootfs/boot/extlinux 2>&1
|
30
|
+
- exec_out: MBR_PATH="/usr/lib/extlinux/mbr.bin"
|
31
|
+
- exec_out: dd if="$MBR_PATH" of="$$disk_device" bs=440 2>&1
|
32
|
+
- write_out:
|
33
|
+
- $$rootfs/boot/extlinux/extlinux.conf
|
34
|
+
- |
|
35
|
+
default linux
|
36
|
+
timeout 1
|
37
|
+
|
38
|
+
label linux
|
39
|
+
kernel ../`basename $$rootfs/boot/vmlinuz*`
|
40
|
+
append initrd=../`basename $$rootfs/boot/init*` root=UUID=`blkid -s UUID -o value $${disk_device}1` ro
|
41
|
+
|
42
|
+
- umount_all:
|
43
|
+
- umount_out: $$rootfs/sys
|
44
|
+
- umount_out: $$rootfs/proc
|
45
|
+
- umount_out: $$rootfs/dev/pts
|
46
|
+
- umount_out: $$rootfs/dev
|
47
|
+
- umount_out: $$rootfs
|
48
|
+
|
49
|
+
- switch_out2in:
|
50
|
+
- exec_local: echo "Rebooting qemu vm"
|
51
|
+
- exec_local: echo "eject -f ide1-cd0" | socat - UNIX-CONNECT:$$qemu_monitor_socket
|
52
|
+
- exec_local: echo system_reset | socat - UNIX-CONNECT:$$qemu_monitor_socket
|
53
|
+
- exec_local: |
|
54
|
+
NEXT_WAIT_TIME=0
|
55
|
+
until ssh-keyscan -T 1 -4 -p $$qemu_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null || [ $NEXT_WAIT_TIME -eq $$reboot_timeout ];
|
56
|
+
do
|
57
|
+
echo -en "\rWaiting for SSH to become available for in_context...($(( $$reboot_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
58
|
+
done
|
59
|
+
echo ""
|
60
|
+
- rescue:
|
61
|
+
- exec_local: ssh-keyscan -T 1 -4 -p $$qemu_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null
|
62
|
+
- breakpoint: Failed to connect to VM via SSH. Please verify the VM successfully booted by looking at the VirtualBox GUI.
|
63
|
+
|
64
|
+
- reload_context: out
|
@@ -0,0 +1,66 @@
|
|
1
|
+
- reboot_timeout: 30
|
2
|
+
|
3
|
+
- prepare_sshd:
|
4
|
+
- exec_out: mkdir -p $$rootfs/root/.ssh/
|
5
|
+
- exec_out: cat /root/.ssh/authorized_keys >> $$rootfs/root/.ssh/authorized_keys
|
6
|
+
- exec_out: cat /root/.ssh/authorized_keys >> $$rootfs/root/.ssh/authorized_keys_to_remove
|
7
|
+
- exec_out: chmod 600 -R $$rootfs/root/.ssh
|
8
|
+
- on_setup_clean:
|
9
|
+
- exec_in: grep -v -f /root/.ssh/authorized_keys_to_remove /root/.ssh/authorized_keys || true
|
10
|
+
- exec_in: rm -f /root/.ssh/authorized_keys_to_remove
|
11
|
+
|
12
|
+
- mount_chroot:
|
13
|
+
- exec_out: mount -o bind /dev $$rootfs/dev
|
14
|
+
- exec_out: mount -o bind /dev/pts $$rootfs/dev/pts
|
15
|
+
- exec_out: mount -t proc /proc $$rootfs/proc
|
16
|
+
- exec_out: mount -t sysfs /sys $$rootfs/sys
|
17
|
+
|
18
|
+
- create_fstab:
|
19
|
+
- write_out:
|
20
|
+
- $$rootfs/etc/fstab
|
21
|
+
- |
|
22
|
+
# /etc/fstab: static file system information.
|
23
|
+
#
|
24
|
+
# <file system> <mount point> <type> <options> <dump> <pass>
|
25
|
+
UUID=`blkid -s UUID -o value $${disk_device}1` / $$filesystem_type errors=remount-ro 0 1
|
26
|
+
|
27
|
+
- install_initial_bootloader:
|
28
|
+
- exec_out: mkdir -p $$rootfs/boot/extlinux
|
29
|
+
- exec_out: extlinux --install $$rootfs/boot/extlinux 2>&1
|
30
|
+
- exec_out: MBR_PATH="/usr/lib/extlinux/mbr.bin"
|
31
|
+
- exec_out: dd if="$MBR_PATH" of="$$disk_device" bs=440 2>&1
|
32
|
+
- write_out:
|
33
|
+
- $$rootfs/boot/extlinux/extlinux.conf
|
34
|
+
- |
|
35
|
+
default linux
|
36
|
+
timeout 1
|
37
|
+
|
38
|
+
label linux
|
39
|
+
kernel ../`basename $$rootfs/boot/vmlinuz*`
|
40
|
+
append initrd=../`basename $$rootfs/boot/init*` root=UUID=`blkid -s UUID -o value $${disk_device}1` ro
|
41
|
+
|
42
|
+
- umount_all:
|
43
|
+
- umount_out: $$rootfs/sys
|
44
|
+
- umount_out: $$rootfs/proc
|
45
|
+
- umount_out: $$rootfs/dev/pts
|
46
|
+
- umount_out: $$rootfs/dev
|
47
|
+
- umount_out: $$rootfs
|
48
|
+
|
49
|
+
- switch_out2in:
|
50
|
+
- exec_local: echo "Rebooting virtualbox vm ($$virtualbox_vmid)"
|
51
|
+
- exec_local: VBoxManage controlvm $$virtualbox_vmid poweroff 2>&1
|
52
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --boot1 disk
|
53
|
+
- exec_local: VBoxManage modifyvm $$virtualbox_vmid --boot2 dvd
|
54
|
+
- exec_local: VBoxManage startvm $$virtualbox_vmid --type headless 2>&1
|
55
|
+
- exec_local: |
|
56
|
+
NEXT_WAIT_TIME=0
|
57
|
+
until ssh-keyscan -T 1 -4 -p $$virtualbox_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null || [ $NEXT_WAIT_TIME -eq $$reboot_timeout ];
|
58
|
+
do
|
59
|
+
echo -en "\rWaiting for SSH to become available for in_context...($(( $$reboot_timeout - 1 - NEXT_WAIT_TIME++ ))s)"
|
60
|
+
done
|
61
|
+
echo ""
|
62
|
+
- rescue:
|
63
|
+
- exec_local: ssh-keyscan -T 1 -4 -p $$virtualbox_ssh_port localhost 2>&1 | grep -e ssh-rsa -e ssh-dsa &> /dev/null
|
64
|
+
- breakpoint: Failed to connect to VM via SSH. Please verify the VM successfully booted by looking at the VirtualBox GUI.
|
65
|
+
|
66
|
+
- reload_context: out
|
@@ -1,14 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
docker commit $(cat MAIN_CONTAINER_ID) $$docker_image:@microstep_id
|
4
|
-
fi
|
1
|
+
enabled?:
|
2
|
+
- exec_local: test -f $KAMELEON_WORKDIR/MAIN_CONTAINER_ID
|
5
3
|
|
6
|
-
|
7
|
-
|
4
|
+
create:
|
5
|
+
- exec_local: docker commit $(cat $KAMELEON_WORKDIR/MAIN_CONTAINER_ID) $$docker_image:@microstep_id
|
8
6
|
|
9
|
-
|
10
|
-
|
7
|
+
apply:
|
8
|
+
- exec_local: docker tag $$docker_image:@microstep_id $$docker_image:latest
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
list:
|
11
|
+
- exec_local: |
|
12
|
+
docker images | grep $$docker_image | awk '{print $2}'
|
13
|
+
|
14
|
+
clear:
|
15
|
+
- exec_local: |
|
16
|
+
docker images | grep $$docker_image | awk '{print $3}' \
|
17
|
+
| xargs -I {} bash -c "docker rmi {} | cat || true"
|
@@ -1,6 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
enabled?:
|
2
|
+
- exec_local: test -f $$kameleon_cwd/checkpoint_enabled
|
3
|
+
- exec_local: test -e "$$image_disk"
|
4
|
+
|
5
|
+
create:
|
6
|
+
- exec_local: |
|
4
7
|
parent_of_@microstep_id="$(readlink $$image_disk)"
|
5
8
|
pushd $$kameleon_cwd/checkpoints
|
6
9
|
rm -f @microstep_id_checkpoint.qcow2
|
@@ -8,31 +11,30 @@ create: |
|
|
8
11
|
-o backing_file=$(basename "$parent_of_@microstep_id")
|
9
12
|
popd
|
10
13
|
ln -sf $$kameleon_cwd/checkpoints/@microstep_id_checkpoint.qcow2 $$image_disk
|
11
|
-
|
12
14
|
lsmod | grep nbd >/dev/null || modprobe nbd max_part=63
|
13
|
-
|
14
15
|
echo "sync" ; sync
|
15
16
|
qemu-nbd -d $$nbd_device
|
16
17
|
qemu-nbd -c $$nbd_device "$(readlink $$image_disk)"
|
17
|
-
fi
|
18
|
-
fi
|
19
18
|
|
20
|
-
apply:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
apply:
|
20
|
+
- exec_local: |
|
21
|
+
# apply command use the backing file that represent the real state to restore
|
22
|
+
previous_id=$(qemu-img info "checkpoints/@microstep_id_checkpoint.qcow2" \
|
23
|
+
| grep backing \
|
24
|
+
| sed -e 's/.*checkpoints\/\(.*\)_checkpoint.qcow2\(.*\)/\1/p' \
|
25
|
+
| uniq)
|
26
|
+
ln -sf "$$kameleon_cwd/checkpoints/${previous_id}_checkpoint.qcow2" "$$image_disk"
|
27
27
|
|
28
|
-
clear:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
clear:
|
29
|
+
- exec_local: |
|
30
|
+
if [ -d "$$kameleon_cwd/checkpoints" ] ; then
|
31
|
+
ls $$kameleon_cwd/checkpoints/ | \
|
32
|
+
xargs -I {} bash -c "echo Removing $$kameleon_cwd/checkpoints/{} ; rm $$kameleon_cwd/checkpoints/{}"
|
33
|
+
rm -f $$image_disk
|
34
|
+
fi
|
34
35
|
|
35
|
-
list:
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
list:
|
37
|
+
- exec_local: |
|
38
|
+
if [ -d "$$kameleon_cwd/checkpoints" ] ; then
|
39
|
+
ls $$kameleon_cwd/checkpoints/ | sed -e 's/\(.*\)_checkpoint.qcow2/\1/p' | uniq
|
40
|
+
fi
|