gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-grid5k] 01/141: add new version of image


From: gnunet
Subject: [taler-grid5k] 01/141: add new version of image
Date: Thu, 18 Nov 2021 14:49:02 +0100

This is an automated email from the git hooks/post-receive script.

marco-boss pushed a commit to branch master
in repository grid5k.

commit 6deeecd8121acb9780f387806eb5392fb999dd21
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Thu Sep 30 16:02:46 2021 +0200

    add new version of image
---
 default/from_scratch/x86_64/base.yaml              | 138 -------
 default/from_scratch/x86_64/debian-testing.yaml    |  29 --
 default/steps/aliases/defaults.yaml                | 169 --------
 default/steps/bootstrap/download_installer.yaml    |  31 --
 default/steps/bootstrap/start_http_server.yaml     |  19 -
 default/steps/bootstrap/start_qemu.yaml            | 227 -----------
 default/steps/data/helpers/export_appliance.py     | 242 -----------
 .../steps/data/helpers/netinstall_iso_finder.py    | 163 --------
 default/steps/data/helpers/simple_http_server.py   | 129 ------
 .../steps/data/preseed/debian-testing-preseed.cfg  | 322 ---------------
 default/steps/env/functions.sh                     | 201 ----------
 grid5000/from_scratch/aarch64/base.yaml            |  25 --
 grid5000/from_scratch/aarch64/debian-base.yaml     |  59 ---
 grid5000/from_scratch/debian-base.yaml             |  67 ----
 grid5000/from_scratch/debian-bullseye.yaml         |  24 --
 .../bootstrap/debian/prepare_autoinstall.yaml      |  11 -
 grid5000/steps/bootstrap/prepare_appliance.yaml    |  33 --
 grid5000/steps/bootstrap/prepare_disk.yaml         |  10 -
 .../bootstrap/prepare_ssh_to_out_context.yaml      |  23 --
 grid5000/steps/checkpoints/simple.yaml             |  21 -
 .../steps/data/preseed/debian-buster-preseed.cfg   | 443 ---------------------
 grid5000/steps/data/qemu-sendkeys.rb               | 121 ------
 .../steps/data/qemu-sendkeys/netinst-iso-debian    |   1 -
 .../env/files/std/oar/default_oar-node_site        |  49 ---
 .../manifests/base/configure_ip_over_infiniband.pp |  69 ----
 .../modules/env/manifests/big/install_openmpi.pp   |  58 ---
 .../modules/env/manifests/big/install_smartd.pp    |  26 --
 grid5000/steps/disable_checkpoint.yaml             |   3 -
 grid5000/steps/enable_checkpoint.yaml              |   5 -
 grid5000/steps/env/bashrc                          |  23 --
 grid5000/steps/export/export_vagrant_box.yaml      |  42 --
 grid5000/steps/export/save_appliance_VM.yaml       |  23 --
 grid5000/steps/setup/create_user.yaml              |  11 -
 grid5000/steps/setup/debian/clean_system.yaml      |  34 --
 grid5000/steps/setup/debian/minimal_install.yaml   |   6 -
 grid5000/steps/setup/debian/setup_vagrant_box.yaml |  77 ----
 .../grid5000}/debian11-x64-common.yaml             |   0
 {grid5000 => image/grid5000}/debian11-x64-min.yaml |   0
 .../grid5000}/from_scratch/base.yaml               |   0
 .../grid5000/from_scratch}/debian-base.yaml        |   0
 .../grid5000/from_scratch}/debian-bullseye.yaml    |   0
 .../grid5000}/steps/aliases/defaults.yaml          |   0
 .../bootstrap/debian/prepare_autoinstall.yaml      |   0
 .../steps/bootstrap/download_installer.yaml        |   2 +-
 .../steps/bootstrap/prepare_appliance.yaml         |   0
 .../grid5000}/steps/bootstrap/prepare_disk.yaml    |   0
 .../bootstrap/prepare_ssh_to_out_context.yaml      |   0
 .../steps/bootstrap/start_http_server.yaml         |   2 +-
 .../grid5000}/steps/bootstrap/start_qemu.yaml      |   0
 .../grid5000}/steps/checkpoints/simple.yaml        |   0
 .../steps/data/helpers/export_appliance.py         |   2 +-
 .../steps/data/helpers/netinstall_iso_finder.py    |   6 +-
 .../steps/data/helpers/simple_http_server.py       |   2 +-
 .../steps/data/preseed/debian-bullseye-preseed.cfg |   0
 .../grid5000}/steps/data/qemu-sendkeys.rb          |   0
 .../steps/data/qemu-sendkeys/netinst-iso-debian    |   0
 .../grid5000}/steps/data/setup/hiera/hiera.yaml    |   0
 .../steps/data/setup/hiera/hieradata/defaults.yaml |   0
 .../steps/data/setup/puppet/manifests/base.pp      |   0
 .../steps/data/setup/puppet/manifests/big.pp       |   0
 .../steps/data/setup/puppet/manifests/min.pp       |   0
 .../steps/data/setup/puppet/manifests/nfs.pp       |   0
 .../steps/data/setup/puppet/manifests/std.pp       |   0
 .../steps/data/setup/puppet/manifests/xen.pp       |   0
 .../modules/env/files/base/cpufreq/cpufrequtils    |   0
 .../modules/env/files/base/ganglia/gmond.conf      |   0
 .../modules/env/files/base/infiniband/90-ib.rules  |   0
 .../modules/env/files/base/infiniband/openib.conf  |   0
 .../modules/env/files/base/infiniband/openibd      |   0
 .../env/files/base/infiniband/openibd.service      |   0
 .../puppet/modules/env/files/base/kexec/kexec      |   0
 .../puppet/modules/env/files/base/mx/ip_over_mx    |   0
 .../modules/env/files/base/ndctl/ndctl.preset      |   0
 .../modules/env/files/base/sshfs/40-fuse.rules     |   0
 .../env/files/base/tuning/limits-grid5000.conf     |   0
 .../env/files/base/tuning/sysctl-00-grid5000.conf  |   0
 .../env/files/base/userns/sysctl-00-userns.conf    |   0
 .../modules/env/files/big/amd_gpu/70-amdgpu.rules  |   0
 .../modules/env/files/big/kvm/60-qemu-system.rules |   0
 .../puppet/modules/env/files/big/kvm/create_tap    |   0
 .../puppet/modules/env/files/big/kvm/random_mac    |   0
 .../setup/puppet/modules/env/files/big/kvm/sudoers |   0
 .../puppet/modules/env/files/big/mic/85-mic.rules  |   0
 .../setup/puppet/modules/env/files/big/mic/fstab   |   0
 .../puppet/modules/env/files/big/mic/mic0.filelist |   0
 .../setup/puppet/modules/env/files/big/mic/mpss    |   0
 .../puppet/modules/env/files/big/nvidia/cuda.conf  |   0
 .../env/files/big/nvidia/dcgm-exporter.service     |   0
 .../env/files/big/nvidia/ganglia-monitor.service   |   0
 .../env/files/big/nvidia/modpython-nvidia.conf     |   0
 .../files/big/nvidia/nvidia-persistenced.service   |   0
 .../env/files/big/nvidia/nvidia-smi.service        |   0
 .../env/files/min/apt/grid5000-archive-key.asc     |   0
 .../env/files/min/cpu_microcode/amd64-microcode    |   0
 .../env/files/min/cpu_microcode/intel-microcode    |   0
 .../modules/env/files/min/image_versioning/git_tag |   0
 .../env/files/min/image_versioning/postinst        |   0
 .../puppet/modules/env/files/min/locales/locale    |   0
 .../modules/env/files/min/locales/locale.gen       |   0
 .../env/files/min/network/g5k-update-host-name     |   0
 .../puppet/modules/env/files/min/network/hosts     |   0
 .../env/files/nfs/ldap/ca2019.grid5000.fr.cert     |   0
 .../puppet/modules/env/files/nfs/ldap/common-auth  |   0
 .../modules/env/files/nfs/ldap/common-password     |   0
 .../puppet/modules/env/files/nfs/ldap/ldap.conf    |   0
 .../modules/env/files/nfs/ldap/libnss-ldap.conf    |   0
 .../puppet/modules/env/files/nfs/ldap/nscd.conf    |   0
 .../puppet/modules/env/files/nfs/ldap/nslcd.conf   |   0
 .../modules/env/files/nfs/ldap/nsswitch.conf       |   0
 .../env/files/nfs/openiscsi/55-openiscsi.rules     |   0
 .../modules/env/files/nfs/openiscsi/iscsidev.sh    |   0
 .../files/std/g5k-manager/g5k-disk-manager-backend |   0
 .../g5k-manager/g5k-disk-manager-backend.service   |   0
 .../env/files/std/g5k-manager/g5k-pmem-manager     |   0
 .../files/std/g5k-manager/g5k-pmem-manager.service |   0
 .../env/files/std/g5k-manager/lib/g5k-manager.rb   |   0
 .../env/files/std/g5k_generator/g5k_generator      |   0
 .../env/files/std/g5kchecks/g5k-checks.conf        |   0
 .../puppet/modules/env/files/std/lvm/lvm.conf      |   0
 .../modules/env/files/std/net_access/iptables      |   0
 .../env/files/std/net_access/iptables.stretch      |   0
 .../modules/env/files/std/net_access/rsyslog.conf  |   0
 .../env/files/std/net_access/syslog_iptables.conf  |   0
 .../files/std/nvidia_configure/nvidia-reset-mig    |   0
 .../std/nvidia_configure/nvidia-reset-mig.service  |   0
 .../modules/env/files/std/oar/batch_job_bashrc     |   0
 .../env/files/std/oar/etc/security/access.conf     |   0
 .../modules/env/files/std/oar/oar-node-service     |  33 +-
 .../env/files/std/oar/oar-node.service.override    |   2 +
 .../modules/env/files/std/oar/oar_sshclient_config |   0
 .../env/files/std/oar/var/lib/oar/access.conf      |   0
 .../modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k |   0
 .../env/files/std/sudo-g5k/id_rsa_sudo-g5k.pub     |   0
 .../data/setup/puppet/modules/env/files/version    |   0
 .../setup/puppet/modules/env/files/xen/xen/id_rsa  |   0
 .../puppet/modules/env/files/xen/xen/id_rsa.pub    |   0
 .../puppet/modules/env/files/xen/xen/random_mac    |   0
 .../setup/puppet/modules/env/files/xen/xen/xen-g5k |   0
 .../modules/env/files/xen/xen/xen-g5k.service      |   0
 .../modules/env/files/xen/xen/xend-config.sxp      |   0
 .../env/lib/facter/installed_kernelreleases.rb     |   0
 .../setup/puppet/modules/env/manifests/base.pp     |   0
 .../modules/env/manifests/base/add_ca_grid5000.pp  |   0
 .../env/manifests/base/configure_dhclient.pp       |   0
 .../manifests/base/configure_ip_over_infiniband.pp |  75 ++++
 .../modules/env/manifests/base/configure_kexec.pp  |   0
 .../env/manifests/base/configure_omnipath.pp       |   3 +-
 .../env/manifests/base/disable_ndctl_monitor.pp    |   0
 .../env/manifests/base/disable_nvme_multipath.pp   |   0
 .../modules/env/manifests/base/do_not_clean_tmp.pp |   0
 .../enable_cpufreq_with_performance_governor.pp    |   0
 .../modules/env/manifests/base/enable_userns.pp    |   0
 .../env/manifests/base/increase_ssh_maxstartups.pp |   0
 .../manifests/base/install_and_disable_ganglia.pp  |   0
 .../env/manifests/base/tcp_tuning_for_10gbe.pp     |   0
 .../base/unlimited_memlock_for_infiniband.pp       |   0
 .../data/setup/puppet/modules/env/manifests/big.pp |   0
 .../modules/env/manifests/big/configure_amd_gpu.pp |  16 +-
 .../env/manifests/big/configure_initramfs.pp       |   0
 .../modules/env/manifests/big/configure_kvm.pp     |   0
 .../env/manifests/big/configure_nvidia_gpu.pp      |   0
 .../env/manifests/big/configure_nvidia_gpu/cuda.pp |   0
 .../manifests/big/configure_nvidia_gpu/drivers.pp  |   0
 .../manifests/big/configure_nvidia_gpu/ganglia.pp  |   0
 .../manifests/big/configure_nvidia_gpu/modules.pp  |   0
 .../big/configure_nvidia_gpu/prometheus.pp         |   0
 .../manifests/big/configure_nvidia_gpu/services.pp |   0
 .../modules/env/manifests/big/configure_postfix.pp |   0
 .../modules/env/manifests/big/configure_sshfs.pp   |   0
 .../modules/env/manifests/big/install_beegfs.pp    |   0
 .../env/manifests/big/install_g5k_jupyterlab.pp    |   0
 .../modules/env/manifests/big/install_openmpi.pp   |  95 +++++
 .../manifests/big/install_prometheus_exporters.pp  |   0
 .../modules/env/manifests/big/install_smartd.pp    |  28 ++
 .../env/manifests/big/install_snmp_tools.pp        |   0
 .../manifests/big/prepare_kernel_module_build.pp   |   0
 .../modules/env/manifests/common/apt_pinning.pp    |   0
 .../modules/env/manifests/common/g5kpackages.pp    |   0
 .../env/manifests/common/software_versions.pp      |   7 +-
 .../puppet/modules/env/manifests/commonpackages.pp |   0
 .../setup/puppet/modules/env/manifests/init.pp     |   0
 .../data/setup/puppet/modules/env/manifests/min.pp |   0
 .../env/manifests/min/add_image_version_in_etc.pp  |   0
 .../configure_kernel_and_blacklist_some_modules.pp |   0
 .../min/configure_network_and_install_drivers.pp   |   0
 .../modules/env/manifests/min/generate_etc_motd.pp |   0
 .../manifests/min/install_and_configure_locales.pp |   0
 .../env/manifests/min/install_and_configure_ssh.pp |   0
 .../env/manifests/min/install_cpu_microcode.pp     |   0
 .../env/manifests/min/install_metapackage.pp       |   0
 .../modules/env/manifests/min/install_tgz_g5k.pp   |   0
 .../modules/env/manifests/min/kernel/initramfs.pp  |   0
 .../modules/env/manifests/min/kernel/modules.pp    |   0
 .../modules/env/manifests/min/kernel/remove_old.pp |   0
 .../env/manifests/min/kernel/setup_links.pp        |   0
 .../modules/env/manifests/min/set_root_password.pp |   0
 .../manifests/min/set_timezone_to_europe_paris.pp  |   0
 .../data/setup/puppet/modules/env/manifests/nfs.pp |   0
 .../modules/env/manifests/nfs/configure_iscsi.pp   |   0
 .../modules/env/manifests/nfs/configure_ldap.pp    |   0
 .../env/manifests/nfs/configure_module_path.pp     |   0
 .../modules/env/manifests/nfs/configure_ntp.pp     |   0
 .../env/manifests/nfs/install_nfs_requirements.pp  |   0
 .../manifests/nfs/install_osirim_requirements.pp   |   0
 .../nfs/install_storage5k_requirements.pp          |   0
 .../data/setup/puppet/modules/env/manifests/std.pp |   2 +
 .../env/manifests/std/add_g5kcode_to_path.pp       |   0
 .../std/configure_g5kdiskmanagerbackend.pp         |   0
 .../env/manifests/std/configure_g5kmanager.pp      |   0
 .../env/manifests/std/configure_g5kpmemmanager.pp  |   0
 .../env/manifests/std/configure_oar_client.pp      |  23 +-
 .../env/manifests/std/configure_rsyslog_remote.pp  |   0
 .../setup/puppet/modules/env/manifests/std/dell.pp |   0
 .../modules/env/manifests/std/dell/params.pp       |   0
 .../env/manifests/std/disable_lvm_pvscan.pp        |   0
 .../modules/env/manifests/std/g5k_generator.pp     |   0
 .../modules/env/manifests/std/install_g5kchecks.pp |  12 +
 .../env/manifests/std/install_g5ksubnets.pp        |   0
 .../env/manifests/std/install_hwraid_apt_source.pp |   0
 .../modules/env/manifests/std/install_kameleon.pp  |  21 +
 .../manifests/std/install_libguestfs_backport.pp   |   0
 .../modules/env/manifests/std/install_megacli.pp   |   0
 .../modules/env/manifests/std/install_sudog5k.pp   |   0
 .../puppet/modules/env/manifests/std/ipmitool.pp   |   0
 .../modules/env/manifests/std/nvidia_reset_mig.pp  |   0
 .../data/setup/puppet/modules/env/manifests/xen.pp |   0
 .../modules/env/manifests/xen/configure_xen.pp     |   0
 .../modules/env/manifests/xen/install_grub.pp      |   0
 .../env/templates/base/omnipath/scibian.key.erb    |   0
 .../modules/env/templates/common/apt_pinning.erb   |   0
 .../puppet/modules/env/templates/min/motd.erb      |   0
 .../env/templates/nfs/ldap/common-account.erb      |   0
 .../modules/env/templates/nfs/ntp/ntp.conf.erb     |   0
 .../env/templates/std/dell/linux.dell.com.key.erb  |   0
 .../std/hwraid/hwraid.le-vert.net.key.erb          |   0
 .../grid5000}/steps/disable_checkpoint.yaml        |   0
 .../grid5000}/steps/enable_checkpoint.yaml         |   0
 {default => image/grid5000}/steps/env/bashrc       |   0
 .../grid5000}/steps/env/functions.sh               |   0
 .../steps/export/debian/clean_dhcp_leases.yaml     |   0
 .../steps/export/do_qcow2_finish_works.yaml        |   0
 .../grid5000}/steps/export/export_g5k.yaml         |   0
 .../grid5000}/steps/export/save_appliance_VM.yaml  |   3 +-
 .../grid5000}/steps/setup/debian/clean_system.yaml |   0
 .../setup/debian/clean_unnecessary_packages.yaml   |   0
 .../steps/setup/debian/configure_apt_sources.yaml  |   0
 .../steps/setup/debian/configure_system.yaml       |   0
 .../steps/setup/debian/install_packages.yaml       |   0
 .../steps/setup/debian/minimal_install.yaml        |   0
 .../steps/setup/debian/run_orchestrator.yaml       |   0
 .../steps/setup/debian/setup_orchestrator.yaml     |   0
 notes.txt => image/notes.txt                       |   0
 debian11-taler.yaml => image/taler-debian11.yaml   |  32 +-
 steps/setup/taler_install.yaml                     |   8 -
 steps/setup/taler_install.yaml~                    |   2 -
 update.sh                                          |  11 +
 256 files changed, 341 insertions(+), 2980 deletions(-)

diff --git a/default/from_scratch/x86_64/base.yaml 
b/default/from_scratch/x86_64/base.yaml
deleted file mode 100644
index 777fdc4..0000000
--- a/default/from_scratch/x86_64/base.yaml
+++ /dev/null
@@ -1,138 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: Base recipe template
-#
-#==============================================================================
----
-# Load qemu checkpoint
-checkpoint: simple.yaml
-# Loads some helpful aliases (this files are located in steps/aliases/ 
directory)
-aliases: defaults.yaml
-
-# Custom shell environement (this files are located in steps/env/ directory)
-env:
-  - bashrc
-  - functions.sh
-
-# Global variables use by Kameleon engine and the steps
-global:
-  # Architecture for the target system
-  arch: x86_64
-  distrib: unknown
-  release: unknown
-  # Default hostname
-  hostname: kameleon-$${distrib}
-  # Default root password
-  root_password: kameleon
-
-  ## System variables. Required by kameleon engine
-  # Include specific steps
-  include_steps:
-    - $${distrib}/$${release}
-    - $${distrib}
-
-  # If qemu_iso_path is set, boot from an iso, retrieved from the following 
URL:
-  installer_iso_arch: x86_64
-  installer_iso_url:
-  # or give an helper script to find out the iso URL:
-  installer_iso_finder_helper:
-  installer_iso_finder_args:
-
-  # Otherwise, if qemu_kernel_path is set, boot from an kernel, initrd and
-  # cmdline fetched from the URL defined below, and used directly in qemu:
-  installer_kernel_url:
-  installer_initrd_url:
-  installer_cmdline:
-
-  ## GPG keyserver (Waring: not all servers are reliable)
-  gpg_keyserver: keyserver.ubuntu.com
-
-  ## QEMU options
-  qemu_enable_kvm: true
-  qemu_uefi: false
-  qemu_cpus: 2
-  qemu_memory_size: 768
-  qemu_monitor_socket: $${kameleon_cwd}/qemu_monitor.socket
-  qemu_arch: $${arch}
-  qemu_image_size: 10G
-  qemu_pidfile: $${kameleon_cwd}/qemu.pid
-  qemu_kernel_path: $${kameleon_cwd}/qemu_kernel
-  qemu_initrd_path: $${kameleon_cwd}/qemu_initrd
-  qemu_append_cmdline: $${installer_cmdline}
-  qemu_iso_path: $${kameleon_cwd}/qemu.iso
-
-  # rootfs options
-  disk_device: /dev/vda
-  rootfs: /rootfs
-  filesystem_type: ext4
-
-  # appliance options
-  image_disk: $${kameleon_cwd}/base_$${kameleon_recipe_name}
-  image_format: qcow2
-
-  # Allowed formats are: tar.gz, tar.bz2, tar.xz, tar.lzo, qcow, qcow2, qed, 
vdi, raw, vmdk
-  appliance_formats: tar.xz
-  appliance_filename: "$${kameleon_cwd}/$${kameleon_recipe_name}"
-  appliance_tar_excludes: >-
-    ./etc/fstab ./root/.bash_history ./root/kameleon_workdir ./root/.ssh
-    ./var/tmp/* ./tmp/* ./dev/* ./proc/* ./run/*
-    ./sys/* ./root/.rpmdb ./boot/extlinux ./boot/grub ./boot/grub2
-  zerofree: false
-
-  # GRUB
-  grub_cmdline_linux: console=tty0 console=ttyS0,115200
-
-  http_directory: $${kameleon_cwd}/http_dir
-  http_pid:  $${kameleon_cwd}/http.pid
-
-  ssh_config_file: $${kameleon_cwd}/ssh_config
-  local_ip: 10.0.2.2
-
-  out_context:
-    cmd: ssh -F $${ssh_config_file} $${kameleon_recipe_name} -t /bin/bash
-    workdir: /root/kameleon_workdir
-    proxy_cache: $${local_ip}
-
-  in_context:
-    cmd: ssh -F $${ssh_config_file} $${kameleon_recipe_name} -t /bin/bash
-    workdir: /root/kameleon_workdir
-    proxy_cache: $${local_ip}
-
-# Bootstrap the new system and create the 'in_context'
-bootstrap:
-  - enable_checkpoint
-  - download_installer
-  - prepare_disk
-  - prepare_autoinstall
-  - start_http_server
-  - start_qemu:
-    - force_vm_shutdown: false
-    - shutdown_vm_immediately: true
-    - vm_cleanup_section: bootstrap
-    - vm_expected_service:
-    - boot_timeout: 5
-  - prepare_ssh_to_out_context
-  - prepare_appliance
-  - start_qemu:
-    - force_vm_shutdown: true
-    - shutdown_vm_immediately: false
-    - vm_cleanup_section: setup
-    - vm_expected_server: ssh
-    - boot_timeout: 100
-    - qemu_iso_boot: false
-    - qemu_iso_path: ""
-    - qemu_kernel_path: ""
-    - qemu_sendkeys_commands: ""
-
-# Install and configuration steps
-setup:
-  - minimal_install
-  - clean_system
-
-# Export the generated appliance in the format of your choice
-export:
-  - disable_checkpoint
-  - save_appliance_VM:
-    - appliance_tar_compression_level: "9"
diff --git a/default/from_scratch/x86_64/debian-testing.yaml 
b/default/from_scratch/x86_64/debian-testing.yaml
deleted file mode 100644
index 5c65ed8..0000000
--- a/default/from_scratch/x86_64/debian-testing.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: Debian testing recipe using the netinstall mechanism
-#
-#==============================================================================
----
-extend: debian-base.yaml
-# Global variables use by Kameleon engine and the steps
-global:
-  # Distribution
-  distrib: debian
-  release: testing
-  release_number: X
-  # This URL may be invalid when the testing distribution is in its early 
stage,
-  # i.e after a recent release of a new Debian stable.
-  # In this case, it is expected for this recipe to NOT work.
-  # The debian-debootstrap-testing recipe may be prefered.
-  installer_iso_url: 
https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso
-
-bootstrap:
-  - "@base"
-
-setup:
-  - "@base"
-
-export:
-  - "@base"
diff --git a/default/steps/aliases/defaults.yaml 
b/default/steps/aliases/defaults.yaml
deleted file mode 100644
index 6cf723b..0000000
--- a/default/steps/aliases/defaults.yaml
+++ /dev/null
@@ -1,169 +0,0 @@
-write_local:
-  - exec_local: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-write_in:
-  - exec_in: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-write_out:
-  - exec_out: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_local:
-  - exec_local: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_in:
-  - exec_in: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_out:
-  - exec_out: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<EOF_KAMELEON_INTERNAL
-      @2
-      EOF_KAMELEON_INTERNAL
-
-write_raw_local:
-  - exec_local: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-write_raw_in:
-  - exec_in: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-write_raw_out:
-  - exec_out: |
-      mkdir -p $(dirname @1);
-      cat >@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_raw_local:
-  - exec_local: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_raw_in:
-  - exec_in: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-append_raw_out:
-  - exec_out: |
-      mkdir -p $(dirname @1);
-      cat >>@1 <<'EOF_KAMELEON_INTERNAL'
-      @2
-      EOF_KAMELEON_INTERNAL
-
-local2out:
-  - exec_out: |
-      mkdir -p $(dirname @2)
-  - pipe:
-      - exec_local: cat @1
-      - exec_out: cat > @2
-
-local2in:
-  - exec_in: mkdir -p $(dirname @2)
-  - pipe:
-      - exec_local: cat @1
-      - exec_in: cat > @2
-
-out2local:
-  - exec_local: mkdir -p $(dirname @2)
-  - pipe:
-      - exec_out: cat @1
-      - exec_local: cat > @2
-
-out2in:
-  - exec_in: mkdir -p $(dirname @2)
-  - pipe:
-      - exec_out: cat @1
-      - exec_in: cat > @2
-
-in2local:
-  - exec_local: mkdir -p $(dirname @2)
-  - pipe:
-      - exec_in: cat @1
-      - exec_local: cat > @2
-
-in2out:
-  - exec_out: mkdir -p $(dirname @2)
-  - pipe:
-      - exec_in: cat @1
-      - exec_out: cat > @2
-
-check_cmd_out:
-  - rescue:
-    - exec_out: command -V @1 2> /dev/null
-    - breakpoint: "@1 is missing from out_context"
-
-check_cmd_local:
-  - on_bootstrap_init:
-    - rescue:
-      - exec_local: command -V @1 2> /dev/null
-      - breakpoint: "@1 is missing from local_context"
-
-check_cmd_in:
-  - rescue:
-    - exec_in: command -V @1 2> /dev/null
-    - breakpoint: "@1 is missing from in_context"
-
-umount_out:
-  - exec_out: |
-      echo "try umount @1..." ; mountpoint -q "@1" && umount -f -l "@1" || true
-
-umount_local:
-  - exec_local: |
-      echo "try umount @1..." ; mountpoint -q "@1" && umount -f -l "@1" || true
-
-umount_in:
-  - exec_in: |
-      echo "try umount @1..." ; mountpoint -q "@1" && umount -f -l "@1" || true
-
-download_file_in:
-  - exec_in: __download "@1" "@2"
-
-download_file_out:
-  - exec_out: __download "@1" "@2"
-
-download_file_local:
-  - exec_local: __download "@1" "@2"
-
-download_recipe_build_local:
-  - exec_local: __download_recipe_build "@1" "@2" "@3" "@4" "@5" "@6" "@7"
-
-download_kadeploy_environment_image_local:
-  - exec_local: __download_kadeploy_environment_image "@1" "@2" "@3" "@4" "@5"
-
-apt-get_in:
-  - exec_in: DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes @1 2>&1
-
-apt-get_out:
-  - exec_out: DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes @1 2>&1
diff --git a/default/steps/bootstrap/download_installer.yaml 
b/default/steps/bootstrap/download_installer.yaml
deleted file mode 100644
index f15f58c..0000000
--- a/default/steps/bootstrap/download_installer.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-- download_installer:
-  - test:
-     - exec_local: test -n "$${installer_iso_url}" -o -n 
"$${installer_iso_finder_helper}"
-     - group:
-       - test:
-          - exec_local: test -z "$${installer_iso_url}"
-          - exec_local: |
-              echo "Looking for the netinstall iso URL for 
$${installer_iso_finder_args}"
-              DOWNLOAD_SRC_URL=$(python2 $${installer_iso_finder_helper} 
$${installer_iso_finder_args})
-       - download_file_local:
-         - $${installer_iso_url}
-         - $${qemu_iso_path}
-       - exec_local: unset DOWNLOAD_SRC_URL
-     - group:
-       - test:
-         - exec_local: test -n "$${installer_kernel_url}"
-         - download_file_local:
-           - $${installer_kernel_url}
-           - $${qemu_kernel_path}
-       - test:
-         - exec_local: test -n "$${installer_initrd_url}"
-         - download_file_local:
-           - $${installer_initrd_url}
-           - $${qemu_initrd_path}
-
-- delete_installer:
-  - on_checkpoint: skip
-  - on_export_clean:
-    - exec_local: rm -f $${qemu_iso_path}
-    - exec_local: rm -f $${qemu_kernel_path}
-    - exec_local: rm -f $${qemu_initrd_path}
diff --git a/default/steps/bootstrap/start_http_server.yaml 
b/default/steps/bootstrap/start_http_server.yaml
deleted file mode 100644
index 59184c3..0000000
--- a/default/steps/bootstrap/start_http_server.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-- http_script: $${kameleon_data_dir}/helpers/simple_http_server.py
-
-- run_http_server:
-  - exec_local: |
-      HTTP_PORT=$(__find_free_port 8000 8100)
-      echo "HTTP port: $HTTP_PORT"
-      export HTTP_PORT
-  - exec_local: python2 $${http_script} --root $${http_directory} --bind 
0.0.0.0 --port $HTTP_PORT --daemon --pid $${http_pid}
-  - on_bootstrap_clean:
-    - exec_local: |
-        if [ -f $${http_pid} ]; then
-          HTTP_PID=$(cat $${http_pid})
-          if ps -p $HTTP_PID > /dev/null; then
-              echo "Killing HTTP server (pid: $HTTP_PID)..."
-              kill -9 "$HTTP_PID"
-              rm -f $${http_pid}
-          fi
-          rm -f $${http_pid}
-        fi
diff --git a/default/steps/bootstrap/start_qemu.yaml 
b/default/steps/bootstrap/start_qemu.yaml
deleted file mode 100644
index 4d47953..0000000
--- a/default/steps/bootstrap/start_qemu.yaml
+++ /dev/null
@@ -1,227 +0,0 @@
-# Require SSH_FWD_PORT bash environment variable to be set
-
-# This must be set if you want to boot an ISO image:
-- qemu_iso_path: ""
-- qemu_iso_boot: true
-# Else that can be set to boot from a kernel, initrd and cmdline:
-- qemu_kernel_path: ""
-- qemu_initrd_path: ""
-- qemu_append_cmdline: ""
-# Else boot from disk.
-
-- vm_expected_service: ssh
-- boot_timeout: 100
-- shutdown_timeout: 100
-- debug: false
-- telnet_port: ""
-- no_reboot: true
-- socat_monitor: socat - UNIX-CONNECT:$${qemu_monitor_socket}
-- qemu_sendkeys_script: $${kameleon_data_dir}/qemu-sendkeys.rb
-- qemu_sendkeys_commands: 
-- vm_expected_service: ssh
-- vm_cleanup_section: setup
-- shutdown_vm_immediately: false
-- force_vm_shutdown: true
-- qemu_enable_kvm: true
-- qemu_cpus: 2
-- qemu_memory_size: 768
-- qemu_monitor_socket: $${kameleon_cwd}/qemu_monitor.socket
-- qemu_arch: $${arch}
-- qemu_image_size: 10G
-- qemu_pidfile: $${kameleon_cwd}/qemu.pid
-- qemu_uefi: false
-- qemu_uefi_code_path: /usr/share/AAVMF/AAVMF_CODE.fd
-- qemu_uefi_vars_path: /usr/share/AAVMF/AAVMF_VARS.fd
-- qemu_netdev_user_options:
-- disk_cache: unsafe
-
-- start_vm:
-  - on_checkpoint: redo
-  - check_cmd_local: qemu-system-$${qemu_arch}
-  - check_cmd_local: socat
-  - on_bootstrap_clean:
-    - test:
-      - exec_local: test "$${shutdown_vm_immediately}" == "false" -a 
"$${vm_cleanup_section}" == "bootstrap"
-      - group: 
-        - exec_local: &1 |
-            if [ -f $${qemu_pidfile} ]; then
-              _QEMU_PID=$(< $${qemu_pidfile})
-              if ps -p $_QEMU_PID > /dev/null; then
-                if [ "$${force_vm_shutdown}" == "true" ]; then
-                  if [ -S $${qemu_monitor_socket} ]; then
-                    echo "Executing a graceful shutdown of the qemu VM via the 
monitor socket..."
-                    NEXT_WAIT_TIME=0
-                    echo system_powerdown | socat - 
UNIX-CONNECT:$${qemu_monitor_socket} || true
-                    while ps -p $_QEMU_PID > /dev/null && [ $NEXT_WAIT_TIME 
-lt $${shutdown_timeout} ];
-                    do
-                      sleep 1
-                      echo -en "\rWaiting for qemu virtual machine to 
shutdown...($(( $${shutdown_timeout} - 1 - NEXT_WAIT_TIME++ ))s)"
-                    done
-                  fi
-                else
-                  echo "Waiting for the VM to shutdown"
-                  echo "Run 'vncviewer :$VNC_PORT' to see what's happening in 
the VM"
-                  while ps -p $_QEMU_PID > /dev/null;
-                  do
-                    sleep 2
-                  done
-                fi
-              fi
-            fi
-        - exec_local: &2 |
-            if [ -f $${qemu_pidfile} ]; then
-              _QEMU_PID=$(< $${qemu_pidfile})
-              if ps -p $_QEMU_PID > /dev/null; then
-                if [ -S $${qemu_monitor_socket} ]; then
-                  echo "The graceful shutdown of the qemu VM should have 
failed (monitor socket is there)..."
-                fi
-                echo "Killing qemu (pid: $_QEMU_PID)."
-                kill -9 "$_QEMU_PID"
-              fi
-              rm -f $${qemu_pidfile}
-            fi
-            rm -f $${qemu_monitor_socket}
-  - on_setup_clean:
-    - test:
-      - exec_local: test "$${shutdown_vm_immediately}" == "false" -a 
"$${vm_cleanup_section}" == "setup"
-      - group:
-        - exec_local: *1
-        - exec_local: *2
-  - on_export_clean:
-    - test:
-      - exec_local: test "$${shutdown_vm_immediately}" == "false" -a 
"$${vm_cleanup_section}" == "export"
-      - group:
-        - exec_local: *1
-        - exec_local: *2
-  - exec_local: |
-      if [ "$${shutdown_vm_immediately}" == "true" ]; then
-        echo "Qemu VM shutdown: immediately"
-      else
-        echo "Qemu VM shutdown: in $${vm_cleanup_section} section cleaning"
-      fi
-  - exec_local: |
-      if [ -r $${qemu_pidfile} ] && pgrep -F $${qemu_pidfile} > /dev/null; then
-        echo "Qemu pid file found, with process running: killing it !" 1>&2
-        pkill -F $${qemu_pidfile}
-        sleep 0.5
-        if pgrep -F $${qemu_pidfile} > /dev/null; then
-          echo "Failed to kill qemu process." 1>&2
-          exit 1
-        fi
-      fi
-  - exec_local: |
-      echo "Starting qemu..."
-      if [ "$${qemu_enable_kvm}" == "true" ] && (/usr/sbin/kvm-ok > /dev/null 
|| egrep '(vmx|svm)' /proc/cpuinfo > /dev/null) ; then # print warning if 
/usr/sbin/kvm-ok is not installed
-        if [ "$${qemu_arch}" == "aarch64" ]; then
-          ENABLE_KVM="-enable-kvm -accel kvm -machine 
virt,gic-version=host,accel=kvm:tcg -cpu host"
-          #ENABLE_KVM="-global virtio-blk-pci.scsi=off -no-user-config 
-enable-fips -machine virt,gic-version=host,accel=kvm:tcg -cpu host -rtc 
driftfix=slew -object rng-random,filename=/dev/urandom,id=rng0 -device 
virtio-rng-pci,rng=rng0"
-        elif [ "$${qemu_arch}" == "ppc64" ]; then
-          ENABLE_KVM="-enable-kvm -accel kvm -machine pseries,accel=kvm:tcg 
-cpu host"
-        else #X86_64
-          ENABLE_KVM="-enable-kvm -cpu host"
-        fi
-        BOOT_TIMEOUT=$${boot_timeout}
-      else
-        echo "No KVM acceleration used"
-        BOOT_TIMEOUT=$(($${boot_timeout}*2))
-      fi
-      if [ -f "vm_state_to_load.txt" ]
-      then
-          SAVED_STATE="$(< vm_state_to_load.txt)"
-          LOADVM="-loadvm $SAVED_STATE"
-          rm -f vm_state_to_load.txt
-      fi
-      if [ "$${debug}" == "true" ]; then
-        VNC_OPT=""
-      else
-        # Find empty VNC port
-        VNC_PORT=$(( $(__find_free_port 5900 5910) - 5900 ))
-        echo "VNC port: $VNC_PORT"
-        VNC_OPT="-vnc :$VNC_PORT"
-      fi
-      if [ -n "$${telnet_port}" ]; then
-        SERIAL_TELNET="telnet:localhost:$${telnet_port},server"
-      fi
-      # Select disk
-      QEMU_DRIVES="-drive 
file=$${image_disk}.$${image_format},cache=$${disk_cache},media=disk,if=virtio,id=drive0"
-      QEMU_BOOT=
-      QEMU_APPEND_CMDLINE=
-      if [ "$${qemu_uefi}" == "true" ]; then
-        if [ ! -f $${kameleon_cwd}/qemu_uefi_vars.fd ]; then
-          cp $${qemu_uefi_vars_path} $${kameleon_cwd}/qemu_uefi_vars.fd
-        fi
-        QEMU_BOOT="-drive 
if=pflash,format=raw,readonly,file=$${qemu_uefi_code_path} -drive 
if=pflash,format=raw,file=$${kameleon_cwd}/qemu_uefi_vars.fd"
-      fi
-      if [ -n "$${qemu_iso_path}" ]; then
-        QEMU_DRIVES="-drive file=$${qemu_iso_path},readonly,media=cdrom 
$QEMU_DRIVES"
-        if [ "$${qemu_iso_boot}" == "true" ]; then
-          QEMU_BOOT="$QEMU_BOOT -boot order=d"
-        fi
-      elif [ -n "$${qemu_kernel_path}" ]; then
-        QEMU_BOOT="$QEMU_BOOT -kernel $${qemu_kernel_path}"
-        if [ -n "$${qemu_initrd_path}" ]; then
-          QEMU_BOOT="$QEMU_BOOT -initrd $${qemu_initrd_path}"
-        fi
-        if [ -n "$${qemu_append_cmdline}" ]; then
-          QEMU_APPEND_CMDLINE="$${qemu_append_cmdline}"
-          QEMU_APPEND_CMDLINE=${QEMU_APPEND_CMDLINE//%LOCAL_IP%/$${local_ip}}
-          QEMU_APPEND_CMDLINE=${QEMU_APPEND_CMDLINE//%HTTP_PORT%/$HTTP_PORT}
-        fi
-      fi
-      if [ -n "$${qemu_netdev_user_options}" ]; then
-        QEMU_NETDEV_USER_OPTIONS=",$${qemu_netdev_user_options}"
-      fi
-      if [ "$${no_reboot}" == "true" ]; then
-        NO_REBOOT="-no-reboot"
-      fi
-      if [ -n "${SSH_FWD_PORT}" ]; then
-        HOSTFWD=",hostfwd=tcp::${SSH_FWD_PORT}-:22"
-      fi
-      qemu-system-$${qemu_arch} $ENABLE_KVM -smp $${qemu_cpus} -m 
$${qemu_memory_size} -rtc base=localtime \
-        -net nic,model=virtio -net user${QEMU_NETDEV_USER_OPTIONS}${HOSTFWD} \
-        $QEMU_DRIVES \
-        -monitor unix:$${qemu_monitor_socket},server,nowait -pidfile 
$${qemu_pidfile} -daemonize \
-        $QEMU_BOOT ${QEMU_APPEND_CMDLINE:+-append "$QEMU_APPEND_CMDLINE"} 
$NO_REBOOT \
-        $VNC_OPT $SERIAL_TELNET\
-        $LOADVM
-  - exec_local: |
-      VM_AVAILABLE=0
-      if [ "$${vm_expected_service}" == "ssh" ]; then
-        TIMEOUT=$(( $(date +%s) + $BOOT_TIMEOUT ))
-        until timeout 5 ssh -q -F $${ssh_config_file} -o ConnectionAttempts=1  
$${kameleon_recipe_name} -t true && VM_AVAILABLE=1 || [ $(date +%s) -gt 
$TIMEOUT ];
-        do
-          echo -en "\rWaiting for SSH to become available in VM for 
out_context...($(( TIMEOUT - $(date +%s) ))s)"
-          sleep 1
-        done
-        echo
-      else
-        TIMEOUT=$(( $(date +%s) + $BOOT_TIMEOUT ))
-        until timeout 1 [ $(date +%s) -gt $TIMEOUT ];
-        do
-          echo -en "\rWaiting for VM to become available : ($(( TIMEOUT - 
$(date +%s) ))s)"
-          sleep 1
-        done
-        echo
-        VM_AVAILABLE=1
-      fi
-  - rescue:
-    - exec_local: test $VM_AVAILABLE -eq 1
-    - breakpoint: |
-        Failed to get VM up and running (expected service: 
$${vm_expected_service}). Please verify the VM successfully booted with a vnc 
client.
-  - test:
-    - exec_local: test -e "$${qemu_sendkeys_commands}" -a -s 
"$${qemu_sendkeys_commands}"
-    - exec_local: |
-        echo "Sending keyboard commands to the VM: $${qemu_sendkeys_commands}"
-        echo "(Local httpd server url: http://$${local_ip}:$HTTP_PORT)"
-        ruby $${qemu_sendkeys_script} -d 0.05 "$(sed -e 
s/%LOCAL_IP%/$${local_ip}/g -e s/%HTTP_PORT%/$HTTP_PORT/g 
$${qemu_sendkeys_commands})" | $${socat_monitor} > /dev/null
-    - exec_local: echo "No keyboard commands to send"
-
-- shutdown_vm:
-  - on_checkpoint: redo
-  - on_clean:
-    - test:
-      - exec_local: test "$${shutdown_vm_immediately}" == "true"
-      - exec_local: *2
-  - test:
-    - exec_local: test "$${shutdown_vm_immediately}" == "true"
-    - exec_local: *1
diff --git a/default/steps/data/helpers/export_appliance.py 
b/default/steps/data/helpers/export_appliance.py
deleted file mode 100644
index 634b240..0000000
--- a/default/steps/data/helpers/export_appliance.py
+++ /dev/null
@@ -1,242 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
-"""Convert a disk image to many others formats with guestfish."""
-from __future__ import division, unicode_literals
-
-import os
-# import time
-import os.path as op
-import sys
-import subprocess
-import argparse
-import logging
-
-
-logger = logging.getLogger(__name__)
-
-tar_formats = ('tar', 'tar.gz', 'tgz', 'tar.bz2', 'tbz', 'tar.xz', 'txz',
-               'tar.lzo', 'tzo')
-
-tar_options = ["--selinux", "--xattrs", "--xattrs-include=*", 
"--numeric-owner", "--one-file-system"] 
-
-disk_formats = ('qcow', 'qcow2', 'qed', 'vdi', 'raw', 'vmdk')
-
-
-def which(command):
-    """Locate a command.
-    Snippet from: http://stackoverflow.com/a/377028
-    """
-    def is_exe(fpath):
-        return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
-
-    fpath, fname = os.path.split(command)
-    if fpath:
-        if is_exe(command):
-            return command
-    else:
-        for path in os.environ["PATH"].split(os.pathsep):
-            path = path.strip('"')
-            exe_file = os.path.join(path, command)
-            if is_exe(exe_file):
-                return exe_file
-
-    raise ValueError("Command '%s' not found" % command)
-
-
-def tar_convert(disk, output, excludes, compression_level):
-    """Convert image to a tar rootfs archive."""
-    if compression_level in ("best", "fast"):
-        compression_level_opt = "--%s" % compression_level
-    else:
-        compression_level_opt = "-%s" % compression_level
-
-    compr = ""
-    if output.endswith(('tar.gz', 'tgz')):
-        try:
-            compr = "| %s %s" % (which("pigz"), compression_level_opt)
-        except:
-            compr = "| %s %s" % (which("gzip"), compression_level_opt)
-    elif output.endswith(('tar.bz2', 'tbz')):
-        compr = "| %s %s" % (which("bzip2"), compression_level_opt)
-    elif output.endswith(('tar.xz', 'txz')):
-        compr = "| {} {} -c --threads=0 -".format(
-            which("xz"), compression_level_opt)
-    elif output.endswith(('tar.lzo', 'tzo')):
-        compr = "| %s %s -c -" % (which("lzop"), compression_level_opt)
-
-    # NB: guestfish version >= 1.32 supports the special tar options, but not 
available in Debian stable (jessie): do not use for now
-    #tar_options_list = ["selinux:true", "acls:true", "xattrs:true",
-    #                    "numericowner:true",
-    #                    "excludes:\"%s\"" % ' '.join(excludes)]
-    #tar_options_str = ' '.join(tar_options_list)
-    #cmd = which("guestfish") + \
-    #    " --ro -i tar-out -a %s / - %s %s > %s"
-    #cmd = cmd % (disk, tar_options_str, compr, output)
-    #proc = subprocess.Popen(cmd_mount_tar, env=os.environ.copy(), shell=True)
-    #proc.communicate()
-    #if proc.returncode:
-    #    raise subprocess.CalledProcessError(proc.returncode, cmd)
-
-    tar_options_str = ' '.join(tar_options + ['--exclude="%s"' % s for s in 
excludes])
-    # Necessary to have quick access to /etc (bug 12240) and also good for 
reproducibility
-    tar_options_str += ' --sort=name'
-    directory = dir_path = os.path.dirname(os.path.realpath(disk))
-    cmds = [
-        which("mkdir") + " %s/.mnt" % directory,
-        which("guestmount") + " --ro -i -a %s %s/.mnt" % (disk, directory),
-        which("tar") + " -c %s -C %s/.mnt . %s > %s" % (tar_options_str, 
directory, compr, output)
-        ]
-    cmd_mount_tar = " && ".join(cmds)
-    proc = subprocess.Popen(cmd_mount_tar, env=os.environ.copy(), shell=True)
-    proc.communicate()
-    returncode_mount_tar = proc.returncode
-
-    # try to umount even if the previous command failed
-    cmds = [
-        which("guestunmount") + " %s/.mnt" % directory,
-        which("rmdir") + " %s/.mnt" % directory
-        ]
-    cmd_umount = " && ".join(cmds)
-    proc = subprocess.Popen(cmd_umount, env=os.environ.copy(), shell=True)
-    proc.communicate()
-    returncode_umount = proc.returncode
-
-    if returncode_mount_tar:
-        raise subprocess.CalledProcessError(returncode_mount_tar, 
cmd_mount_tar)
-    elif returncode_umount:
-        raise subprocess.CalledProcessError(returncode_umount, cmd_umount)
-
-
-def qemu_convert(disk, output_fmt, output_filename):
-    """Convert the disk image filename to disk image output_filename."""
-    binary = which("qemu-img")
-    cmd = [binary, "convert", "-O", output_fmt, disk, output_filename]
-    if output_fmt in ("qcow", "qcow2"):
-        cmd.insert(2, "-c")
-    proc = subprocess.Popen(cmd, env=os.environ.copy(), shell=False)
-    proc.communicate()
-    if proc.returncode:
-        raise subprocess.CalledProcessError(proc.returncode, ' '.join(cmd))
-
-
-def run_guestfish_script(disk, script, mount=""):
-    """
-    Run guestfish script.
-    Mount should be in ("read_only", "read_write", "ro", "rw")
-    """
-    args = [which("guestfish"), '-a', disk]
-    if mount in ("read_only", "read_write", "ro", "rw"):
-        args.append('-i')
-        if mount in mount in ("read_only", "ro"):
-            args.append('--ro')
-        else:
-            args.append('--rw')
-    else:
-        script = "run\n%s" % script
-    proc = subprocess.Popen(args,
-                            stdin=subprocess.PIPE,
-                            env=os.environ.copy())
-    proc.communicate(input=script.encode('utf-8'))
-    if proc.returncode:
-        raise subprocess.CalledProcessError(proc.returncode, ' '.join(args))
-
-
-def guestfish_zerofree(filename):
-    """Fill free space with zero"""
-    logger.info(guestfish_zerofree.__doc__)
-    cmd = "virt-filesystems -a %s" % filename
-    fs = subprocess.check_output(cmd.encode('utf-8'),
-                                 stderr=subprocess.STDOUT,
-                                 shell=True,
-                                 env=os.environ.copy())
-    list_fs = fs.decode('utf-8').split()
-    logger.info('\n'.join(('  `--> %s' % i for i in list_fs)))
-    script = '\n'.join(('zerofree %s' % i for i in list_fs))
-    run_guestfish_script(filename, script, mount="read_only")
-
-
-def convert_disk_image(args):
-    """Convert disk to another format."""
-    filename = op.abspath(args.file.name)
-    output = op.abspath(args.output)
-
-    os.environ['LIBGUESTFS_CACHEDIR'] = os.getcwd()
-    if args.verbose:
-        os.environ['LIBGUESTFS_DEBUG'] = '1'
-
-    # sometimes guestfish fails because of other virtualization tools are
-    # still running use a test and retry to wait for availability
-    # attempts = 0
-    # while attempts < 3:
-    #    try:
-    #        logger.info("Waiting for virtualisation to be available...")
-    #        run_guestfish_script(filename, "cat /etc/hostname", mount='ro')
-    #        break
-    #    except:
-    #        attempts += 1
-    #        time.sleep(1)
-
-    if args.zerofree and (set(args.formats) & set(disk_formats)):
-        guestfish_zerofree(filename)
-
-    for fmt in args.formats:
-        if fmt in (tar_formats + disk_formats):
-            output_filename = "%s.%s" % (output, fmt)
-            if output_filename == filename:
-                continue
-            logger.info("Creating %s" % output_filename)
-            try:
-                if fmt in tar_formats:
-                    tar_convert(filename, output_filename,
-                                args.tar_excludes,
-                                args.tar_compression_level)
-                else:
-                    qemu_convert(filename, fmt, output_filename)
-            except ValueError as exp:
-                logger.error("Error: %s" % exp)
-
-
-if __name__ == '__main__':
-    allowed_formats = tar_formats + disk_formats
-    allowed_formats_help = 'Allowed values are ' + ', '.join(allowed_formats)
-
-    allowed_levels = ["%d" % i for i in range(1, 10)] + ["best", "fast"]
-    allowed_levels_helps = 'Allowed values are ' + ', '.join(allowed_levels)
-
-    parser = argparse.ArgumentParser(
-        description=sys.modules[__name__].__doc__,
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter
-    )
-    parser.add_argument('file', action="store", type=argparse.FileType('r'),
-                        help='Disk image filename')
-    parser.add_argument('-F', '--formats', action="store", type=str, nargs='+',
-                        help='Output format. ' + allowed_formats_help,
-                        choices=allowed_formats, metavar='fmt', required=True)
-    parser.add_argument('-o', '--output', action="store", type=str,
-                        help='Output filename (without file extension)',
-                        required=True, metavar='filename')
-    parser.add_argument('--tar-compression-level', action="store", type=str,
-                        default="9", choices=allowed_levels, metavar='lvl',
-                        help="Compression level. " + allowed_levels_helps)
-    parser.add_argument('--tar-excludes', action="store", type=str, nargs='+',
-                        help="Files to excluded from archive",
-                        metavar='pattern', default=[])
-    parser.add_argument('--zerofree', action="store_true", default=False,
-                        help='Zero free unallocated blocks from ext2/3 '
-                             'file-systems before export to reduce image size')
-    parser.add_argument('--verbose', action="store_true", default=False,
-                        help='Enable very verbose messages')
-    log_format = '%(levelname)s: %(message)s'
-    level = logging.INFO
-    args = parser.parse_args()
-    if args.verbose:
-        level = logging.DEBUG
-
-    handler = logging.StreamHandler(sys.stdout)
-    handler.setLevel(level)
-    handler.setFormatter(logging.Formatter(log_format))
-
-    logger.setLevel(level)
-    logger.addHandler(handler)
-
-    convert_disk_image(args)
diff --git a/default/steps/data/helpers/netinstall_iso_finder.py 
b/default/steps/data/helpers/netinstall_iso_finder.py
deleted file mode 100644
index b4a135b..0000000
--- a/default/steps/data/helpers/netinstall_iso_finder.py
+++ /dev/null
@@ -1,163 +0,0 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
-"""Find the latest netinstall iso for a Debian version and system 
architecture."""
-
-from html.parser import HTMLParser
-from urllib2 import urlopen
-from urlparse import urljoin
-import re
-import sys
-import argparse
-import logging
-
-logger = logging.getLogger(__name__)
-
-class LinkParser(HTMLParser):
-    """Retrieve links (a hrefs) from a text/html document"""
-    def __init__(self, url):
-        HTMLParser.__init__(self)
-        self.url = url
-        self.links = set()
-        response = urlopen(url)
-        contentType = response.info().get('Content-Type')
-        if not contentType:
-            return
-        logger.debug("url = " + url );
-        logger.debug("contentType = " + contentType );
-        if ';' in contentType:
-            (mediaType,charset) = contentType.split(";")
-            charset = charset.split("=")[1]
-        else:
-            mediaType = contentType
-            # ISO-8859-1 is no longer the default charset, see 
https://tools.ietf.org/html/rfc7231#appendix-B
-            # Let's use UTF-8.
-            charset = "utf-8"
-        if mediaType =='text/html':
-            htmlBytes = response.read()
-            htmlString = htmlBytes.decode(charset)
-            self.feed(htmlString)
-
-    def handle_starttag(self, tag, attrs):
-        if tag == 'a':
-            for (key, value) in attrs:
-                if key == 'href':
-                    new_url = urljoin(self.url,value)
-                    if re.match("^"+self.url, new_url):
-                        self.links.add(new_url)
-
-    def get_links(self):
-        """Returns all the collected links"""
-        return self.links
-
-
-def url_find(to_visit_url_set,visited_url_set,found_url_set):
-    """Recursively look for urls given a regex, a set of urls to visit, a set 
of already visited urls, a set of already found urls. Returns the set of found 
urls"""
-    logger.debug("Progress: to_visit:{} visited:{} 
found:{}".format(len(to_visit_url_set),len(visited_url_set),len(found_url_set)))
-    assert(len(to_visit_url_set.intersection(visited_url_set)) == 0)
-    assert(len(to_visit_url_set.intersection(found_url_set)) == 0)
-    if (len(to_visit_url_set) == 0):
-        return [visited_url_set,found_url_set]
-    else:
-        url = to_visit_url_set.pop()
-        visited_url_set.add(url)
-        if target_regex.match(url):
-            found_url_set.add(url)
-            return url_find(to_visit_url_set, visited_url_set, found_url_set)
-        else:
-            new_url_set = set([url for url in LinkParser(url).get_links() if 
(logger.debug(url) or True) and url_regex.match(url)])
-            new_url_set.difference_update(visited_url_set)
-            to_visit_url_set.update(new_url_set)
-            return url_find(to_visit_url_set, visited_url_set, found_url_set)
-
-def key_normalize(version_string):
-    """"
-    In order to perform a natural sorting, we normalize the version (X.Y.Z) as 
a unique integer with the following formula: X*100 + Y*10 + Z
-    For instance, it solves situations where "9.9.0" is greater than "9.9.11"
-    """
-    splitted_string = version_string.split('.')
-    assert(len(splitted_string) == 3)
-    return 
int(splitted_string[0])*100+int(splitted_string[1])*10+int(splitted_string[2])
-
-if __name__ == '__main__':
-    parser = 
argparse.ArgumentParser(description=sys.modules[__name__].__doc__, 
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
-    parser.add_argument("distrib", metavar="DISTRIB", help="distribution")
-    parser.add_argument("version", metavar="VERSION", help="version")
-    parser.add_argument("arch", metavar="ARCH", help="architecture")
-    parser.add_argument("mirror", metavar="MIRROR", help="mirror", nargs="?")
-    parser.add_argument('--info', action="store_true", default=False, 
help='print info messages')
-    parser.add_argument('--debug', action="store_true", default=False, 
help='print debug messages')
-    args = parser.parse_args()
-
-    handler = logging.StreamHandler()
-    if args.debug:
-        logger.setLevel(logging.DEBUG)
-        handler.setLevel(logging.DEBUG)
-    elif args.info:
-        logger.setLevel(logging.INFO)
-        handler.setLevel(logging.INFO)
-    else:
-        logger.setLevel(logging.WARNING)
-        handler.setLevel(logging.WARNING)
-    handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
-    logger.addHandler(handler)
-
-    try:
-        visited = set([])
-        found = set([])
-        if (args.distrib.lower() == "debian"):
-            if args.mirror == None:
-                args.mirror = "http://cdimage.debian.org/";
-            if not re.match("^\d+$",args.version):
-                raise Exception("please give the Debian release number (e.g. 8 
for Jessie)")
-            if args.version == '10':
-                url_regex = 
re.compile("^"+args.mirror+"cdimage/release/(?:"+args.version+"\.\d+\.\d+/(?:"+args.arch+"/(?:iso-cd/(?:debian-"+args.version+"\.\d+\.\d+-"+args.arch+"-netinst\.iso)?)?)?)?$")
-            else:
-                url_regex = 
re.compile("^"+args.mirror+"cdimage/archive/(?:"+args.version+"\.\d+\.\d+/(?:"+args.arch+"/(?:iso-cd/(?:debian-"+args.version+"\.\d+\.\d+-"+args.arch+"-netinst\.iso)?)?)?)?$")
-            target_regex = re.compile("^.*-netinst\.iso$")
-            [visited,found] = url_find(set([args.mirror+"cdimage/"+v+"/" for v 
in ["release","archive"]]), set(), set())
-        elif (args.distrib.lower() == "ubuntu"):
-            if args.mirror == None:
-                args.mirror = "http://(?:archive|old-releases).ubuntu.com/"
-                servers = set(["http://"+s+".ubuntu.com/ubuntu/"; for s in 
["old-releases","archive"]])
-            else:
-                servers = set([args.mirror])
-            if not re.match("^\w+$",args.version):
-                raise Exception("please give the Ubuntu release name")
-            url_regex = 
re.compile("^"+args.mirror+"ubuntu/dists/(?:"+args.version+"(?:-updates)?/(?:main/(?:installer-"+args.arch+"/(?:current/(?:(?:legacy-)?images/(?:netboot/(?:mini\.iso)?)?)?)?)?)?)?$")
-            target_regex = re.compile("^.*/mini\.iso$")
-            [visited,found] = url_find(servers, set(), set())
-        elif (args.distrib.lower() == "centos"):
-            if args.mirror == None:
-                args.mirror = "http://mirror.in2p3.fr/linux/CentOS/";
-            if not re.match("^\d+$",args.version):
-                raise Exception("please give the CentOS release number (e.g. 7 
for CentOS-7)")
-            if args.version == '6':
-                url_regex = 
re.compile("^"+args.mirror+"(?:"+args.version+"/(?:isos/(?:"+args.arch+"/(?:CentOS-"+args.version+"(?:\.\d+)?-"+args.arch+"-netinstall\.iso)?)?)?)?$")
-                target_regex = 
re.compile("^.*CentOS-\d+(?:\.\d+)?-\w+-netinstall\.iso$")
-            elif args.version == '7':
-                url_regex = 
re.compile("^"+args.mirror+"(?:"+args.version+"/(?:isos/(?:"+args.arch+"/(?:CentOS-"+args.version+"-"+args.arch+"-NetInstall-\d+\.iso)?)?)?)?$")
-                target_regex = 
re.compile("^.*CentOS-\d+-\w+-NetInstall-\d+\.iso$")
-            else:
-                url_regex = 
re.compile("^"+args.mirror+"(?:"+args.version+"/(?:isos/(?:"+args.arch+"/(?:CentOS-"+args.version+"\.\d+\.\d+-"+args.arch+"-boot\.iso)?)?)?)?$")
-                target_regex = 
re.compile("^.*CentOS-\d+\.\d+\.\d+-\w+-boot\.iso$")
-            [visited,found] = url_find(set([args.mirror]), set(), set())
-        else:
-            raise Exception("this distribution is not supported")
-        logger.info("URL regex: "+url_regex.pattern)
-        logger.info("Target regex: "+target_regex.pattern)
-        logger.debug("Visited URLs:")
-        for url in visited:
-            logger.debug(url)
-        logger.info("Found URLs:")
-        for url in found:
-            logger.info(url)
-        if len(found) > 0:
-            if (args.distrib.lower() == "debian"):
-                print(sorted(found,key=lambda 
x:key_normalize(re.sub(r".*/debian-(\d+).(\d+).(\d+)-"+args.arch+"-netinst\.iso$",r"\1.\2.\3",x)),reverse=True)[0])
-            else:
-                print(sorted(found, reverse=False)[0])
-        else:
-            raise Exception("no url found")
-    except Exception as exc:
-        sys.stderr.write(u"Error: %s\n" % exc)
-        sys.exit(1)
diff --git a/default/steps/data/helpers/simple_http_server.py 
b/default/steps/data/helpers/simple_http_server.py
deleted file mode 100644
index 881343a..0000000
--- a/default/steps/data/helpers/simple_http_server.py
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/env python2
-"""Simple HTTP server"""
-from __future__ import unicode_literals
-import atexit
-import os
-import sys
-import argparse
-
-
-class HTTPServerDaemon(object):
-
-    """A HTTP server daemon class."""
-
-    def __init__(self, root=os.getcwd()):
-        """ Initialize the object."""
-        self.root = root
-
-    def daemonize(self, pidfile):
-        """Deamonize class. UNIX double fork mechanism."""
-        try:
-            pid = os.fork()
-            if pid > 0:
-                # exit first parent
-                sys.exit(0)
-        except OSError as err:
-            sys.stderr.write('fork #1 failed: {0}\n'.format(err))
-            sys.exit(1)
-
-        # decouple from parent environment
-        os.chdir(self.root)
-        os.setsid()
-        os.umask(0)
-
-        # do second fork
-        try:
-            pid = os.fork()
-            if pid > 0:
-
-                # exit from second parent
-                sys.exit(0)
-        except OSError as err:
-            sys.stderr.write('fork #2 failed: {0}\n'.format(err))
-            sys.exit(1)
-
-        # redirect standard file descriptors
-        sys.stdout.flush()
-        sys.stderr.flush()
-        si = open(os.devnull, 'r')
-        so = open(os.devnull, 'a+')
-        se = open(os.devnull, 'a+')
-
-        os.dup2(si.fileno(), sys.stdin.fileno())
-        os.dup2(so.fileno(), sys.stdout.fileno())
-        os.dup2(se.fileno(), sys.stderr.fileno())
-
-        # Make sure pid file is removed if we quit
-        @atexit.register
-        def delpid(self):
-            os.remove(pidfile)
-
-        # write pidfile
-        pid = str(os.getpid())
-        with open(pidfile, 'w+') as f:
-            f.write(pid + '\n')
-
-    def start(self, pidfile, *args, **kwargs):
-        """Start the daemon."""
-        # Check for a pidfile to see if the daemon already runs
-        try:
-            with open(pidfile, 'r') as pf:
-
-                pid = int(pf.read().strip())
-        except IOError:
-            pid = None
-
-        if pid:
-            message = "pidfile {0} already exist. " + \
-                      "Daemon already running?\n"
-            sys.stderr.write(message.format(pidfile))
-            sys.exit(1)
-
-        # Start the daemon
-        self.daemonize(pidfile)
-        self.run(*args, **kwargs)
-
-    def run(self, host, port):
-        """ Run an HTTP server."""
-        if sys.version_info[0] == 3:
-            from http.server import HTTPServer, SimpleHTTPRequestHandler
-            httpd = HTTPServer((host, port), SimpleHTTPRequestHandler)
-        else:
-            import SimpleHTTPServer
-            import SocketServer
-            handler = SimpleHTTPServer.SimpleHTTPRequestHandler
-            httpd = SocketServer.TCPServer((host, port), handler)
-
-        print("Running on http://%s:%s/"; % (host, port))
-        os.chdir(self.root)
-        try:
-            httpd.serve_forever()
-        except KeyboardInterrupt:
-            sys.stderr.write(u"\nBye\n")
-
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(
-        description=sys.modules[__name__].__doc__,
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter
-    )
-    parser.add_argument('--port', action="store", default=9090, type=int,
-                        help='Set the listening port')
-    parser.add_argument('--root', action="store", default=os.getcwd())
-    parser.add_argument('--bind', action="store", default="0.0.0.0",
-                        help='Set the binding address')
-    parser.add_argument('--daemon', action="store_true", default=False)
-    parser.add_argument('--pid', action="store")
-
-    try:
-        args = parser.parse_args()
-        http_server = HTTPServerDaemon(root=args.root)
-        if args.daemon:
-            if args.pid is None:
-                parser.error("Need to set a pid file")
-            http_server.start(args.pid, args.bind, args.port)
-        else:
-            http_server.run(args.bind, args.port)
-    except Exception as exc:
-        sys.stderr.write(u"\nError: %s\n" % exc)
-        sys.exit(1)
diff --git a/default/steps/data/preseed/debian-testing-preseed.cfg 
b/default/steps/data/preseed/debian-testing-preseed.cfg
deleted file mode 100644
index 5af0d99..0000000
--- a/default/steps/data/preseed/debian-testing-preseed.cfg
+++ /dev/null
@@ -1,322 +0,0 @@
-#### Contents of the preconfiguration file (for wheezy)
-### Localization
-# Locale sets language and country.
-d-i debian-installer/locale string en_US.UTF-8
-
-# Keyboard selection.
-#d-i keymap select us
-d-i keyboard-configuration/xkb-keymap select us
-
-### Network configuration
-# netcfg will choose an interface that has link if possible. This makes it
-# skip displaying a list if there is more than one interface.
-d-i netcfg/choose_interface select auto
-
-# To pick a particular interface instead:
-#d-i netcfg/choose_interface select eth1
-
-# If you have a slow dhcp server and the installer times out waiting for
-# it, this might be useful.
-#d-i netcfg/dhcp_timeout string 60
-
-# If you prefer to configure the network manually, uncomment this line and
-# the static network configuration below.
-#d-i netcfg/disable_dhcp boolean true
-
-# If you want the preconfiguration file to work on systems both with and
-# without a dhcp server, uncomment these lines and the static network
-# configuration below.
-#d-i netcfg/dhcp_failed note
-#d-i netcfg/dhcp_options select Configure network manually
-
-# Static network configuration.
-#d-i netcfg/get_nameservers string 192.168.1.1
-#d-i netcfg/get_ipaddress string 192.168.1.42
-#d-i netcfg/get_netmask string 255.255.255.0
-#d-i netcfg/get_gateway string 192.168.1.1
-#d-i netcfg/confirm_static boolean true
-
-# Any hostname and domain names assigned from dhcp take precedence over
-# values set here. However, setting the values still prevents the questions
-# from being shown, even if values come from dhcp.
-d-i netcfg/get_hostname string kameleon
-d-i netcfg/get_domain string kameleon
-
-# Disable that annoying WEP key dialog.
-d-i netcfg/wireless_wep string
-# The wacky dhcp hostname that some ISPs use as a password of sorts.
-#d-i netcfg/dhcp_hostname string radish
-
-# If non-free firmware is needed for the network or other hardware, you can
-# configure the installer to always try to load it, without prompting. Or
-# change to false to disable asking.
-#d-i hw-detect/load_firmware boolean true
-
-### Network console
-# Use the following settings if you wish to make use of the network-console
-# component for remote installation over SSH. This only makes sense if you
-# intend to perform the remainder of the installation manually.
-#d-i anna/choose_modules string network-console
-#d-i network-console/password password r00tme
-#d-i network-console/password-again password r00tme
-
-### Mirror settings
-# If you select ftp, the mirror/country string does not need to be set.
-#d-i mirror/protocol string ftp
-d-i mirror/country string manual
-d-i mirror/http/hostname string http.debian.net
-d-i mirror/http/directory string /debian
-d-i mirror/http/proxy string
-
-# Suite to install.
-d-i mirror/suite string testing
-# Suite to use for loading installer components (optional).
-d-i mirror/udeb/suite string unstable
-
-### Clock and time zone setup
-# Controls whether or not the hardware clock is set to UTC.
-d-i clock-setup/utc boolean true
-
-# You may set this to any valid setting for $TZ; see the contents of
-# /usr/share/zoneinfo/ for valid values.
-d-i time/zone string UTC
-
-# Controls whether to use NTP to set the clock during the install
-d-i clock-setup/ntp boolean true
-# NTP server to use. The default is almost always fine here.
-#d-i clock-setup/ntp-server string ntp.example.com
-
-### Partitioning
-# If the system has free space you can choose to only partition that space.
-#d-i partman-auto/init_automatically_partition select biggest_free
-
-# Alternatively, you can specify a disk to partition. The device name must
-# be given in traditional non-devfs format.
-# Note: A disk must be specified, unless the system has only one disk.
-# For example, to use the first SCSI/SATA hard disk:
-#d-i partman-auto/disk string /dev/sda
-# In addition, you'll need to specify the method to use.
-# The presently available methods are: "regular", "lvm" and "crypto"
-d-i partman-auto/method string regular
-
-# If one of the disks that are going to be automatically partitioned
-# contains an old LVM configuration, the user will normally receive a
-# warning. This can be preseeded away...
-d-i partman-lvm/device_remove_lvm boolean true
-# The same applies to pre-existing software RAID array:
-d-i partman-md/device_remove_md boolean true
-
-# And the same goes for the confirmation to write the lvm partitions.
-d-i partman-lvm/confirm boolean true
-d-i partman-lvm/confirm_nooverwrite boolean true
-
-
-d-i partman/choose_partition select finish
-d-i partman-auto-lvm/guided_size string max
-
-# You can choose one of the three predefined partitioning recipes:
-# - atomic: all files in one partition
-# - home:   separate /home partition
-# - multi:  separate /home, /usr, /var, and /tmp partitions
-d-i partman-auto/choose_recipe select atomic
-d-i partman/default_filesystem string ext4
-
-# Or provide a recipe of your own...
-# The recipe format is documented in the file devel/partman-auto-recipe.txt.
-# If you have a way to get a recipe file into the d-i environment, you can
-# just point at it.
-#d-i partman-auto/expert_recipe_file string /hd-media/recipe
-
-# If not, you can put an entire recipe into the preconfiguration file in one
-# (logical) line. This example creates a small /boot partition, suitable
-# swap, and uses the rest of the space for the root partition:
-#d-i partman-auto/expert_recipe string                         \
-#      boot-root ::                                            \
-#              40 50 100 ext3                                  \
-#                      $primary{ } $bootable{ }                \
-#                      method{ format } format{ }              \
-#                      use_filesystem{ } filesystem{ ext3 }    \
-#                      mountpoint{ /boot }                     \
-#              .                                               \
-#              500 10000 1000000000 ext3                       \
-#                      method{ format } format{ }              \
-#                      use_filesystem{ } filesystem{ ext3 }    \
-#                      mountpoint{ / }                         \
-#              .                                               \
-#              64 512 300% linux-swap                          \
-#                      method{ swap } format{ }                \
-#              .
-
-#The preseed line that "selects finish" needs to be in a certain order in your 
preseed, the example-preseed does not follow this.
-#http://ubuntuforums.org/archive/index.php/t-1504045.html
-
-# This makes partman automatically partition without confirmation, provided
-# that you told it what to do using one of the methods above.
-d-i partman/confirm_write_new_label boolean true
-d-i partman/confirm boolean true
-d-i partman/confirm_nooverwrite boolean true
-
-
-### Base system installation
-# Select the initramfs generator used to generate the initrd for 2.6 kernels.
-#d-i base-installer/kernel/linux/initramfs-generators string yaird
-
-# The kernel image (meta) package to be installed; "none" can be used if no
-# kernel is to be installed.
-#d-i base-installer/kernel/image string linux-image-2.6-486
-
-### Account setup
-# Enable login to root account
-d-i passwd/root-login boolean true
-# Root password, either in clear text
-d-i passwd/root-password password kameleon
-d-i passwd/root-password-again password kameleon
-# or encrypted using an MD5 hash.
-#d-i passwd/root-password-crypted password [MD5 hash]
-
-# Skip creation of a normal user account.
-# d-i passwd/make-user boolean false
-
-# To create a normal user account.
-d-i passwd/user-fullname string Kameleon User
-d-i passwd/username string kameleon
-# Normal user's password, either in clear text
-d-i passwd/user-password password kameleon
-d-i passwd/user-password-again password kameleon
-# or encrypted using an MD5 hash.
-#d-i passwd/user-password-crypted password [MD5 hash]
-# Create the first user with the specified UID instead of the default.
-#d-i passwd/user-uid string 1010
-# d-i user-setup/encrypt-home boolean false
-# d-i user-setup/allow-password-weak boolean true
-
-# The user account will be added to some standard initial groups. To
-# override that, use this.
-d-i passwd/user-default-groups string audio cdrom video admin
-
-### Apt setup
-# You can choose to install non-free and contrib software.
-#d-i apt-setup/non-free boolean true
-#d-i apt-setup/contrib boolean true
-# Uncomment this if you don't want to use a network mirror.
-#d-i apt-setup/use_mirror boolean false
-# Select which update services to use; define the mirrors to be used.
-# Values shown below are the normal defaults.
-# FIXME : temporarily remove security repo while debian fixes the installer 
(default value : d-i apt-setup/services-select multiselect security, volatile)
-d-i apt-setup/services-select multiselect
-#d-i apt-setup/security_host string security.debian.org
-#d-i apt-setup/volatile_host string volatile.debian.org
-
-# Scan another CD or DVD?
-d-i apt-setup/cdrom/set-first boolean false
-
-# By default the installer requires that repositories be authenticated
-# using a known gpg key. This setting can be used to disable that
-# authentication. Warning: Insecure, not recommended.
-#d-i debian-installer/allow_unauthenticated string true
-
-### Package selection
-tasksel tasksel/first multiselect none
-# If the desktop task is selected, install the kde and xfce desktops
-# instead of the default gnome desktop.
-#tasksel tasksel/desktop multiselect kde, xfce
-
-# Individual additional packages to install
-d-i pkgsel/include string openssh-server sudo rsync haveged
-
-# Whether to upgrade packages after debootstrap.
-# Allowed values: none, safe-upgrade, full-upgrade
-d-i pkgsel/upgrade select none
-
-# Some versions of the installer can report back on what software you have
-# installed, and what software you use. The default is not to report back,
-# but sending reports helps the project determine what software is most
-# popular and include it on CDs.
-popularity-contest popularity-contest/participate boolean false
-
-### Boot loader installation
-# Grub is the default boot loader (for x86). If you want lilo installed
-# instead, uncomment this:
-#d-i grub-installer/skip boolean true
-# To also skip installing lilo, and install no bootloader, uncomment this
-# too:
-#d-i lilo-installer/skip boolean true
-
-# This is fairly safe to set, it makes grub install automatically to the MBR
-# if no other operating system is detected on the machine.
-d-i grub-installer/only_debian boolean true
-
-# This one makes grub-installer install to the MBR if it also finds some other
-# OS, which is less safe as it might not be able to boot that other OS.
-d-i grub-installer/with_other_os boolean true
-
-# Alternatively, if you want to install to a location other than the mbr,
-# uncomment and edit these lines:
-#d-i grub-installer/only_debian boolean false
-#d-i grub-installer/with_other_os boolean false
-#d-i grub-installer/bootdev  string (hd0,0)
-# To install grub to multiple disks:
-#d-i grub-installer/bootdev  string (hd0,0) (hd1,0) (hd2,0)
-
-# Optional password for grub, either in clear text
-#d-i grub-installer/password password r00tme
-#d-i grub-installer/password-again password r00tme
-# or encrypted using an MD5 hash, see grub-md5-crypt(8).
-#d-i grub-installer/password-crypted password [MD5 hash]
-
-# GRUB install devices:
-# Choices: /dev/sda (21474 MB; VMware_Virtual_S), /dev/sda1 (21472 MB; 
VMware_Virtual_S)
-grub-pc     grub-pc/install_devices multiselect /dev/vda
-# Choices: Enter device manually, /dev/sda
-grub-installer  grub-installer/choose_bootdev   select  /dev/vda
-
-### Finishing up the installation
-# During installations from serial console, the regular virtual consoles
-# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next
-# line to prevent this.
-#d-i finish-install/keep-consoles boolean true
-
-# Avoid that last message about the install being complete.
-d-i finish-install/reboot_in_progress note
-
-# This will prevent the installer from ejecting the CD during the reboot,
-# which is useful in some situations.
-d-i cdrom-detect/eject boolean false
-
-# This is how to make the installer shutdown when finished, but not
-# reboot into the installed system.
-#d-i debian-installer/exit/halt boolean true
-# This will power off the machine instead of just halting it.
-d-i debian-installer/exit/poweroff boolean true
-
-### Preseeding other packages
-# Depending on what software you choose to install, or if things go wrong
-# during the installation process, it's possible that other questions may
-# be asked. You can preseed those too, of course. To get a list of every
-# possible question that could be asked during an install, do an
-# installation, and then run these commands:
-#   debconf-get-selections --installer > file
-#   debconf-get-selections >> file
-
-
-#### Advanced options
-### Running custom commands during the installation
-# d-i preseeding is inherently not secure. Nothing in the installer checks
-# for attempts at buffer overflows or other exploits of the values of a
-# preconfiguration file like this one. Only use preconfiguration files from
-# trusted locations! To drive that home, and because it's generally useful,
-# here's a way to run any shell command you'd like inside the installer,
-# automatically.
-
-# This first command is run as early as possible, just after
-# preseeding is read.
-# Prevent packaged version of VirtualBox Guest Additions being installed:
-#d-i preseed/early_command string sed -i \
-#  '/in-target/idiscover(){/sbin/discover|grep -v VirtualBox;}' \
-#  /usr/lib/pre-pkgsel.d/20install-hwpackages
-
-# This command is run just before the install finishes, but when there is
-# still a usable /target directory. You can chroot to /target and use it
-# directly, or use the apt-install and in-target commands to easily install
-# packages and run commands in the target system.
-
diff --git a/default/steps/env/functions.sh b/default/steps/env/functions.sh
deleted file mode 100644
index 1abcc38..0000000
--- a/default/steps/env/functions.sh
+++ /dev/null
@@ -1,201 +0,0 @@
-## functions
-
-function fail {
-    echo $@ 1>&2
-    false
-}
-
-export -f fail
-
-function __download {
-    local src=$1
-    local dst=$2
-    if [ -n "$DOWNLOAD_SRC_URL" ]; then
-        src="$DOWNLOAD_SRC_URL"
-    fi
-    if [ -z "$src" ]; then
-        fail "No URL to download from"
-    fi
-    # If dst is unset or a directory, infers dst pathname from src
-    if [ -z "$dst" -o "${dst: -1}" == "/" ]; then
-        dst="$dst${src##*/}"
-        dst="${dst%%\?*}"
-    fi
-    local dstdir=${dst%/*}
-    if [ -n "$dstdir" -a "$dstdir" != "$dst" ]; then
-        mkdir -p $dstdir
-    fi
-    echo -n "Downloading: $src..."
-    # Put cURL first because it accept URIs (like file://...)
-    if which curl >/dev/null; then
-        echo " (cURL)"
-        curl -S --fail -# -L --retry 999 --retry-max-time 0 "$src" -o "$dst" 
2>&1
-    elif which wget >/dev/null; then
-        echo " (wget)"
-        wget --retry-connrefused --progress=bar:force "$src" -O "$dst" 2>&1
-    elif which python >/dev/null; then
-        echo " (python)"
-        python -c <<EOF
-import sys
-import time
-if sys.version_info >= (3,):
-    import urllib.request as urllib
-else:
-    import urllib
-
-
-def reporthook(count, block_size, total_size):
-    global start_time
-    if count == 0:
-        start_time = time.time()
-        return
-    duration = time.time() - start_time
-    progress_size = float(count * block_size)
-    if duration != 0:
-        if total_size == -1:
-            total_size = block_size
-            percent = 'Unknown size, '
-        else:
-            percent = '%.0f%%, ' % float(count * block_size * 100 / total_size)
-        speed = int(progress_size / (1024 * duration))
-        sys.stdout.write('\r%s%.2f MB, %d KB/s, %d seconds passed'
-                         % (percent, progress_size / (1024 * 1024), speed, 
duration))
-        sys.stdout.flush()
-
-urllib.urlretrieve('$src', '$dst', reporthook=reporthook)
-print('\n')
-EOF
-        true
-    else
-        fail "No way to download $src"
-    fi
-}
-
-export -f __download
-
-function __download_recipe_build() {
-    set -e
-    local recipe=$1
-    local version=${2:-latest}
-    local do_checksum=${3:-true}
-    local do_checksign=${4:-false}
-    local do_cache=${5:-false}
-    local builds_url=${6:-http://kameleon.imag.fr/builds}
-    local dest_dir="${7:-$recipe}"
-    local dest=""
-    mkdir -p $dest_dir
-    pushd $dest_dir > /dev/null
-    echo "Downloading $recipe ($version):"
-    __download $builds_url/${recipe}_$version.manifest
-    if [ "$do_checksign" == "true" ]; then
-        __download $builds_url/${recipe}_$version.manifest.sign
-        gpg --verify ${recipe}_$version.manifest{.sign,} || fail "Cannot 
verify signature"
-    fi
-    for f in $(< ${recipe}_$version.manifest); do
-        if [[ $f =~ ^$recipe-cache_ ]] && [ "$do_cache" != "true" ]; then
-            continue
-        fi
-        if [[ $f =~ \.sha[[:digit:]]+sum$ ]]; then
-            if [ "$do_checksum" == "true" ]; then
-                __download $builds_url/$f
-                ${f##*.} -c $f || fail "Cannot verify checksum"
-                if [ "$do_checksign" == "true" ]; then
-                    __download $builds_url/$f.sign
-                    gpg --verify $f{.sign,} || fail "Cannot verify signature"
-                fi
-            fi
-        else
-            __download $builds_url/$f
-            echo -n "Link to version-less filename: "
-            dest=${f%_*}.tar.${f#*.tar.}
-            ln -fv $f $dest
-        fi
-    done
-    popd > /dev/null
-    export UPSTREAM_TARBALL="$dest_dir/$dest"
-    set +e
-}
-
-export -f __download_recipe_build
-
-function __download_kadeploy_environment_image() {
-    set -e
-    local kaenv_name=$1
-    local kaenv_user=$2
-    local kaenv_version=$3
-    local remote=$4
-    local dest_dir=${5:-$kaenv_name}
-    mkdir -p $dest_dir
-    echo "Retrieve image for Kadeploy environment $kaenv_name"
-    ${remote:+ssh $remote }which kaenv3 > /dev/null || fail "kaenv3 command 
not found (${remote:-localhost})"
-    # retrieve image[file], image[kind] and image[compression] from kaenv3
-    declare -A image
-    __kaenv() { local k=${2%%:*}; image[$k]=${2#*:}; }
-    mapfile -s 1 -t -c1 -C __kaenv < <(${remote:+ssh $remote 
}kaenv3${kaenv_user:+ -u $kaenv_user}${kaenv_version:+ --env-version 
$kaenv_version} -p $kaenv_name | grep -A3 -e '^image:' | sed -e 's/ //g')
-    [ -n "${image[file]}" ] || fail "Failed to retrieve environment 
$kaenv_name"
-    if [ "${image[compression]}" == "gzip" ]; then
-        image[compression]="gz"
-    elif [ "${image[compression]}" == "bzip2" ]; then
-        image[compression]="bz2"
-    fi
-    image[protocol]=${image[file]%%:*}
-    image[path]=${image[file]#*://}
-    image[filename]=${image[path]##*/}
-    local 
dest=$dest_dir/${image[filename]%%.*}.${image[kind]}.${image[compression]}
-    if [ "${image[kind]}" == "tar" ]; then
-        if [ "${image[protocol]}" == "http" -o "${image[protocol]}" == "https" 
]; then
-            __download ${image[file]} $dest
-        else
-            if  [ "${image[protocol]}" == "server" ]; then
-                # If server:// => see if available locally (NFS) or fail, same 
as if local:// <=> ""
-                echo "Image is server side, try and fetch it from local file 
${image[path]}"
-            fi
-            [ -r ${image[path]} ] || fail "Cannot retrieve ${image[file]}"
-            cp -v ${image[path]} $dest
-        fi
-    else # dd or whatever
-        fail "Image format${image[kind]:+ ${image[kind]}} is not supported"
-    fi
-    export UPSTREAM_TARBALL=$dest
-    set +e
-}
-
-export -f __download_kadeploy_environment_image
-
-function __find_linux_boot_device() {
-    local PDEVICE=`stat -c %04D /boot`
-    for file in $(find /dev -type b 2>/dev/null) ; do
-        local CURRENT_DEVICE=$(stat -c "%02t%02T" $file)
-        if [ $CURRENT_DEVICE = $PDEVICE ]; then
-            ROOTDEVICE="$file"
-            break;
-        fi
-    done
-    echo "$ROOTDEVICE"
-}
-
-export -f __find_linux_boot_device
-
-
-function __find_free_port() {
-  local begin_port=$1
-  local end_port=$2
-
-  local port=$begin_port
-  local ret=$(nc -z 127.0.0.1 $port && echo in use || echo free)
-  while [ $port -le $end_port ] && [ "$ret" == "in use" ]
-  do
-    local port=$[$port+1]
-    local ret=$(nc -z 127.0.0.1 $port && echo in use || echo free)
-  done
-
-  # manage loop exits
-  if [[ $port -gt $end_port ]]
-  then
-    fail "No free port available between $begin_port and $end_port"
-  fi
-
-  echo $port
-}
-
-export -f __find_free_port
diff --git a/grid5000/from_scratch/aarch64/base.yaml 
b/grid5000/from_scratch/aarch64/base.yaml
deleted file mode 100644
index 3b6d58b..0000000
--- a/grid5000/from_scratch/aarch64/base.yaml
+++ /dev/null
@@ -1,25 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: arm64 base recipe
-#
-#==============================================================================
----
-extend: ../base.yaml
-# Global variables use by Kameleon engine and the steps
-global:
-  arch: aarch64
-  installer_iso_arch: aarch64
-  qemu_arch: aarch64
-  qemu_enable_kvm: true
-  qemu_uefi: true
-
-bootstrap:
-  - "@base"
-
-setup:
-  - "@base"
-
-export:
-  - "@base"
diff --git a/grid5000/from_scratch/aarch64/debian-base.yaml 
b/grid5000/from_scratch/aarch64/debian-base.yaml
deleted file mode 100644
index 4450198..0000000
--- a/grid5000/from_scratch/aarch64/debian-base.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: Debian generic recipe using the netinstall mechanim
-#
-# USAGE:
-#   Select directly in this recipe: see usage example commented in the global 
of
-#   this recipe
-#
-#   or, override the globals directly in CLI. For example:
-#
-#   kameleon build --global distrib:debian,release:wheezy
-#
-#   or extends this recipe with your own and override those variable in it.
-#
-#==============================================================================
----
-extend: base.yaml
-
-global:
-  # Boilerplate values, so that `kameleon info' works with the recipe.
-  # For a specific version of Debian, please see the dedicated recipe, as this
-  # recipe is mainly meant as being extended.
-  distrib: debian
-  deb_arch: arm64
-  release: buster
-  release_number: 10
-
-  # URL to retrieve packages from (sources.list)
-  deb_mirror_hostname: deb.debian.org
-  deb_mirror_directory: /debian
-  deb_mirror_uri: http://$${deb_mirror_hostname}$${deb_mirror_directory}
-  deb_security_hostname: security.debian.org
-  deb_security_directory: /debian
-  deb_components: main contrib non-free
-
-  qemu_iso_path:
-  installer_iso_finder_helper:
-  # Debian netinstall iso refuses to get keyborad keys via the qemu sendkey 
command on ARM64.
-  # Because of that, we cannot set the preseed in the iso image cdrom boot in 
qemu.
-  # As a consequence, we use the netboot instead and boot kernel and initrd 
directly
-  installer_kernel_url: 
$${deb_mirror_uri}/dists/$${release}/main/installer-$${deb_arch}/current/images/netboot/debian-installer/$${deb_arch}/linux
-  installer_initrd_url: 
$${deb_mirror_uri}/dists/$${release}/main/installer-$${deb_arch}/current/images/netboot/debian-installer/$${deb_arch}/initrd.gz
-  # Debian arm64 netboot requires to give explicitly auto=true and 
priority=critical
-  # (the "auto" alias seems not to only be defined for amd64).
-  # FIXME find the Debian documentation page which explains that.
-  installer_cmdline: "auto=true priority=critical 
url=http://%LOCAL_IP%:%HTTP_PORT%/preseed.cfg";
-  base_preseed_path: 
$${kameleon_data_dir}/preseed/$${distrib}-$${release}-preseed.cfg
-  preseed_path: $${kameleon_cwd}/preseed.cfg
-
-bootstrap:
-  - "@base"
-
-setup:
-  - "@base"
-
-export:
-  - "@base"
diff --git a/grid5000/from_scratch/debian-base.yaml 
b/grid5000/from_scratch/debian-base.yaml
deleted file mode 100644
index 447e57d..0000000
--- a/grid5000/from_scratch/debian-base.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: Debian generic recipe using the netinstall mechanim
-#
-# USAGE:
-#   Select directly in this recipe: see usage example commented in the global 
of
-#   this recipe
-#
-#   or, override the globals directly in CLI. For example:
-#
-#   kameleon build --global distrib:debian,release:wheezy
-#
-#   or extends this recipe with your own and override those variable in it.
-#
-#==============================================================================
----
-extend: base.yaml
-
-global:
-  # Boilerplate values, so that `kameleon info' works with the recipe.
-  # For a specific version of Debian, please see the dedicated recipe, as this
-  # recipe is mainly meant as being extended.
-  distrib: debian
-  deb_arch: amd64
-  release: jessie
-  release_number: 8
-
-  # URL to retrieve packages from (sources.list)
-  deb_mirror_hostname: deb.debian.org
-  deb_mirror_directory: /debian
-  deb_mirror_uri: http://$${deb_mirror_hostname}$${deb_mirror_directory}
-  deb_security_hostname: security.debian.org
-  deb_security_directory: /debian
-  deb_components: main contrib non-free
-
-  # Install from the installer's iso
-  # The location of the Debian netinstall iso can be set manually or guessed
-  # using a url finder helper script
-  #installer_iso_filename: debian-$${release_number}-$${deb_arch}-netinst.iso
-  #installer_iso_location: archive
-  #installer_iso_release_version: 8.0.0
-  #installer_iso_url: 
http://cdimage.debian.org/cdimage/$${installer_iso_location}/$${installer_iso_release_version}/$${deb_arch}/iso-cd/$${installer_iso_filename}
-  installer_iso_url:
-  installer_iso_finder_helper: 
$${kameleon_data_dir}/helpers/netinstall_iso_finder.py
-  installer_iso_finder_args: $${distrib} $${release_number} $${deb_arch}
-  qemu_iso_path: $${kameleon_cwd}/$${distrib}.iso
-  # Or install from the netboot kernel and initrd directly
-  #installer_kernel_url: 
http://deb.debian.org/debian/dists/$${release}/main/installer-$${deb_arch}/current/images/netboot/debian-installer/$${deb_arch}/linux
-  #installer_initrd_url: 
http://deb.debian.org/debian/dists/$${release}/main/installer-$${deb_arch}/current/images/netboot/debian-installer/$${deb_arch}/initrd.gz
-  #installer_cmdline: "auto url=http://%LOCAL_IP%:%HTTP_PORT%/preseed.cfg";
-
-  base_preseed_path: 
$${kameleon_data_dir}/preseed/$${distrib}-$${release}-preseed.cfg
-  preseed_path: $${kameleon_cwd}/preseed.cfg
-
-  qemu_sendkeys_commands: 
$${kameleon_data_dir}/qemu-sendkeys/netinst-iso-$${distrib}
-
-
-bootstrap:
-  - "@base"
-
-setup:
-  - "@base"
-
-export:
-  - "@base"
diff --git a/grid5000/from_scratch/debian-bullseye.yaml 
b/grid5000/from_scratch/debian-bullseye.yaml
deleted file mode 100644
index a017aab..0000000
--- a/grid5000/from_scratch/debian-bullseye.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-#==============================================================================
-# vim: softtabstop=2 shiftwidth=2 expandtab fenc=utf-8 cc=81 tw=80
-#==============================================================================
-#
-# DESCRIPTION: Debian 11 (Bullseye) recipe using the netinstall mechanism
-#
-#==============================================================================
----
-extend: debian-base.yaml
-# Global variables use by Kameleon engine and the steps
-global:
-  # Distribution
-  distrib: debian
-  release: bullseye
-  release_number: 11
-
-bootstrap:
-  - "@base"
-
-setup:
-  - "@base"
-
-export:
-  - "@base"
diff --git a/grid5000/steps/bootstrap/debian/prepare_autoinstall.yaml 
b/grid5000/steps/bootstrap/debian/prepare_autoinstall.yaml
deleted file mode 100644
index f737d20..0000000
--- a/grid5000/steps/bootstrap/debian/prepare_autoinstall.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-- copy_autoinstall_script_to_http_directory:
-  - exec_local: mkdir -p $${http_directory}
-  - exec_local: cp $${base_preseed_path} $${http_directory}/preseed.cfg
-
-- customize_preseed:
-  - exec_local: sed -i -e 's|\(d-i passwd/root-password password 
\).*|\1$${root_password}|g' $${http_directory}/preseed.cfg
-  - exec_local: sed -i -e 's|\(d-i passwd/root-password-again password 
\).*|\1$${root_password}|g' $${http_directory}/preseed.cfg
-  - exec_local: sed -i -e 's|\(d-i mirror/http/hostname string 
\).*|\1$${deb_mirror_hostname}|g' $${http_directory}/preseed.cfg
-  - exec_local: sed -i -e 's|\(d-i mirror/http/directory string 
\).*|\1$${deb_mirror_directory}|g' $${http_directory}/preseed.cfg
-  - exec_local: sed -i -e 's|\(d-i apt-setup/security_host string 
\).*|\1$${deb_security_hostname}|g' $${http_directory}/preseed.cfg
-  - exec_local: sed -i -e 's|\(d-i apt-setup/security_path string 
\).*|\1$${deb_security_directory}|g' $${http_directory}/preseed.cfg
diff --git a/grid5000/steps/bootstrap/prepare_appliance.yaml 
b/grid5000/steps/bootstrap/prepare_appliance.yaml
deleted file mode 100644
index 4f597c4..0000000
--- a/grid5000/steps/bootstrap/prepare_appliance.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-- insecure_ssh_key: $${kameleon_cwd}/insecure_ssh_key
-
-- generate_ssh_keys:
-  - check_cmd_local: ssh-keygen
-  - exec_local: echo -e  'y\n' | ssh-keygen -q -t rsa -b 4096 -f 
$${insecure_ssh_key} -N ''
-  - exec_local: cat $${insecure_ssh_key}
-
-- inject_ssh_private_key:
-  - check_cmd_local: virt-customize
-  - exec_local: |
-      virt-customize \
-        -a $${image_disk}.$${image_format} \
-        --run-command 'mkdir -p /root/.ssh' \
-        --upload $${insecure_ssh_key}.pub:/root/.ssh/.kameleon_authorized_keys 
\
-        --run-command 'touch /root/.ssh/authorized_keys' \
-        --run-command 'cp /root/.ssh/authorized_keys 
/root/.ssh/authorized_keys.bak' \
-        --run-command 'cat /root/.ssh/.kameleon_authorized_keys >> 
/root/.ssh/authorized_keys' \
-        --run-command 'chmod 700 /root/.ssh' \
-        --run-command 'chmod -R go-rw /root/.ssh' \
-        --run-command 'chown -R root:root /root/.ssh'
-  - on_export_init:
-    - exec_local: |
-        virt-customize \
-          -a $${image_disk}.$${image_format} \
-          --run-command 'mv /root/.ssh/authorized_keys.bak 
/root/.ssh/authorized_keys' \
-          --delete /root/.ssh/.kameleon_authorized_keys
-
-- add_insecure_key_to_ssh_config:
-  - on_checkpoint: redo
-  - exec_local: |
-      cat <<EOF >> $${ssh_config_file}
-      IdentityFile $${insecure_ssh_key}
-      EOF
diff --git a/grid5000/steps/bootstrap/prepare_disk.yaml 
b/grid5000/steps/bootstrap/prepare_disk.yaml
deleted file mode 100644
index 9c3dce4..0000000
--- a/grid5000/steps/bootstrap/prepare_disk.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-- create_initial_image:
-  - check_cmd_local: qemu-img
-  - exec_local: |
-      rm -f $${image_disk}.$${image_format}
-      qemu-img create -f qcow2 $${image_disk}.$${image_format} 
$${qemu_image_size}
-
-- delete_initial_image:
-  - on_checkpoint: skip
-  - on_export_clean:
-    - exec_local: rm -f $${image_disk}.$${image_format}
diff --git a/grid5000/steps/bootstrap/prepare_ssh_to_out_context.yaml 
b/grid5000/steps/bootstrap/prepare_ssh_to_out_context.yaml
deleted file mode 100644
index 172f7a4..0000000
--- a/grid5000/steps/bootstrap/prepare_ssh_to_out_context.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-- select_empty_port:
-  - on_checkpoint: redo
-  - exec_local: |
-      # Find empty SSH forwarding port
-      SSH_FWD_PORT=$(__find_free_port 50000 60000)
-      echo "SSH forwarding port: $SSH_FWD_PORT"
-- prepare_ssh_config:
-  - on_checkpoint: redo
-  - write_local:
-    - $${ssh_config_file}
-    - |
-      Host $${kameleon_recipe_name}
-      HostName 127.0.0.1
-      Port ${SSH_FWD_PORT}
-      User root
-      UserKnownHostsFile /dev/null
-      StrictHostKeyChecking no
-      PasswordAuthentication no
-      IdentitiesOnly yes
-      LogLevel FATAL
-      ForwardAgent yes
-      Compression yes
-      Protocol 2
diff --git a/grid5000/steps/checkpoints/simple.yaml 
b/grid5000/steps/checkpoints/simple.yaml
deleted file mode 100644
index dbd60df..0000000
--- a/grid5000/steps/checkpoints/simple.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-enabled?:
-  - exec_local: test -f $${kameleon_cwd}/checkpoint_enabled
-
-create:
-  - exec_local: |
-      echo @microstep_id >> $${kameleon_cwd}/checkpoints.list
-
-apply:
-  - exec_local: |
-      touch $${kameleon_cwd}/checkpoints.list
-      grep -R @microstep_id $${kameleon_cwd}/checkpoints.list
-
-
-clear:
-  - exec_local: |
-      echo > $${kameleon_cwd}/checkpoints.list
-
-list:
-  - exec_local: |
-      touch $${kameleon_cwd}/checkpoints.list
-      cat $${kameleon_cwd}/checkpoints.list | uniq
diff --git a/grid5000/steps/data/preseed/debian-buster-preseed.cfg 
b/grid5000/steps/data/preseed/debian-buster-preseed.cfg
deleted file mode 100644
index 434efb0..0000000
--- a/grid5000/steps/data/preseed/debian-buster-preseed.cfg
+++ /dev/null
@@ -1,443 +0,0 @@
-#### Contents of the preconfiguration file (for buster)
-### Localization
-# Preseeding only locale sets language, country and locale.
-d-i debian-installer/locale string en_US.UTF-8
-
-# The values can also be preseeded individually for greater flexibility.
-#d-i debian-installer/language string en
-#d-i debian-installer/country string NL
-#d-i debian-installer/locale string en_GB.UTF-8
-# Optionally specify additional locales to be generated.
-#d-i localechooser/supported-locales multiselect en_US.UTF-8, nl_NL.UTF-8
-
-# Keyboard selection.
-d-i keyboard-configuration/xkb-keymap select us
-# d-i keyboard-configuration/toggle select No toggling
-
-### Network configuration
-# Disable network configuration entirely. This is useful for cdrom
-# installations on non-networked devices where the network questions,
-# warning and long timeouts are a nuisance.
-#d-i netcfg/enable boolean false
-
-# netcfg will choose an interface that has link if possible. This makes it
-# skip displaying a list if there is more than one interface.
-d-i netcfg/choose_interface select auto
-
-# To pick a particular interface instead:
-#d-i netcfg/choose_interface select eth1
-
-# To set a different link detection timeout (default is 3 seconds).
-# Values are interpreted as seconds.
-#d-i netcfg/link_wait_timeout string 10
-
-# If you have a slow dhcp server and the installer times out waiting for
-# it, this might be useful.
-#d-i netcfg/dhcp_timeout string 60
-#d-i netcfg/dhcpv6_timeout string 60
-
-# If you prefer to configure the network manually, uncomment this line and
-# the static network configuration below.
-#d-i netcfg/disable_autoconfig boolean true
-
-# If you want the preconfiguration file to work on systems both with and
-# without a dhcp server, uncomment these lines and the static network
-# configuration below.
-#d-i netcfg/dhcp_failed note
-#d-i netcfg/dhcp_options select Configure network manually
-
-# Static network configuration.
-#
-# IPv4 example
-#d-i netcfg/get_ipaddress string 192.168.1.42
-#d-i netcfg/get_netmask string 255.255.255.0
-#d-i netcfg/get_gateway string 192.168.1.1
-#d-i netcfg/get_nameservers string 192.168.1.1
-#d-i netcfg/confirm_static boolean true
-#
-# IPv6 example
-#d-i netcfg/get_ipaddress string fc00::2
-#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
-#d-i netcfg/get_gateway string fc00::1
-#d-i netcfg/get_nameservers string fc00::1
-#d-i netcfg/confirm_static boolean true
-
-# Any hostname and domain names assigned from dhcp take precedence over
-# values set here. However, setting the values still prevents the questions
-# from being shown, even if values come from dhcp.
-d-i netcfg/get_hostname string kameleon
-d-i netcfg/get_domain string kameleon
-
-# If you want to force a hostname, regardless of what either the DHCP
-# server returns or what the reverse DNS entry for the IP is, uncomment
-# and adjust the following line.
-#d-i netcfg/hostname string somehost
-
-# Disable that annoying WEP key dialog.
-d-i netcfg/wireless_wep string
-# The wacky dhcp hostname that some ISPs use as a password of sorts.
-#d-i netcfg/dhcp_hostname string radish
-
-# If non-free firmware is needed for the network or other hardware, you can
-# configure the installer to always try to load it, without prompting. Or
-# change to false to disable asking.
-#d-i hw-detect/load_firmware boolean true
-
-### Network console
-# Use the following settings if you wish to make use of the network-console
-# component for remote installation over SSH. This only makes sense if you
-# intend to perform the remainder of the installation manually.
-#d-i anna/choose_modules string network-console
-#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key
-#d-i network-console/password password r00tme
-#d-i network-console/password-again password r00tme
-
-### Mirror settings
-# If you select ftp, the mirror/country string does not need to be set.
-#d-i mirror/protocol string ftp
-d-i mirror/country string manual
-d-i mirror/http/hostname string http.fr.debian.org
-d-i mirror/http/directory string /debian
-d-i mirror/http/proxy string
-
-# Suite to install.
-#d-i mirror/suite string testing
-# Suite to use for loading installer components (optional).
-#d-i mirror/udeb/suite string testing
-
-### Account setup
-# Skip creation of a root account (normal user account will be able to
-# use sudo).
-#d-i passwd/root-login boolean false
-# Alternatively, to skip creation of a normal user account.
-#d-i passwd/make-user boolean false
-# Enable login to root account
-d-i passwd/root-login boolean true
-
-# Root password, either in clear text
-d-i passwd/root-password password kameleon
-d-i passwd/root-password-again password kameleon
-# or encrypted using a crypt(3)  hash.
-#d-i passwd/root-password-crypted password [crypt(3) hash]
-
-# To create a normal user account.
-d-i passwd/user-fullname string Kameleon User
-d-i passwd/username string kameleon
-# Normal user's password, either in clear text
-d-i passwd/user-password password kameleon
-d-i passwd/user-password-again password kameleon
-# or encrypted using a crypt(3) hash.
-#d-i passwd/user-password-crypted password [crypt(3) hash]
-# Create the first user with the specified UID instead of the default.
-#d-i passwd/user-uid string 1010
-
-# The user account will be added to some standard initial groups. To
-# override that, use this.
-#d-i passwd/user-default-groups string audio cdrom video
-d-i passwd/user-default-groups string audio cdrom video admin
-
-### Clock and time zone setup
-# Controls whether or not the hardware clock is set to UTC.
-d-i clock-setup/utc boolean true
-
-# You may set this to any valid setting for $TZ; see the contents of
-# /usr/share/zoneinfo/ for valid values.
-d-i time/zone string UTC
-
-# Controls whether to use NTP to set the clock during the install
-d-i clock-setup/ntp boolean true
-# NTP server to use. The default is almost always fine here.
-#d-i clock-setup/ntp-server string ntp.example.com
-
-### Partitioning
-## Partitioning example
-# If the system has free space you can choose to only partition that space.
-# This is only honoured if partman-auto/method (below) is not set.
-#d-i partman-auto/init_automatically_partition select biggest_free
-
-# Alternatively, you may specify a disk to partition. If the system has only
-# one disk the installer will default to using that, but otherwise the device
-# name must be given in traditional, non-devfs format (so e.g. /dev/sda
-# and not e.g. /dev/discs/disc0/disc).
-# For example, to use the first SCSI/SATA hard disk:
-#d-i partman-auto/disk string /dev/sda
-# In addition, you'll need to specify the method to use.
-# The presently available methods are:
-# - regular: use the usual partition types for your architecture
-# - lvm:     use LVM to partition the disk
-# - crypto:  use LVM within an encrypted partition
-d-i partman-auto/method string regular
-
-# If one of the disks that are going to be automatically partitioned
-# contains an old LVM configuration, the user will normally receive a
-# warning. This can be preseeded away...
-d-i partman-lvm/device_remove_lvm boolean true
-# The same applies to pre-existing software RAID array:
-d-i partman-md/device_remove_md boolean true
-# And the same goes for the confirmation to write the lvm partitions.
-d-i partman-lvm/confirm boolean true
-d-i partman-lvm/confirm_nooverwrite boolean true
-
-# You can choose one of the three predefined partitioning recipes:
-# - atomic: all files in one partition
-# - home:   separate /home partition
-# - multi:  separate /home, /var, and /tmp partitions
-d-i partman-auto/choose_recipe select atomic
-
-# Or provide a recipe of your own...
-# If you have a way to get a recipe file into the d-i environment, you can
-# just point at it.
-#d-i partman-auto/expert_recipe_file string /hd-media/recipe
-
-# If not, you can put an entire recipe into the preconfiguration file in one
-# (logical) line. This example creates a small /boot partition, suitable
-# swap, and uses the rest of the space for the root partition:
-#d-i partman-auto/expert_recipe string                         \
-#      boot-root ::                                            \
-#              40 50 100 ext3                                  \
-#                      $primary{ } $bootable{ }                \
-#                      method{ format } format{ }              \
-#                      use_filesystem{ } filesystem{ ext3 }    \
-#                      mountpoint{ /boot }                     \
-#              .                                               \
-#              500 10000 1000000000 ext3                       \
-#                      method{ format } format{ }              \
-#                      use_filesystem{ } filesystem{ ext3 }    \
-#                      mountpoint{ / }                         \
-#              .                                               \
-#              64 512 300% linux-swap                          \
-#                      method{ swap } format{ }                \
-#              .
-
-# The full recipe format is documented in the file partman-auto-recipe.txt
-# included in the 'debian-installer' package or available from D-I source
-# repository. This also documents how to specify settings such as file
-# system labels, volume group names and which physical devices to include
-# in a volume group.
-
-# This makes partman automatically partition without confirmation, provided
-# that you told it what to do using one of the methods above.
-d-i partman-partitioning/confirm_write_new_label boolean true
-d-i partman/choose_partition select finish
-d-i partman/confirm boolean true
-d-i partman/confirm_nooverwrite boolean true
-
-# When disk encryption is enabled, skip wiping the partitions beforehand.
-#d-i partman-auto-crypto/erase_disks boolean false
-
-## Partitioning using RAID
-# The method should be set to "raid".
-#d-i partman-auto/method string raid
-# Specify the disks to be partitioned. They will all get the same layout,
-# so this will only work if the disks are the same size.
-#d-i partman-auto/disk string /dev/sda /dev/sdb
-
-# Next you need to specify the physical partitions that will be used. 
-#d-i partman-auto/expert_recipe string \
-#      multiraid ::                                         \
-#              1000 5000 4000 raid                          \
-#                      $primary{ } method{ raid }           \
-#              .                                            \
-#              64 512 300% raid                             \
-#                      method{ raid }                       \
-#              .                                            \
-#              500 10000 1000000000 raid                    \
-#                      method{ raid }                       \
-#              .
-
-# Last you need to specify how the previously defined partitions will be
-# used in the RAID setup. Remember to use the correct partition numbers
-# for logical partitions. RAID levels 0, 1, 5, 6 and 10 are supported;
-# devices are separated using "#".
-# Parameters are:
-# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
-#          <devices> <sparedevices>
-
-#d-i partman-auto-raid/recipe string \
-#    1 2 0 ext3 /                    \
-#          /dev/sda1#/dev/sdb1       \
-#    .                               \
-#    1 2 0 swap -                    \
-#          /dev/sda5#/dev/sdb5       \
-#    .                               \
-#    0 2 0 ext3 /home                \
-#          /dev/sda6#/dev/sdb6       \
-#    .
-
-# For additional information see the file partman-auto-raid-recipe.txt
-# included in the 'debian-installer' package or available from D-I source
-# repository.
-
-# This makes partman automatically partition without confirmation.
-d-i partman-md/confirm boolean true
-d-i partman-partitioning/confirm_write_new_label boolean true
-d-i partman/choose_partition select finish
-d-i partman/confirm boolean true
-d-i partman/confirm_nooverwrite boolean true
-
-## Controlling how partitions are mounted
-# The default is to mount by UUID, but you can also choose "traditional" to
-# use traditional device names, or "label" to try filesystem labels before
-# falling back to UUIDs.
-#d-i partman/mount_style select uuid
-
-### Base system installation
-# Configure APT to not install recommended packages by default. Use of this
-# option can result in an incomplete system and should only be used by very
-# experienced users.
-#d-i base-installer/install-recommends boolean false
-
-# The kernel image (meta) package to be installed; "none" can be used if no
-# kernel is to be installed.
-#d-i base-installer/kernel/image string linux-image-686
-
-### Apt setup
-# You can choose to install non-free and contrib software.
-#d-i apt-setup/non-free boolean true
-#d-i apt-setup/contrib boolean true
-# Uncomment this if you don't want to use a network mirror.
-#d-i apt-setup/use_mirror boolean false
-# Select which update services to use; define the mirrors to be used.
-# Values shown below are the normal defaults.
-#d-i apt-setup/services-select multiselect security, updates
-#d-i apt-setup/security_host string security.debian.org
-
-# Additional repositories, local[0-9] available
-#d-i apt-setup/local0/repository string \
-#       http://local.server/debian stable main
-#d-i apt-setup/local0/comment string local server
-# Enable deb-src lines
-#d-i apt-setup/local0/source boolean true
-# URL to the public key of the local repository; you must provide a key or
-# apt will complain about the unauthenticated repository and so the
-# sources.list line will be left commented out
-#d-i apt-setup/local0/key string http://local.server/key
-# Scan another CD or DVD?
-d-i apt-setup/cdrom/set-first boolean false
-
-# By default the installer requires that repositories be authenticated
-# using a known gpg key. This setting can be used to disable that
-# authentication. Warning: Insecure, not recommended.
-#d-i debian-installer/allow_unauthenticated boolean true
-
-# Uncomment this to add multiarch configuration for i386
-#d-i apt-setup/multiarch string i386
-
-
-### Package selection
-#tasksel tasksel/first multiselect standard, web-server, kde-desktop
-tasksel tasksel/first multiselect none
-
-# Individual additional packages to install
-#d-i pkgsel/include string openssh-server build-essential
-d-i pkgsel/include string openssh-server sudo rsync haveged
-# Whether to upgrade packages after debootstrap.
-# Allowed values: none, safe-upgrade, full-upgrade
-d-i pkgsel/upgrade select none
-
-# Some versions of the installer can report back on what software you have
-# installed, and what software you use. The default is not to report back,
-# but sending reports helps the project determine what software is most
-# popular and include it on CDs.
-popularity-contest popularity-contest/participate boolean false
-
-### Boot loader installation
-# Grub is the default boot loader (for x86). If you want lilo installed
-# instead, uncomment this:
-#d-i grub-installer/skip boolean true
-# To also skip installing lilo, and install no bootloader, uncomment this
-# too:
-#d-i lilo-installer/skip boolean true
-
-
-# This is fairly safe to set, it makes grub install automatically to the MBR
-# if no other operating system is detected on the machine.
-d-i grub-installer/only_debian boolean true
-
-# This one makes grub-installer install to the MBR if it also finds some other
-# OS, which is less safe as it might not be able to boot that other OS.
-d-i grub-installer/with_other_os boolean true
-
-# Due notably to potential USB sticks, the location of the MBR can not be
-# determined safely in general, so this needs to be specified:
-#d-i grub-installer/bootdev  string /dev/sda
-# To install to the first device (assuming it is not a USB stick):
-#d-i grub-installer/bootdev  string default
-
-# Alternatively, if you want to install to a location other than the mbr,
-# uncomment and edit these lines:
-#d-i grub-installer/only_debian boolean false
-#d-i grub-installer/with_other_os boolean false
-#d-i grub-installer/bootdev  string (hd0,1)
-# To install grub to multiple disks:
-#d-i grub-installer/bootdev  string (hd0,1) (hd1,1) (hd2,1)
-
-# Optional password for grub, either in clear text
-#d-i grub-installer/password password r00tme
-#d-i grub-installer/password-again password r00tme
-# or encrypted using an MD5 hash, see grub-md5-crypt(8).
-#d-i grub-installer/password-crypted password [MD5 hash]
-
-# Use the following option to add additional boot parameters for the
-# installed system (if supported by the bootloader installer).
-# Note: options passed to the installer will be added automatically.
-#d-i debian-installer/add-kernel-opts string nousb
-
-# GRUB install devices:
-# Choices: /dev/sda (21474 MB; VMware_Virtual_S), /dev/sda1 (21472 MB; 
VMware_Virtual_S)
-grub-pc     grub-pc/install_devices multiselect /dev/vda
-# Choices: Enter device manually, /dev/sda
-grub-installer  grub-installer/choose_bootdev   select  /dev/vda
-
-### Finishing up the installation
-# During installations from serial console, the regular virtual consoles
-# (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next
-# line to prevent this.
-#d-i finish-install/keep-consoles boolean true
-
-# Avoid that last message about the install being complete.
-d-i finish-install/reboot_in_progress note
-
-# This will prevent the installer from ejecting the CD during the reboot,
-# which is useful in some situations.
-d-i cdrom-detect/eject boolean false
-
-# This is how to make the installer shutdown when finished, but not
-# reboot into the installed system.
-#d-i debian-installer/exit/halt boolean true
-# This will power off the machine instead of just halting it.
-d-i debian-installer/exit/poweroff boolean true
-
-### Preseeding other packages
-# Depending on what software you choose to install, or if things go wrong
-# during the installation process, it's possible that other questions may
-# be asked. You can preseed those too, of course. To get a list of every
-# possible question that could be asked during an install, do an
-# installation, and then run these commands:
-#   debconf-get-selections --installer > file
-#   debconf-get-selections >> file
-
-
-#### Advanced options
-### Running custom commands during the installation
-# d-i preseeding is inherently not secure. Nothing in the installer checks
-# for attempts at buffer overflows or other exploits of the values of a
-# preconfiguration file like this one. Only use preconfiguration files from
-# trusted locations! To drive that home, and because it's generally useful,
-# here's a way to run any shell command you'd like inside the installer,
-# automatically.
-
-# This first command is run as early as possible, just after
-# preseeding is read.
-#d-i preseed/early_command string anna-install some-udeb
-# This command is run immediately before the partitioner starts. It may be
-# useful to apply dynamic partitioner preseeding that depends on the state
-# of the disks (which may not be visible when preseed/early_command runs).
-#d-i partman/early_command \
-#       string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
-# This command is run just before the install finishes, but when there is
-# still a usable /target directory. You can chroot to /target and use it
-# directly, or use the apt-install and in-target commands to easily install
-# packages and run commands in the target system.
-#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
-
diff --git a/grid5000/steps/data/qemu-sendkeys.rb 
b/grid5000/steps/data/qemu-sendkeys.rb
deleted file mode 100644
index d1bcb0f..0000000
--- a/grid5000/steps/data/qemu-sendkeys.rb
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/env ruby
-# Translate a string to "sendkey" commands for QEMU.
-# Martin Vidner, MIT License
-
-# https://en.wikibooks.org/wiki/QEMU/Monitor#sendkey_keys
-# sendkey keys
-#
-# You can emulate keyboard events through sendkey command. The syntax is: 
sendkey keys. To get a list of keys, type sendkey [tab]. Examples:
-#
-#     sendkey a
-#     sendkey shift-a
-#     sendkey ctrl-u
-#     sendkey ctrl-alt-f1
-#
-# As of QEMU 0.12.5 there are:
-# shift     shift_r     alt     alt_r   altgr   altgr_r
-# ctrl  ctrl_r  menu    esc     1   2
-# 3     4   5   6   7   8
-# 9     0   minus   equal   backspace   tab
-# q     w   e   r   t   y
-# u     i   o   p   ret     a
-# s     d   f   g   h   j
-# k     l   z   x   c   v
-# b     n   m   comma   dot     slash
-# asterisk  spc     caps_lock   f1  f2  f3
-# f4    f5  f6  f7  f8  f9
-# f10   num_lock    scroll_lock     kp_divide   kp_multiply     kp_subtract
-# kp_add    kp_enter    kp_decimal  sysrq   kp_0    kp_1
-# kp_2  kp_3    kp_4    kp_5    kp_6    kp_7
-# kp_8  kp_9    <   f11     f12     print
-# home  pgup    pgdn    end     left    up
-# down  right   insert  delete
-
-require "optparse"
-
-# incomplete! only what I need now.
-KEYS = {
-  "%" => "shift-5",
-  "/" => "slash",
-  ":" => "shift-semicolon",
-  "=" => "equal",
-  "." => "dot",
-  " " => "spc",
-  "-" => "minus",
-  "_" => "shift-minus",
-  "*" => "asterisk",
-  "," => "comma",
-  "+" => "shift-equal",
-  "|" => "shift-backslash",
-  "\\" => "backslash",
-}
-
-class Main
-  attr_accessor :command
-  attr_accessor :delay_s
-  attr_accessor :keystring
-
-  def initialize
-    self.command = nil
-    self.delay_s = 0.1
-
-    OptionParser.new do |opts|
-      opts.banner = "Usage: sendkeys [-c command_to_pipe_to] STRING\n" +
-        "Where STRING can be 'ls<enter>ls<gt>/dev/null<enter>'"
-
-      opts.on("-c", "--command COMMAND",
-              "Pipe sendkeys to this commands, individually") do |v|
-        self.command = v
-      end
-      opts.on("-d", "--delay SECONDS", Float,
-              "Delay SECONDS after each key (default: 0.1)") do |v|
-        self.delay_s = v
-      end
-    end.parse!
-    self.keystring = ARGV[0]
-  end
-
-  def sendkey(qemu_key_name)
-    if qemu_key_name == "wait"
-      sleep 1
-    else
-      if qemu_key_name =~ /[A-Za-z]/ && qemu_key_name == qemu_key_name.upcase
-        key = "shift-#{qemu_key_name.downcase}"
-      else
-        key = qemu_key_name
-      end
-      qemu_cmd = "sendkey #{key}"
-      if command
-        system "echo '#{qemu_cmd}' | #{command}"
-      else
-        puts qemu_cmd
-        $stdout.flush             # important when we are piped
-      end
-      sleep delay_s
-    end
-  end
-
-  PATTERN = /
-              \G  # where last match ended
-              < [^>]+ >
-            |
-              \G
-              .
-            /x
-  def run
-    keystring.scan(PATTERN) do |match|
-      if match[0] == "<"
-        key_name = match.slice(1..-2)
-        sendkey case key_name
-                when "lt" then "shift-comma"
-                when "gt" then "shift-dot"
-                else key_name
-                end
-      else
-        sendkey KEYS.fetch(match, match)
-      end
-    end
-  end
-end
-
-Main.new.run
diff --git a/grid5000/steps/data/qemu-sendkeys/netinst-iso-debian 
b/grid5000/steps/data/qemu-sendkeys/netinst-iso-debian
deleted file mode 100644
index 7705a44..0000000
--- a/grid5000/steps/data/qemu-sendkeys/netinst-iso-debian
+++ /dev/null
@@ -1 +0,0 @@
-<esc><wait>auto preseed/url=http://%LOCAL_IP%:%HTTP_PORT%/preseed.cfg<kp_enter>
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node_site
 
b/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node_site
deleted file mode 100644
index 273cf08..0000000
--- 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node_site
+++ /dev/null
@@ -1,49 +0,0 @@
-# OARSERVER: machine where we remotely run oarnodesetting
-OARREMOTE="frontend"
-
-# The paths to oarnodecheckquery and oarnodecheckrun (check your installation)
-OARNODECHECKQUERY=/usr/bin/oarnodecheckquery
-OARNODECHECKRUN=/usr/lib/oar/oarnodecheckrun
-# Home directory of user oar
-OARHOME=/var/lib/oar
-
-# retry settings
-MODSLEEP=20
-MINSLEEP=10
-MAXRETRY=180
-# Ungly glitch do use the good oar key.
-SITE=$( hostname | cut -d'.' -f2)
-
-
-start_oar_node() {
-    test -n "$OARREMOTE" || exit 0
-    local retry=0
-    local sleep=0
-    local status=1
-    until [ $status -eq 0 ]; do
-      echo "oar-node: perform sanity checks"
-      $OARNODECHECKRUN
-      $OARNODECHECKQUERY
-      status=$?
-      [ $status -eq 0 ] && {
-        echo "oar-node: set the ressources of this node to Alive"
-        ssh -t -oStrictHostKeyChecking=no -oPasswordAuthentication=no -i 
$OARHOME/.ssh/oarnodesetting_ssh_$SITE.key oar@$OARREMOTE -p 6667
-        status=$?
-      }
-      [ $status -ne 0 ] && {
-        if [ $((retry+=sleep)) -gt $MAXRETRY ]; then
-          echo "oar-node: FAILED"
-          return 1
-        fi
-        ((sleep = $RANDOM % $MODSLEEP + $MINSLEEP))
-        echo "oar-node: retrying in $sleep seconds..."
-        sleep $sleep
-      }
-    done
-    return 0
-}
-
-stop_oar_node() {
-    :
-}
-
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
 
b/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
deleted file mode 100644
index 50fd606..0000000
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
+++ /dev/null
@@ -1,69 +0,0 @@
-class env::base::configure_ip_over_infiniband (){
-
-  if  $::lsbdistcodename == 'stretch' {
-
-    $infiniband_packages = ['qlvnictools']
-
-    ensure_packages([$infiniband_packages], {'ensure' => 'installed'})
-
-    Package[$infiniband_packages]
-    ->Service['openibd']
-
-  }
-
-  # En suivant la doc https://wiki.debian.org/RDMA, vous n'avez pas besoin 
d'installer opensm sur les environnements
-  # Il risque de rentrer en conflit avec d'autres instances d'OpenSM présent 
sur du matériel réseau, ou bien sur des clusters externes à Grid5000 (exemple : 
https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=10747)
-  service {
-    'openibd':
-      provider => 'systemd',
-      enable   => true,
-      require  => [
-        File['/etc/systemd/system/openibd.service']
-      ];
-  }
-
-  file {
-    '/etc/infiniband':
-      ensure  => directory,
-      owner   => root,
-      group   => root,
-      mode    => '0644';
-    '/etc/infiniband/openib.conf':
-      ensure  => file,
-      owner   => root,
-      group   => root,
-      mode    => '0644',
-      source  => 'puppet:///modules/env/base/infiniband/openib.conf',
-      require => File['/etc/infiniband'];
-    '/etc/init.d/openibd':
-      ensure  => file,
-      owner   => root,
-      group   => root,
-      mode    => '0755',
-      source  => 'puppet:///modules/env/base/infiniband/openibd';
-    '/etc/systemd/system/openibd.service':
-      ensure  => file,
-      owner   => root,
-      group   => root,
-      mode    => '0644',
-      source  => 'puppet:///modules/env/base/infiniband/openibd.service';
-    '/lib/udev/rules.d/90-ib.rules':
-      ensure  => present,
-      owner   => root,
-      group   => root,
-      mode    => '0644',
-      source  => 'puppet:///modules/env/base/infiniband/90-ib.rules';
-  }
-
-  # Empeche que ibacm.service soit en status failed (voir #13013)
-  if "${::lsbdistcodename}" == "bullseye" {
-    file {
-      '/etc/systemd/system/ibacm.service.d/':
-        ensure  => directory;
-      '/etc/systemd/system/ibacm.service.d/override.conf':
-        ensure  => present,
-        content => 
"[Service]\nType=exec\nExecStart=\nExecStart=-/usr/sbin/ibacm --systemd",
-        require => File['/etc/systemd/system/ibacm.service.d/'];
-    }
-  }
-}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp 
b/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp
deleted file mode 100644
index b9af00e..0000000
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp
+++ /dev/null
@@ -1,58 +0,0 @@
-class env::big::install_openmpi () {
-
-  case "${::lsbdistcodename}" {
-
-    "stretch" : {
-      $openmpi_packages = [ 'libopenmpi-dev', 'openmpi-bin' ]
-      $openmpi_deps_packages = [ 'librdmacm1', 'libgfortran3', 'libnuma1', 
'blcr-util', 'libibverbs1-dbg', 'libibverbs-dev', 'libpsm2-dev', 'libhfi1-dev', 
'libopamgt-dev' ]
-      $openmpi_scibian_version = '2.0.2-2sci9+opa10.7u4'
-
-      ensure_packages($openmpi_deps_packages, {
-        ensure => present,
-        require => Class['apt::update']
-      })
-
-      ensure_packages($openmpi_packages, {
-        ensure => $openmpi_scibian_version,
-        require => Class['apt::update']
-      })
-    }
-
-    "buster", "bullseye" : {
-      $openmpi_packages = [ 'libopenmpi-dev', 'openmpi-bin' ]
-      $openmpi_deps_packages = [ 'libnuma1', 'libibverbs-dev' ]
-      $openmpi_opa_packages = [ 'libpsm2-dev', 'libopamgt-dev' ]
-
-      ensure_packages($openmpi_deps_packages, {
-        ensure => present,
-        require => Class['apt::update']
-      })
-
-      if $env::deb_arch == 'amd64' {
-        ensure_packages($openmpi_opa_packages, {
-          ensure => present,
-          require => Class['apt::update']
-        })
-      }
-
-      ensure_packages($openmpi_packages, {
-        ensure => present,
-        require => Class['apt::update']
-      })
-    }
-  }
-
-  if ($::lsbdistcodename == 'buster') {
-    # The 'verbs' OFI provider is broken in OpenMPI 3.1.3. We disable it.
-    # See https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=10918
-    # and https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941996
-    # https://github.com/open-mpi/ompi/issues/7035
-    # OpenMPI 4.x is not affected, so this can be removed after buster.
-    # This does not affect OpenMPI when loaded using 'module'
-    file_line { 'disable_verbs_ofi_provider':
-      path => '/etc/openmpi/openmpi-mca-params.conf',
-      line => 'mtl_ofi_provider_exclude = shm,sockets,tcp,udp,rstream,verbs',
-      require => Package['openmpi-bin'];
-    }
-  }
-}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp 
b/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp
deleted file mode 100644
index 3d266d5..0000000
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp
+++ /dev/null
@@ -1,26 +0,0 @@
-class env::big::install_smartd {
-
-  package {
-    'smartmontools':
-      ensure => installed;
-  }
-
-  file {
-    '/etc/systemd/system/smartd.service.d/':
-      ensure  => directory,
-      require => Package['smartmontools'];
-    '/etc/systemd/system/smartd.service.d/override.conf':
-      ensure  => present,
-      content => "[Service]\nExecStartPre=mkdir -p /dev/discs",
-      require => File['/etc/systemd/system/smartd.service.d/'];
-  }
-
-  file_line { 'smard.conf':
-    ensure  => present,
-    require => Package['smartmontools'],
-    path    => '/etc/smartd.conf',
-    line    => 'DEVICESCAN -d nvme -d scsi -d ata -d sat -n standby -m root -M 
exec /usr/share/smartmontools/smartd-runner',
-    match   => '^DEVICESCAN .*';
-  }
-
-}
diff --git a/grid5000/steps/disable_checkpoint.yaml 
b/grid5000/steps/disable_checkpoint.yaml
deleted file mode 100644
index cb571da..0000000
--- a/grid5000/steps/disable_checkpoint.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-- disable_checkpoint:
-  - on_checkpoint: redo
-  - exec_local: rm -f $${kameleon_cwd}/checkpoint_enabled
diff --git a/grid5000/steps/enable_checkpoint.yaml 
b/grid5000/steps/enable_checkpoint.yaml
deleted file mode 100644
index 8ac4751..0000000
--- a/grid5000/steps/enable_checkpoint.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-- enable_checkpoint:
-  - on_checkpoint: redo
-  - on_bootstrap_init:
-    - exec_local: rm -f $${kameleon_cwd}/checkpoint_enabled
-  - exec_local: touch $${kameleon_cwd}/checkpoint_enabled
diff --git a/grid5000/steps/env/bashrc b/grid5000/steps/env/bashrc
deleted file mode 100644
index 6306e37..0000000
--- a/grid5000/steps/env/bashrc
+++ /dev/null
@@ -1,23 +0,0 @@
-## aliases
-# If not running interactively, don't do anything
-export USER=${USER:-"root"}
-export HOME=${HOME:-"/root"}
-export PATH=/usr/bin:/usr/sbin:/bin:/sbin:$PATH
-export LC_ALL=${LC_ALL:-"POSIX"}
-
-export DEBIAN_FRONTEND=noninteractive
-
-if [ -t 1 ] ; then
-export TERM=xterm
-# for fast typing
-alias h='history'
-alias g='git status'
-alias l='ls -lah'
-alias ll='ls -lh'
-alias la='ls -Ah'
-
-# for human readable output
-alias ls='ls -h'
-alias df='df -h'
-alias du='du -h'
-fi
diff --git a/grid5000/steps/export/export_vagrant_box.yaml 
b/grid5000/steps/export/export_vagrant_box.yaml
deleted file mode 100644
index 6c048ef..0000000
--- a/grid5000/steps/export/export_vagrant_box.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-- virtualbox_vmid: $${kameleon_recipe_name}_$${kameleon_short_uuid}
-- virtualbox_disk_filename: $${appliance_filename}.$${appliance_formats}
-- virtualbox_os_type: "Debian_64"
-- vagrant_box_filename: $${kameleon_cwd}/$${kameleon_recipe_name}.box
-
-- create_vbox_machine:
-  - on_export_clean:
-    - exec_local: |
-        if VBoxManage list vms | grep -q $${virtualbox_vmid}; then
-          echo "Deleting VBox machine $${virtualbox_vmid}"
-          VBoxManage unregistervm $${virtualbox_vmid} --delete
-        fi
-    - exec_local: |
-        if [ -e $${virtualbox_disk_filename} ]; then
-        echo "Deleting disk file $${virtualbox_disk_filename}"
-          rm $${virtualbox_disk_filename}
-        fi
-  - exec_local: echo "Creating VBox machine $${virtualbox_vmid}"
-  - exec_local: VBoxManage createvm --name $${virtualbox_vmid} --register
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --ostype 
$${virtualbox_os_type}
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --boot1 disk
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --memory 256
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --acpi on
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --nictype1 82540EM
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --nictype2 82540EM
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --nictype3 82540EM
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --nictype4 82540EM
-  - exec_local: VBoxManage modifyvm $${virtualbox_vmid} --nic1 nat 
--cableconnected1 on
-  - exec_local: VBoxManage storagectl $${virtualbox_vmid} --name "SATA 
Controller" --add sata --controller IntelAHCI --hostiocache on
-  - exec_local: |
-      VBoxManage storageattach $${virtualbox_vmid} \
-        --storagectl "SATA Controller" \
-        --port 0 \
-        --device 0 \
-        --type hdd \
-        --medium $${virtualbox_disk_filename}
-
-- save_box:
-  - check_cmd_local: vagrant
-  - exec_local: echo "Create vagrant box $${vagrant_box_filename}..."
-  - exec_local: rm -f $${vagrant_box_filename}
-  - exec_local: vagrant package --base $${virtualbox_vmid} --output 
$${vagrant_box_filename}
diff --git a/grid5000/steps/export/save_appliance_VM.yaml 
b/grid5000/steps/export/save_appliance_VM.yaml
deleted file mode 100644
index b064d02..0000000
--- a/grid5000/steps/export/save_appliance_VM.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Save Appliance from virtual machine
-#
-- export_appliance_script: $${kameleon_data_dir}/helpers/export_appliance.py
-
-# Zero free unallocated blocks from ext2/3 file-systems before export to
-# reduce image size
-- zerofree: true
-
-- save_appliance:
-  - check_cmd_local: python2
-  - exec_local: |
-      if [ "$${zerofree}" = "true" ]; then
-        EXPORT_OPTS="--zerofree"
-      else
-        EXPORT_OPTS=""
-      fi
-  - exec_local: |
-      python2 $${export_appliance_script} $${image_disk}.$${image_format} \
-        -o $${appliance_filename} \
-        --formats $${appliance_formats} \
-        --tar-compression-level $${appliance_tar_compression_level} \
-        --tar-excludes $${appliance_tar_excludes} $EXPORT_OPTS
diff --git a/grid5000/steps/setup/create_user.yaml 
b/grid5000/steps/setup/create_user.yaml
deleted file mode 100644
index d7c75cf..0000000
--- a/grid5000/steps/setup/create_user.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Create User
-
-- shell: /bin/bash
-
-- add_user:
-  - exec_in: useradd -m $${name} -s $${shell}
-  - exec_in: echo -n '$${name}:$${password}' | chpasswd
-
-- add_to_groups:
-  - exec_in: |
-      usermod -G "$(echo $${groups} | tr ' ' ',')" $${name}
diff --git a/grid5000/steps/setup/debian/clean_system.yaml 
b/grid5000/steps/setup/debian/clean_system.yaml
deleted file mode 100644
index 399c339..0000000
--- a/grid5000/steps/setup/debian/clean_system.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-- enable_lighten: false
-
-- clean_user:
-  - on_setup_clean:
-    - exec_in: |
-        if id kameleon > /dev/null 2>&1; then
-          echo "Removing the kameleon user"
-          userdel -r kameleon 2> >(grep -v "userdel: kameleon mail spool 
(/var/mail/kameleon) not found" )
-        fi
-
-- clean_apt:
-  - on_setup_clean:
-    - apt-get_in: autoremove
-    - apt-get_in: autoclean
-    - apt-get_in: purge
-    - apt-get_in: clean
-    - exec_in: |
-        if [ $${enable_lighten} = true ]; then
-          rm -rf /var/lib/apt/lists/*
-          rm -rf /usr/share/locale/*
-          rm -rf /usr/share/man/*
-          rm -rf /usr/share/doc/*
-        fi
-
-- clean_network:
-  - on_setup_clean:
-    - exec_in: rm -rf /var/lib/dhcp/*
-
-- clean_udev:
-  - on_setup_clean:
-    - exec_in: rm -rf /etc/udev/rules.d/70-persistent-net.rules
-    - exec_in: rm -rf /dev/.udev/
-    - exec_in: touch /etc/udev/rules.d/70-persistent-net.rules
-    - exec_in: rm -rf /lib/udev/rules.d/75-persistent-net-generator.rules
\ No newline at end of file
diff --git a/grid5000/steps/setup/debian/minimal_install.yaml 
b/grid5000/steps/setup/debian/minimal_install.yaml
deleted file mode 100644
index d1cdc69..0000000
--- a/grid5000/steps/setup/debian/minimal_install.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-- set_root_password:
-  - exec_in: echo -n 'root:$${root_password}' | chpasswd
-
-- upgrade_system:
-  - apt-get_in: dist-upgrade
diff --git a/grid5000/steps/setup/debian/setup_vagrant_box.yaml 
b/grid5000/steps/setup/debian/setup_vagrant_box.yaml
deleted file mode 100644
index fb1f827..0000000
--- a/grid5000/steps/setup/debian/setup_vagrant_box.yaml
+++ /dev/null
@@ -1,77 +0,0 @@
-- puppet_deb_source: "distib" #or "puppetlabs"
-- puppet_deb_url: "http://apt.puppetlabs.com/puppet-release-$${release}.deb";
-- virtualbox_deb_source: "distrib" #or "backports"
-
-- install_requirements:
-  - apt-get_in: install rsync curl linux-headers-amd64
-
-- install_virtualbox:
-  - test:
-    - exec_in: test "$${virtualbox_deb_source}" = "backports"
-    - group:
-      - write_in:
-        - /etc/apt/sources.list.d/virtualbox.list 
-        - deb $${deb_mirror_uri} $${release}-backports $${deb_components}
-      - apt-get_in: update
-      - apt-get_in: install virtualbox-guest-utils 
-      - exec_in: rm -f /etc/apt/sources.list.d/virtualbox.list 
-      - apt-get_in: update
-    - apt-get_in: install virtualbox-guest-utils 
-
-- enable_passwordless_sudo:
-  - exec_in: |
-      sed -i.bkp -e \
-      's/%sudo\s\+ALL=(ALL\(:ALL\)\?)\s\+ALL/%sudo ALL=NOPASSWD:ALL/g' \
-      /etc/sudoers
-
-- install_puppet:
-  - test:
-    - exec_in: test "$${puppet_deb_source}" = "puppetlabs"
-    - group:
-      - download_file_in:
-        - $${puppet_deb_url}
-        - $KAMELEON_WORKDIR/puppet.deb
-      - exec_in: dpkg -i $KAMELEON_WORKDIR/puppet.deb
-      - apt-get_in: update
-  - apt-get_in: install puppet
-  - exec_in: rm -f $KAMELEON_WORKDIR/puppet.deb
-
-- copy_insecure_sshkey:
-  - exec_in: mkdir -pm 700 /home/$${user_name}/.ssh/
-  - download_file_in:
-    - "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant";
-    - /home/$${user_name}/.ssh/id_rsa
-  - download_file_in:
-    - "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub";
-    - /home/$${user_name}/.ssh/id_rsa.pub
-  - exec_in: cp /home/$${user_name}/.ssh/id_rsa.pub 
/home/$${user_name}/.ssh/authorized_keys
-  - exec_in: chmod 0600 /home/$${user_name}/.ssh/*
-
-- config_ssh:
-  - exec_in: echo "UseDNS no" >> /etc/ssh/sshd_config
-  - write_in:
-    - /home/$${user_name}/.ssh/config
-    - |
-      Host *
-      ForwardX11 no
-      StrictHostKeyChecking no
-      PasswordAuthentication no
-      AddressFamily inet
-  - exec_in: chmod 0600 /home/$${user_name}/.ssh/config
-  - exec_in: rsync -ah /home/$${user_name}/.ssh/ /root/.ssh
-  - exec_in: |
-      if [ -e /root/.ssh/.kameleon_authorized_keys ]; then
-        cat /root/.ssh/.kameleon_authorized_keys >> /root/.ssh/authorized_keys
-      fi
-  - exec_in: chown "$${user_name}:$${user_name}" -R /home/$${user_name}
-
-- customize_motd:
-  - exec_in: echo 'Welcome to your Vagrant-built virtual machine.' > /etc/motd
-
-- fix_network_interface_for_vbox:
-  - exec_in: sed -i -e 's/ens3/enp0s3/g' /etc/network/interfaces
-
-- cleanup:
-  - exec_in: |
-      echo "Adding a 2 sec delay to the interface up, to make the dhclient 
happy"
-      echo "pre-up sleep 2" >> /etc/network/interfaces
diff --git a/grid5000/debian11-x64-common.yaml 
b/image/grid5000/debian11-x64-common.yaml
similarity index 100%
rename from grid5000/debian11-x64-common.yaml
rename to image/grid5000/debian11-x64-common.yaml
diff --git a/grid5000/debian11-x64-min.yaml 
b/image/grid5000/debian11-x64-min.yaml
similarity index 100%
rename from grid5000/debian11-x64-min.yaml
rename to image/grid5000/debian11-x64-min.yaml
diff --git a/grid5000/from_scratch/base.yaml 
b/image/grid5000/from_scratch/base.yaml
similarity index 100%
rename from grid5000/from_scratch/base.yaml
rename to image/grid5000/from_scratch/base.yaml
diff --git a/default/from_scratch/x86_64/debian-base.yaml 
b/image/grid5000/from_scratch/debian-base.yaml
similarity index 100%
rename from default/from_scratch/x86_64/debian-base.yaml
rename to image/grid5000/from_scratch/debian-base.yaml
diff --git a/grid5000/from_scratch/aarch64/debian-bullseye.yaml 
b/image/grid5000/from_scratch/debian-bullseye.yaml
similarity index 100%
rename from grid5000/from_scratch/aarch64/debian-bullseye.yaml
rename to image/grid5000/from_scratch/debian-bullseye.yaml
diff --git a/grid5000/steps/aliases/defaults.yaml 
b/image/grid5000/steps/aliases/defaults.yaml
similarity index 100%
rename from grid5000/steps/aliases/defaults.yaml
rename to image/grid5000/steps/aliases/defaults.yaml
diff --git a/default/steps/bootstrap/debian/prepare_autoinstall.yaml 
b/image/grid5000/steps/bootstrap/debian/prepare_autoinstall.yaml
similarity index 100%
rename from default/steps/bootstrap/debian/prepare_autoinstall.yaml
rename to image/grid5000/steps/bootstrap/debian/prepare_autoinstall.yaml
diff --git a/grid5000/steps/bootstrap/download_installer.yaml 
b/image/grid5000/steps/bootstrap/download_installer.yaml
similarity index 90%
rename from grid5000/steps/bootstrap/download_installer.yaml
rename to image/grid5000/steps/bootstrap/download_installer.yaml
index f15f58c..b57fdcc 100644
--- a/grid5000/steps/bootstrap/download_installer.yaml
+++ b/image/grid5000/steps/bootstrap/download_installer.yaml
@@ -6,7 +6,7 @@
           - exec_local: test -z "$${installer_iso_url}"
           - exec_local: |
               echo "Looking for the netinstall iso URL for 
$${installer_iso_finder_args}"
-              DOWNLOAD_SRC_URL=$(python2 $${installer_iso_finder_helper} 
$${installer_iso_finder_args})
+              DOWNLOAD_SRC_URL=$($${installer_iso_finder_helper} 
$${installer_iso_finder_args})
        - download_file_local:
          - $${installer_iso_url}
          - $${qemu_iso_path}
diff --git a/default/steps/bootstrap/prepare_appliance.yaml 
b/image/grid5000/steps/bootstrap/prepare_appliance.yaml
similarity index 100%
rename from default/steps/bootstrap/prepare_appliance.yaml
rename to image/grid5000/steps/bootstrap/prepare_appliance.yaml
diff --git a/default/steps/bootstrap/prepare_disk.yaml 
b/image/grid5000/steps/bootstrap/prepare_disk.yaml
similarity index 100%
rename from default/steps/bootstrap/prepare_disk.yaml
rename to image/grid5000/steps/bootstrap/prepare_disk.yaml
diff --git a/default/steps/bootstrap/prepare_ssh_to_out_context.yaml 
b/image/grid5000/steps/bootstrap/prepare_ssh_to_out_context.yaml
similarity index 100%
rename from default/steps/bootstrap/prepare_ssh_to_out_context.yaml
rename to image/grid5000/steps/bootstrap/prepare_ssh_to_out_context.yaml
diff --git a/grid5000/steps/bootstrap/start_http_server.yaml 
b/image/grid5000/steps/bootstrap/start_http_server.yaml
similarity index 81%
rename from grid5000/steps/bootstrap/start_http_server.yaml
rename to image/grid5000/steps/bootstrap/start_http_server.yaml
index 59184c3..04af024 100644
--- a/grid5000/steps/bootstrap/start_http_server.yaml
+++ b/image/grid5000/steps/bootstrap/start_http_server.yaml
@@ -5,7 +5,7 @@
       HTTP_PORT=$(__find_free_port 8000 8100)
       echo "HTTP port: $HTTP_PORT"
       export HTTP_PORT
-  - exec_local: python2 $${http_script} --root $${http_directory} --bind 
0.0.0.0 --port $HTTP_PORT --daemon --pid $${http_pid}
+  - exec_local: $${http_script} --root $${http_directory} --bind 0.0.0.0 
--port $HTTP_PORT --daemon --pid $${http_pid}
   - on_bootstrap_clean:
     - exec_local: |
         if [ -f $${http_pid} ]; then
diff --git a/grid5000/steps/bootstrap/start_qemu.yaml 
b/image/grid5000/steps/bootstrap/start_qemu.yaml
similarity index 100%
rename from grid5000/steps/bootstrap/start_qemu.yaml
rename to image/grid5000/steps/bootstrap/start_qemu.yaml
diff --git a/default/steps/checkpoints/simple.yaml 
b/image/grid5000/steps/checkpoints/simple.yaml
similarity index 100%
rename from default/steps/checkpoints/simple.yaml
rename to image/grid5000/steps/checkpoints/simple.yaml
diff --git a/grid5000/steps/data/helpers/export_appliance.py 
b/image/grid5000/steps/data/helpers/export_appliance.py
old mode 100644
new mode 100755
similarity index 99%
rename from grid5000/steps/data/helpers/export_appliance.py
rename to image/grid5000/steps/data/helpers/export_appliance.py
index 450ef47..5207e81
--- a/grid5000/steps/data/helpers/export_appliance.py
+++ b/image/grid5000/steps/data/helpers/export_appliance.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python3
 # -*- coding: utf-8 -*-
 """Convert a disk image to many others formats with guestfish."""
 from __future__ import division, unicode_literals
diff --git a/grid5000/steps/data/helpers/netinstall_iso_finder.py 
b/image/grid5000/steps/data/helpers/netinstall_iso_finder.py
old mode 100644
new mode 100755
similarity index 98%
rename from grid5000/steps/data/helpers/netinstall_iso_finder.py
rename to image/grid5000/steps/data/helpers/netinstall_iso_finder.py
index aa9a2e6..a3a98ab
--- a/grid5000/steps/data/helpers/netinstall_iso_finder.py
+++ b/image/grid5000/steps/data/helpers/netinstall_iso_finder.py
@@ -1,10 +1,10 @@
-#!/usr/bin/env python2
+#!/usr/bin/python3
 # -*- coding: utf-8 -*-
 """Find the latest netinstall iso for a Debian version and system 
architecture."""
 
 from html.parser import HTMLParser
-from urllib2 import urlopen
-from urlparse import urljoin
+from urllib.request import urlopen
+from urllib.parse import urljoin
 import re
 import sys
 import argparse
diff --git a/grid5000/steps/data/helpers/simple_http_server.py 
b/image/grid5000/steps/data/helpers/simple_http_server.py
old mode 100644
new mode 100755
similarity index 99%
rename from grid5000/steps/data/helpers/simple_http_server.py
rename to image/grid5000/steps/data/helpers/simple_http_server.py
index 881343a..62c6215
--- a/grid5000/steps/data/helpers/simple_http_server.py
+++ b/image/grid5000/steps/data/helpers/simple_http_server.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/python3
 """Simple HTTP server"""
 from __future__ import unicode_literals
 import atexit
diff --git a/grid5000/steps/data/preseed/debian-bullseye-preseed.cfg 
b/image/grid5000/steps/data/preseed/debian-bullseye-preseed.cfg
similarity index 100%
rename from grid5000/steps/data/preseed/debian-bullseye-preseed.cfg
rename to image/grid5000/steps/data/preseed/debian-bullseye-preseed.cfg
diff --git a/default/steps/data/qemu-sendkeys.rb 
b/image/grid5000/steps/data/qemu-sendkeys.rb
similarity index 100%
rename from default/steps/data/qemu-sendkeys.rb
rename to image/grid5000/steps/data/qemu-sendkeys.rb
diff --git a/default/steps/data/qemu-sendkeys/netinst-iso-debian 
b/image/grid5000/steps/data/qemu-sendkeys/netinst-iso-debian
similarity index 100%
rename from default/steps/data/qemu-sendkeys/netinst-iso-debian
rename to image/grid5000/steps/data/qemu-sendkeys/netinst-iso-debian
diff --git a/grid5000/steps/data/setup/hiera/hiera.yaml 
b/image/grid5000/steps/data/setup/hiera/hiera.yaml
similarity index 100%
rename from grid5000/steps/data/setup/hiera/hiera.yaml
rename to image/grid5000/steps/data/setup/hiera/hiera.yaml
diff --git a/grid5000/steps/data/setup/hiera/hieradata/defaults.yaml 
b/image/grid5000/steps/data/setup/hiera/hieradata/defaults.yaml
similarity index 100%
rename from grid5000/steps/data/setup/hiera/hieradata/defaults.yaml
rename to image/grid5000/steps/data/setup/hiera/hieradata/defaults.yaml
diff --git a/grid5000/steps/data/setup/puppet/manifests/base.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/base.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/base.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/base.pp
diff --git a/grid5000/steps/data/setup/puppet/manifests/big.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/big.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/big.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/big.pp
diff --git a/grid5000/steps/data/setup/puppet/manifests/min.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/min.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/min.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/min.pp
diff --git a/grid5000/steps/data/setup/puppet/manifests/nfs.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/nfs.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/nfs.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/nfs.pp
diff --git a/grid5000/steps/data/setup/puppet/manifests/std.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/std.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/std.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/std.pp
diff --git a/grid5000/steps/data/setup/puppet/manifests/xen.pp 
b/image/grid5000/steps/data/setup/puppet/manifests/xen.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/manifests/xen.pp
rename to image/grid5000/steps/data/setup/puppet/manifests/xen.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/cpufreq/cpufrequtils 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/cpufreq/cpufrequtils
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/cpufreq/cpufrequtils
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/cpufreq/cpufrequtils
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/ganglia/gmond.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/ganglia/gmond.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/ganglia/gmond.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/ganglia/gmond.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/90-ib.rules
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/90-ib.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/90-ib.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/90-ib.rules
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openib.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openib.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openib.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openib.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/infiniband/openibd.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/kexec/kexec 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/kexec/kexec
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/base/kexec/kexec
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/kexec/kexec
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/mx/ip_over_mx 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/mx/ip_over_mx
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/mx/ip_over_mx
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/mx/ip_over_mx
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/ndctl/ndctl.preset 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/ndctl/ndctl.preset
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/ndctl/ndctl.preset
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/ndctl/ndctl.preset
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/sshfs/40-fuse.rules 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/sshfs/40-fuse.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/sshfs/40-fuse.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/sshfs/40-fuse.rules
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/limits-grid5000.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/limits-grid5000.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/limits-grid5000.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/limits-grid5000.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/sysctl-00-grid5000.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/sysctl-00-grid5000.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/sysctl-00-grid5000.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/tuning/sysctl-00-grid5000.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/base/userns/sysctl-00-userns.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/base/userns/sysctl-00-userns.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/base/userns/sysctl-00-userns.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/base/userns/sysctl-00-userns.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/amd_gpu/70-amdgpu.rules
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/amd_gpu/70-amdgpu.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/amd_gpu/70-amdgpu.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/amd_gpu/70-amdgpu.rules
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/60-qemu-system.rules
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/60-qemu-system.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/60-qemu-system.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/60-qemu-system.rules
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/create_tap 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/create_tap
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/create_tap
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/create_tap
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/random_mac 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/random_mac
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/random_mac
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/random_mac
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/sudoers 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/sudoers
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/sudoers
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/kvm/sudoers
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/85-mic.rules 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/85-mic.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/mic/85-mic.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/85-mic.rules
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/fstab 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/fstab
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/big/mic/fstab
rename to image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/fstab
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mic0.filelist 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mic0.filelist
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mic0.filelist
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mic0.filelist
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mpss 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mpss
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mpss
rename to image/grid5000/steps/data/setup/puppet/modules/env/files/big/mic/mpss
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/cuda.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/cuda.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/cuda.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/cuda.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/dcgm-exporter.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/dcgm-exporter.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/dcgm-exporter.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/dcgm-exporter.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/ganglia-monitor.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/ganglia-monitor.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/ganglia-monitor.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/ganglia-monitor.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/modpython-nvidia.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/modpython-nvidia.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/modpython-nvidia.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/modpython-nvidia.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-persistenced.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-persistenced.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-persistenced.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-persistenced.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-smi.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-smi.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-smi.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/big/nvidia/nvidia-smi.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/apt/grid5000-archive-key.asc
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/apt/grid5000-archive-key.asc
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/apt/grid5000-archive-key.asc
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/apt/grid5000-archive-key.asc
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/amd64-microcode
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/amd64-microcode
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/amd64-microcode
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/amd64-microcode
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/intel-microcode
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/intel-microcode
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/intel-microcode
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/cpu_microcode/intel-microcode
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/git_tag
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/git_tag
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/git_tag
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/git_tag
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/postinst
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/postinst
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/postinst
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/image_versioning/postinst
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale.gen 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale.gen
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale.gen
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/locales/locale.gen
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/network/g5k-update-host-name
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/network/g5k-update-host-name
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/min/network/g5k-update-host-name
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/network/g5k-update-host-name
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/min/network/hosts 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/min/network/hosts
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/min/network/hosts
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/min/network/hosts
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ca2019.grid5000.fr.cert
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ca2019.grid5000.fr.cert
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ca2019.grid5000.fr.cert
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ca2019.grid5000.fr.cert
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-auth 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-auth
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-auth
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-auth
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-password 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-password
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-password
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/common-password
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ldap.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ldap.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ldap.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/ldap.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/libnss-ldap.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/libnss-ldap.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/libnss-ldap.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/libnss-ldap.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nscd.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nscd.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nscd.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nscd.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nslcd.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nslcd.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nslcd.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nslcd.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nsswitch.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nsswitch.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nsswitch.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/ldap/nsswitch.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/55-openiscsi.rules
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/55-openiscsi.rules
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/55-openiscsi.rules
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/55-openiscsi.rules
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/iscsidev.sh 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/iscsidev.sh
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/iscsidev.sh
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/nfs/openiscsi/iscsidev.sh
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-disk-manager-backend.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/g5k-pmem-manager.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/lib/g5k-manager.rb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/lib/g5k-manager.rb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/lib/g5k-manager.rb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k-manager/lib/g5k-manager.rb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k_generator/g5k_generator
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k_generator/g5k_generator
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5k_generator/g5k_generator
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5k_generator/g5k_generator
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/g5kchecks/g5k-checks.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5kchecks/g5k-checks.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/g5kchecks/g5k-checks.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/g5kchecks/g5k-checks.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/lvm/lvm.conf 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/lvm/lvm.conf
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/std/lvm/lvm.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/lvm/lvm.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables.stretch
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables.stretch
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables.stretch
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/iptables.stretch
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/rsyslog.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/rsyslog.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/rsyslog.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/rsyslog.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/syslog_iptables.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/syslog_iptables.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/syslog_iptables.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/net_access/syslog_iptables.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig.service
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/nvidia_configure/nvidia-reset-mig.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/batch_job_bashrc 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/batch_job_bashrc
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/oar/batch_job_bashrc
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/batch_job_bashrc
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/etc/security/access.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/etc/security/access.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/oar/etc/security/access.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/etc/security/access.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node-service
similarity index 69%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node-service
index b8a6fc0..3ce7360 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/default_oar-node
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node-service
@@ -1,3 +1,8 @@
+#!/bin/sh
+
+# This script is called when oar-node service is started.
+# You can change this to use another method to switch the node into the Alive 
state
+
 # OARSERVER: machine where we remotely run oarnodesetting
 OARREMOTE="oar"
 
@@ -10,8 +15,7 @@ OARHOME=/var/lib/oar
 # retry settings
 MODSLEEP=20
 MINSLEEP=10
-MAXRETRY=180
-
+MAXRETRY=300
 
 start_oar_node() {
     test -n "$OARREMOTE" || exit 0
@@ -38,16 +42,39 @@ start_oar_node() {
         # not provide $RANDOM
         if [ "x$random" = "x" ]; then
             random=$(bash -c 'echo $RANDOM')
-        fi 
+        fi
         sleep=$(($random % $MODSLEEP + $MINSLEEP))
         echo "oar-node: retrying in $sleep seconds..."
         sleep $sleep
       }
     done
+
     return 0
 }
 
+# This function is called when oar-node service is stopped.
+# You can change this to use another method to switch the node into the Absent 
state
+
 stop_oar_node() {
     :
 }
 
+usage() {
+        echo "Usage: $0 start|stop"
+}
+
+if [ $# -eq 0 ]; then
+    echo "Missing operation!"
+    usage
+    exit 1
+fi
+
+if [ $1 = "start" ]; then
+    start_oar_node
+elif [ $1 = "stop" ]; then
+    stop_oar_node
+else
+    echo "Unknown operation!"
+    usage
+    exit 1
+fi
diff --git 
a/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node.service.override
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node.service.override
new file mode 100644
index 0000000..352c851
--- /dev/null
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar-node.service.override
@@ -0,0 +1,2 @@
+[Service]
+TimeoutStartSec=300
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar_sshclient_config
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar_sshclient_config
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar_sshclient_config
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/oar_sshclient_config
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/var/lib/oar/access.conf
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/var/lib/oar/access.conf
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/oar/var/lib/oar/access.conf
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/oar/var/lib/oar/access.conf
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k.pub
 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k.pub
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k.pub
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/std/sudo-g5k/id_rsa_sudo-g5k.pub
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/version 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/version
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/version
rename to image/grid5000/steps/data/setup/puppet/modules/env/files/version
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa.pub 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa.pub
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa.pub
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/id_rsa.pub
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/random_mac 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/random_mac
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/random_mac
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/random_mac
diff --git a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k.service 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k.service
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k.service
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xen-g5k.service
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xend-config.sxp 
b/image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xend-config.sxp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xend-config.sxp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/files/xen/xen/xend-config.sxp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/lib/facter/installed_kernelreleases.rb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/lib/facter/installed_kernelreleases.rb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/lib/facter/installed_kernelreleases.rb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/lib/facter/installed_kernelreleases.rb
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/base.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/base.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/base.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/add_ca_grid5000.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/add_ca_grid5000.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/add_ca_grid5000.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/add_ca_grid5000.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_dhclient.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_dhclient.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_dhclient.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_dhclient.pp
diff --git 
a/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
new file mode 100644
index 0000000..7b34f73
--- /dev/null
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_ip_over_infiniband.pp
@@ -0,0 +1,75 @@
+class env::base::configure_ip_over_infiniband (){
+
+  if $::lsbdistcodename == 'stretch' {
+
+    $infiniband_packages = ['qlvnictools']
+
+    ensure_packages([$infiniband_packages], {'ensure' => 'installed'})
+
+    Package[$infiniband_packages]
+    ->Service['openibd']
+
+  }
+
+  if $::lsbdistcodename != 'bullseye' {
+    # En suivant la doc https://wiki.debian.org/RDMA, vous n'avez pas besoin 
d'installer opensm sur les environnements
+    # Il risque de rentrer en conflit avec d'autres instances d'OpenSM présent 
sur du matériel réseau, ou bien sur des clusters externes à Grid5000 (exemple : 
https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=10747)
+    service {
+      'openibd':
+        provider => 'systemd',
+        enable   => true,
+        require  => [
+          File['/etc/systemd/system/openibd.service']
+        ];
+    }
+
+    file {
+      '/etc/infiniband':
+        ensure  => directory,
+        owner   => root,
+        group   => root,
+        mode    => '0644';
+      '/etc/infiniband/openib.conf':
+        ensure  => file,
+        owner   => root,
+        group   => root,
+        mode    => '0644',
+        source  => 'puppet:///modules/env/base/infiniband/openib.conf',
+        require => File['/etc/infiniband'];
+      '/etc/init.d/openibd':
+        ensure  => file,
+        owner   => root,
+        group   => root,
+        mode    => '0755',
+        source  => 'puppet:///modules/env/base/infiniband/openibd';
+      '/etc/systemd/system/openibd.service':
+        ensure  => file,
+        owner   => root,
+        group   => root,
+        mode    => '0644',
+        source  => 'puppet:///modules/env/base/infiniband/openibd.service';
+      '/lib/udev/rules.d/90-ib.rules':
+        ensure  => present,
+        owner   => root,
+        group   => root,
+        mode    => '0644',
+        source  => 'puppet:///modules/env/base/infiniband/90-ib.rules';
+    }
+  }
+
+  if "${::lsbdistcodename}" == "bullseye" {
+    package {
+      'rdma-core':
+        ensure =>  installed;
+    }
+    # Empeche que ibacm.service soit en status failed (voir #13013)
+    file {
+      '/etc/systemd/system/ibacm.service.d/':
+        ensure  => directory;
+      '/etc/systemd/system/ibacm.service.d/override.conf':
+        ensure  => present,
+        content => 
"[Service]\nType=exec\nExecStart=\nExecStart=-/usr/sbin/ibacm --systemd",
+        require => File['/etc/systemd/system/ibacm.service.d/'];
+    }
+  }
+}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_kexec.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_kexec.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_kexec.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_kexec.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
similarity index 94%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
index 9cf899a..d13058f 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/configure_omnipath.pp
@@ -5,8 +5,9 @@ class env::base::configure_omnipath(){
       $opapackages = ['opa-address-resolution', 'opa-fastfabric', 
'libopamgt0', 'libopasadb1',
                       'opa-basic-tools', 'firmware-misc-nonfree']
 
+      # Note: G5K libfabric1 packages installed in install_openmpi.pp
       $rdmapackages = ['qperf', 'libibverbs1', 'librdmacm1', 'libibmad5', 
'libibumad3', 'ibverbs-providers',
-                      'rdmacm-utils', 'infiniband-diags', 'libfabric1', 
'ibverbs-utils']
+                      'rdmacm-utils', 'infiniband-diags', 'ibverbs-utils']
 
       if $env::deb_arch == 'amd64' {
         ensure_packages([$opapackages, $rdmapackages], {
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_ndctl_monitor.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_ndctl_monitor.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_ndctl_monitor.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_ndctl_monitor.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_nvme_multipath.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_nvme_multipath.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_nvme_multipath.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/disable_nvme_multipath.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/do_not_clean_tmp.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/do_not_clean_tmp.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/do_not_clean_tmp.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/do_not_clean_tmp.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_cpufreq_with_performance_governor.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_cpufreq_with_performance_governor.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_cpufreq_with_performance_governor.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_cpufreq_with_performance_governor.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_userns.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_userns.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_userns.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/enable_userns.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/increase_ssh_maxstartups.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/increase_ssh_maxstartups.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/increase_ssh_maxstartups.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/increase_ssh_maxstartups.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/install_and_disable_ganglia.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/install_and_disable_ganglia.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/install_and_disable_ganglia.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/install_and_disable_ganglia.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/tcp_tuning_for_10gbe.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/tcp_tuning_for_10gbe.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/tcp_tuning_for_10gbe.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/tcp_tuning_for_10gbe.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/base/unlimited_memlock_for_infiniband.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/unlimited_memlock_for_infiniband.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/base/unlimited_memlock_for_infiniband.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/base/unlimited_memlock_for_infiniband.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/big.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/big.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/big.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
similarity index 77%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
index 3a3b9be..f5dd40f 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_amd_gpu.pp
@@ -6,8 +6,8 @@ class env::big::configure_amd_gpu () {
       apt::source {
         'repo.radeon.com':
           comment      => 'Repo for AMD ROCM packages',
-          location     => 'https://repo.radeon.com/rocm/apt/debian/',
-          release      => 'xenial',
+          location     => 
"https://repo.radeon.com/rocm/apt/${::env::common::software_versions::rocm_version}/";,
+          release      => 'ubuntu',
           repos        => 'main',
           architecture => 'amd64',
           key          => {
@@ -28,17 +28,23 @@ class env::big::configure_amd_gpu () {
           require         => [Apt::Source['repo.radeon.com'], 
Exec['apt_update']];
       }
 
+      exec {
+        'add_rocm_symlink':
+          command => "/bin/ln -s /opt/rocm-*/ /opt/rocm",
+          require => Package['rocm-smi-lib'];
+      }
+
       file_line {
         'rocm_etc_profile_path':
           path => '/etc/profile',
-          line => 'export PATH=$PATH:/opt/rocm-4.2.0/bin';
+          line => 'export PATH=$PATH:/opt/rocm/bin';
       }
 
       file {
         '/usr/local/bin/rocm-smi':
           ensure  => link,
-          target  => '/opt/rocm-4.2.0/bin/rocm-smi',
-          require => Package['rocm-smi-lib'];
+          target  => '/opt/rocm/bin/rocm-smi',
+          require => [Package['rocm-smi-lib'], Exec['add_rocm_symlink']];
         '/etc/udev/rules.d/70-amdgpu.rules':
           ensure  => present,
           owner   => root,
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_initramfs.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_initramfs.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_initramfs.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_initramfs.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_kvm.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_kvm.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_kvm.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_kvm.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/cuda.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/cuda.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/cuda.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/cuda.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/drivers.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/drivers.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/drivers.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/drivers.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/ganglia.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/ganglia.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/ganglia.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/ganglia.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/modules.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/modules.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/modules.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/modules.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/prometheus.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/prometheus.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/prometheus.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/prometheus.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/services.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/services.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/services.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_nvidia_gpu/services.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_postfix.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_postfix.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_postfix.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_postfix.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_sshfs.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_sshfs.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_sshfs.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/configure_sshfs.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_beegfs.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_beegfs.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_beegfs.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_beegfs.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_g5k_jupyterlab.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_g5k_jupyterlab.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_g5k_jupyterlab.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_g5k_jupyterlab.pp
diff --git 
a/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp
new file mode 100644
index 0000000..be2a5bd
--- /dev/null
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_openmpi.pp
@@ -0,0 +1,95 @@
+class env::big::install_openmpi () {
+
+  case "${::lsbdistcodename}" {
+
+    "stretch" : {
+      $openmpi_packages = [ 'libopenmpi-dev', 'openmpi-bin' ]
+      $openmpi_deps_packages = [ 'librdmacm1', 'libgfortran3', 'libnuma1', 
'blcr-util', 'libibverbs1-dbg', 'libibverbs-dev', 'libpsm2-dev', 'libhfi1-dev', 
'libopamgt-dev' ]
+      $openmpi_scibian_version = '2.0.2-2sci9+opa10.7u4'
+
+      ensure_packages($openmpi_deps_packages, {
+        ensure => present,
+        require => Class['apt::update']
+      })
+
+      ensure_packages($openmpi_packages, {
+        ensure => $openmpi_scibian_version,
+        require => Class['apt::update']
+      })
+    }
+
+    "buster" : {
+      $openmpi_packages = [ 'libopenmpi-dev', 'openmpi-bin' ]
+      $openmpi_deps_packages = [ 'libnuma1', 'libibverbs-dev' ]
+      $openmpi_opa_packages = [ 'libpsm2-dev', 'libopamgt-dev' ]
+
+      ensure_packages($openmpi_deps_packages, {
+        ensure => present,
+        require => Class['apt::update']
+      })
+
+      if $env::deb_arch == 'amd64' {
+        ensure_packages($openmpi_opa_packages, {
+          ensure => present,
+          require => Class['apt::update']
+        })
+      }
+
+      ensure_packages($openmpi_packages, {
+        ensure => present,
+        require => Class['apt::update']
+      })
+
+      # The 'verbs' OFI provider is broken in OpenMPI 3.1.3. We disable it.
+      # See https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=10918
+      # and https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941996
+      # https://github.com/open-mpi/ompi/issues/7035
+      # OpenMPI 4.x is not affected, so this can be removed after buster.
+      # This does not affect OpenMPI when loaded using 'module'
+      file_line { 'disable_verbs_ofi_provider':
+        path => '/etc/openmpi/openmpi-mca-params.conf',
+        line => 'mtl_ofi_provider_exclude = shm,sockets,tcp,udp,rstream,verbs',
+        require => Package['openmpi-bin'];
+      }
+
+    }
+
+    "bullseye" : {
+      $openmpi_packages = [ 'libopenmpi-dev', 'openmpi-bin', 'ucx-utils', 
'libfabric-bin' ]
+      $openmpi_deps_packages = [ 'libnuma1', 'libibverbs-dev' ]
+      $openmpi_opa_packages = [ 'libpsm2-dev', 'libopamgt-dev' ]
+
+      ensure_packages($openmpi_deps_packages, {
+        ensure => present,
+        require => Class['apt::update']
+      })
+
+      if $env::deb_arch == 'amd64' {
+        ensure_packages($openmpi_opa_packages, {
+          ensure => present,
+          require => Class['apt::update']
+        })
+      }
+
+      ensure_packages($openmpi_packages, {
+        ensure => present,
+        require => Class['apt::update']
+      })
+
+      # libfabric packages : G5K rebuild with efa provider disabled
+      # See Bug #13260
+      env::common::g5kpackages {
+        'libfabric1':
+          packages => 'libfabric1';
+      }
+
+      # Debian11 disables many providers by default. We restore UCX and Fabric,
+      # while keeping openib disabled to avoid useless warnings
+      file { '/etc/openmpi/openmpi-mca-params.conf':
+        content => "#Managed by Grid'5000 environments 
recipes\nbtl_base_warn_component_unused=0\nbtl = ^openib",
+        require => Package['openmpi-bin'];
+      }
+    }
+  }
+
+}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_prometheus_exporters.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_prometheus_exporters.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_prometheus_exporters.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_prometheus_exporters.pp
diff --git 
a/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp
new file mode 100644
index 0000000..f94394f
--- /dev/null
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_smartd.pp
@@ -0,0 +1,28 @@
+class env::big::install_smartd {
+
+  if "$::lsbdistcodename" != "stretch" {
+
+    package {
+      'smartmontools':
+        ensure => installed;
+    }
+
+    file {
+      '/etc/systemd/system/smartd.service.d/':
+        ensure  => directory,
+        require => Package['smartmontools'];
+      '/etc/systemd/system/smartd.service.d/override.conf':
+        ensure  => present,
+        content => "[Service]\nExecStartPre=mkdir -p /dev/discs",
+        require => File['/etc/systemd/system/smartd.service.d/'];
+    }
+
+    file_line { 'smard.conf':
+      ensure  => present,
+      require => Package['smartmontools'],
+      path    => '/etc/smartd.conf',
+      line    => 'DEVICESCAN -d nvme -d scsi -d ata -d sat -n standby -m root 
-M exec /usr/share/smartmontools/smartd-runner',
+      match   => '^DEVICESCAN .*';
+    }
+  }
+}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_snmp_tools.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_snmp_tools.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_snmp_tools.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/install_snmp_tools.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/big/prepare_kernel_module_build.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/prepare_kernel_module_build.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/big/prepare_kernel_module_build.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/big/prepare_kernel_module_build.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/common/apt_pinning.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/apt_pinning.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/common/apt_pinning.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/apt_pinning.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/common/g5kpackages.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/g5kpackages.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/common/g5kpackages.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/g5kpackages.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
similarity index 91%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
index 2f968be..36c421a 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/common/software_versions.pp
@@ -2,7 +2,7 @@
 
 class env::common::software_versions {
   $g5k_subnets                 = '1.4.2'
-  $g5k_meta_packages           = '0.7.45'
+  $g5k_meta_packages           = '0.7.46'
   $tgz_g5k                     = '2.0.17'
   $g5k_checks                  = '0.11.2'
   $sudo_g5k                    = '1.11'
@@ -11,6 +11,7 @@ class env::common::software_versions {
   $libguestfs_backport_ppc64el = '1:1.40.2-7~bpog5k10+1'
   $lmod                        = '6.6-0.3g5k1'
   $g5k_jupyterlab              = '0.6'
+  $rocm_version                = '4.3.1'
 
   case "$env::deb_arch" {
     'amd64': {
@@ -23,7 +24,7 @@ class env::common::software_versions {
           $dcgm_exporter          = '2.0.0-rc.11'
         }
         'bullseye': {
-          $nvidia_driver          = '460.73.01'
+          $nvidia_driver          = '460.91.03'
           $nvidia_cuda            = '11.2.2_460.32.03_linux'
           $datacenter_gpu_manager = '1:2.1.4'
           $dcgm_exporter          = '2.3.0-1'
@@ -44,7 +45,7 @@ class env::common::software_versions {
         }
         'bullseye': {
           $nvidia_driver          = '418.197.02'
-          $nvidia_user_driver     = '460.73.01'
+          $nvidia_user_driver     = '460.91.03'
           $nvidia_cuda            = '11.2.2_460.32.03_linux_ppc64le'
           $datacenter_gpu_manager = '1:2.0.15'
           $dcgm_exporter          = '2.3.0-1'
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/commonpackages.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/commonpackages.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/commonpackages.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/commonpackages.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/init.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/init.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/init.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/init.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/min.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/min.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/min.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/add_image_version_in_etc.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/add_image_version_in_etc.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/add_image_version_in_etc.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/add_image_version_in_etc.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_kernel_and_blacklist_some_modules.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_kernel_and_blacklist_some_modules.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_kernel_and_blacklist_some_modules.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_kernel_and_blacklist_some_modules.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_network_and_install_drivers.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_network_and_install_drivers.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_network_and_install_drivers.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/configure_network_and_install_drivers.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/generate_etc_motd.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/generate_etc_motd.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/generate_etc_motd.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/generate_etc_motd.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_locales.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_locales.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_locales.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_locales.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_ssh.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_ssh.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_ssh.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_and_configure_ssh.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_cpu_microcode.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_cpu_microcode.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_cpu_microcode.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_cpu_microcode.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_metapackage.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_metapackage.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_metapackage.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_metapackage.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_tgz_g5k.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_tgz_g5k.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_tgz_g5k.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/install_tgz_g5k.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/initramfs.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/initramfs.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/initramfs.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/initramfs.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/modules.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/modules.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/modules.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/modules.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/remove_old.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/remove_old.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/remove_old.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/remove_old.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/setup_links.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/setup_links.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/setup_links.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/kernel/setup_links.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_root_password.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_root_password.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_root_password.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_root_password.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_timezone_to_europe_paris.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_timezone_to_europe_paris.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_timezone_to_europe_paris.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/min/set_timezone_to_europe_paris.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/nfs.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_iscsi.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_iscsi.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_iscsi.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_iscsi.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ldap.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ldap.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ldap.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ldap.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_module_path.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_module_path.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_module_path.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_module_path.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ntp.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ntp.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ntp.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/configure_ntp.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_nfs_requirements.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_nfs_requirements.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_nfs_requirements.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_nfs_requirements.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_osirim_requirements.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_osirim_requirements.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_osirim_requirements.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_osirim_requirements.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_storage5k_requirements.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_storage5k_requirements.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_storage5k_requirements.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/nfs/install_storage5k_requirements.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp
similarity index 96%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp
index 99d3611..1f71a7e 100644
--- a/grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp
+++ b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std.pp
@@ -55,4 +55,6 @@ class env::std ( $variant = "big", $parent_parameters = {} ){
   if $env::deb_arch == 'arm64' or $env::deb_arch == 'ppc64el' {
     class { 'env::std::install_libguestfs_backport': }
   }
+  # kameleon
+  class { 'env::std::install_kameleon': }
 }
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
similarity index 91%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
index d73964d..67b9957 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
@@ -11,11 +11,11 @@ class env::std::configure_oar_client {
         $oar_repos_release = "stretch-backports_beta"
       }
       'buster' : {
-        $oar_version       = "2.5.10~g5k8-1";
+        $oar_version       = "2.5.10~g5k10-2";
         $oar_repos         = "g5k"
       }
       'bullseye' : {
-        $oar_version       = "2.5.10~g5k8-1";
+        $oar_version       = "2.5.10~g5k10-2";
         $oar_repos         = "g5k"
       }
       default : {
@@ -168,13 +168,26 @@ class env::std::configure_oar_client {
       mode     => '0644',
       content  => $hiera['oar_authorized_keys'],
       require  => Package[$oar_packages];
-    '/etc/default/oar-node':
+    '/etc/oar/oar-node-service':
       ensure   => present,
       owner    => root,
       group    => root,
-      mode     => '0644',
-      source   => 'puppet:///modules/env/std/oar/default_oar-node',
+      mode     => '0755',
+      source   => 'puppet:///modules/env/std/oar/oar-node-service',
       require  => Package[$oar_packages];
+    '/etc/systemd/system/oar-node.service.d':
+      ensure   => directory,
+      owner    => root,
+      group    => root,
+      mode     => '0755',
+      require  => Package[$oar_packages];
+    '/etc/systemd/system/oar-node.service.d/override.conf':
+      ensure   => present,
+      owner    => root,
+      group    => root,
+      mode     => '0644',
+      source   => 'puppet:///modules/env/std/oar/oar-node.service.override',
+      require  => [Package[$oar_packages], 
File['/etc/systemd/system/oar-node.service.d']];
   }
 
   augeas {
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
similarity index 68%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
index 871045f..000c9bb 100644
--- 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
@@ -27,6 +27,18 @@ class env::std::install_g5kchecks {
           source   => "puppet:///modules/env/std/g5kchecks/g5k-checks.conf",
           require  => Package["g5k-checks"];
       }
+
+      # Use refrepo specific branch for testing
+      if "${::lsbdistcodename}" == "bullseye" {
+        file_line { 'g5k-checks_conf':
+          ensure     => present,
+          match      => "^(#)?branch:*",
+          path       => '/etc/g5k-checks.conf',
+          line       => 'branch: debian11_std',
+          replace    => true,
+          require    => File['/etc/g5k-checks.conf'];
+        }
+      }
     }
     default: {
       err "${operatingsystem} not supported."
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
diff --git 
a/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_kameleon.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_kameleon.pp
new file mode 100644
index 0000000..6e3be85
--- /dev/null
+++ 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_kameleon.pp
@@ -0,0 +1,21 @@
+class env::std::install_kameleon {
+
+  case $operatingsystem {
+    'Debian': {
+      case "${lsbdistcodename}" {
+        'buster', 'bullseye': {
+          env::common::g5kpackages {
+            'kameleon':
+              release => "${lsbdistcodename}";
+          }
+        }
+        default: {
+          err "${lsbdistcodename} not supported."
+        }
+      }
+    }
+    default: {
+      err "${operatingsystem} not supported."
+    }
+  }
+}
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/xen.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen.pp
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/manifests/xen.pp
rename to image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/configure_xen.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/configure_xen.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/xen/configure_xen.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/configure_xen.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/install_grub.pp 
b/image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/install_grub.pp
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/manifests/xen/install_grub.pp
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/manifests/xen/install_grub.pp
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/base/omnipath/scibian.key.erb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/base/omnipath/scibian.key.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/base/omnipath/scibian.key.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/base/omnipath/scibian.key.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/common/apt_pinning.erb 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/common/apt_pinning.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/common/apt_pinning.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/common/apt_pinning.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/min/motd.erb 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/min/motd.erb
similarity index 100%
rename from grid5000/steps/data/setup/puppet/modules/env/templates/min/motd.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/min/motd.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ldap/common-account.erb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ldap/common-account.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ldap/common-account.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ldap/common-account.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ntp/ntp.conf.erb 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ntp/ntp.conf.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ntp/ntp.conf.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/nfs/ntp/ntp.conf.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/std/dell/linux.dell.com.key.erb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/std/dell/linux.dell.com.key.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/std/dell/linux.dell.com.key.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/std/dell/linux.dell.com.key.erb
diff --git 
a/grid5000/steps/data/setup/puppet/modules/env/templates/std/hwraid/hwraid.le-vert.net.key.erb
 
b/image/grid5000/steps/data/setup/puppet/modules/env/templates/std/hwraid/hwraid.le-vert.net.key.erb
similarity index 100%
rename from 
grid5000/steps/data/setup/puppet/modules/env/templates/std/hwraid/hwraid.le-vert.net.key.erb
rename to 
image/grid5000/steps/data/setup/puppet/modules/env/templates/std/hwraid/hwraid.le-vert.net.key.erb
diff --git a/default/steps/disable_checkpoint.yaml 
b/image/grid5000/steps/disable_checkpoint.yaml
similarity index 100%
rename from default/steps/disable_checkpoint.yaml
rename to image/grid5000/steps/disable_checkpoint.yaml
diff --git a/default/steps/enable_checkpoint.yaml 
b/image/grid5000/steps/enable_checkpoint.yaml
similarity index 100%
rename from default/steps/enable_checkpoint.yaml
rename to image/grid5000/steps/enable_checkpoint.yaml
diff --git a/default/steps/env/bashrc b/image/grid5000/steps/env/bashrc
similarity index 100%
rename from default/steps/env/bashrc
rename to image/grid5000/steps/env/bashrc
diff --git a/grid5000/steps/env/functions.sh 
b/image/grid5000/steps/env/functions.sh
similarity index 100%
rename from grid5000/steps/env/functions.sh
rename to image/grid5000/steps/env/functions.sh
diff --git a/grid5000/steps/export/debian/clean_dhcp_leases.yaml 
b/image/grid5000/steps/export/debian/clean_dhcp_leases.yaml
similarity index 100%
rename from grid5000/steps/export/debian/clean_dhcp_leases.yaml
rename to image/grid5000/steps/export/debian/clean_dhcp_leases.yaml
diff --git a/grid5000/steps/export/do_qcow2_finish_works.yaml 
b/image/grid5000/steps/export/do_qcow2_finish_works.yaml
similarity index 100%
rename from grid5000/steps/export/do_qcow2_finish_works.yaml
rename to image/grid5000/steps/export/do_qcow2_finish_works.yaml
diff --git a/grid5000/steps/export/export_g5k.yaml 
b/image/grid5000/steps/export/export_g5k.yaml
similarity index 100%
rename from grid5000/steps/export/export_g5k.yaml
rename to image/grid5000/steps/export/export_g5k.yaml
diff --git a/default/steps/export/save_appliance_VM.yaml 
b/image/grid5000/steps/export/save_appliance_VM.yaml
similarity index 85%
rename from default/steps/export/save_appliance_VM.yaml
rename to image/grid5000/steps/export/save_appliance_VM.yaml
index b064d02..e755113 100644
--- a/default/steps/export/save_appliance_VM.yaml
+++ b/image/grid5000/steps/export/save_appliance_VM.yaml
@@ -8,7 +8,6 @@
 - zerofree: true
 
 - save_appliance:
-  - check_cmd_local: python2
   - exec_local: |
       if [ "$${zerofree}" = "true" ]; then
         EXPORT_OPTS="--zerofree"
@@ -16,7 +15,7 @@
         EXPORT_OPTS=""
       fi
   - exec_local: |
-      python2 $${export_appliance_script} $${image_disk}.$${image_format} \
+      $${export_appliance_script} $${image_disk}.$${image_format} \
         -o $${appliance_filename} \
         --formats $${appliance_formats} \
         --tar-compression-level $${appliance_tar_compression_level} \
diff --git a/default/steps/setup/debian/clean_system.yaml 
b/image/grid5000/steps/setup/debian/clean_system.yaml
similarity index 100%
rename from default/steps/setup/debian/clean_system.yaml
rename to image/grid5000/steps/setup/debian/clean_system.yaml
diff --git a/grid5000/steps/setup/debian/clean_unnecessary_packages.yaml 
b/image/grid5000/steps/setup/debian/clean_unnecessary_packages.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/clean_unnecessary_packages.yaml
rename to image/grid5000/steps/setup/debian/clean_unnecessary_packages.yaml
diff --git a/grid5000/steps/setup/debian/configure_apt_sources.yaml 
b/image/grid5000/steps/setup/debian/configure_apt_sources.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/configure_apt_sources.yaml
rename to image/grid5000/steps/setup/debian/configure_apt_sources.yaml
diff --git a/grid5000/steps/setup/debian/configure_system.yaml 
b/image/grid5000/steps/setup/debian/configure_system.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/configure_system.yaml
rename to image/grid5000/steps/setup/debian/configure_system.yaml
diff --git a/grid5000/steps/setup/debian/install_packages.yaml 
b/image/grid5000/steps/setup/debian/install_packages.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/install_packages.yaml
rename to image/grid5000/steps/setup/debian/install_packages.yaml
diff --git a/default/steps/setup/debian/minimal_install.yaml 
b/image/grid5000/steps/setup/debian/minimal_install.yaml
similarity index 100%
rename from default/steps/setup/debian/minimal_install.yaml
rename to image/grid5000/steps/setup/debian/minimal_install.yaml
diff --git a/grid5000/steps/setup/debian/run_orchestrator.yaml 
b/image/grid5000/steps/setup/debian/run_orchestrator.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/run_orchestrator.yaml
rename to image/grid5000/steps/setup/debian/run_orchestrator.yaml
diff --git a/grid5000/steps/setup/debian/setup_orchestrator.yaml 
b/image/grid5000/steps/setup/debian/setup_orchestrator.yaml
similarity index 100%
rename from grid5000/steps/setup/debian/setup_orchestrator.yaml
rename to image/grid5000/steps/setup/debian/setup_orchestrator.yaml
diff --git a/notes.txt b/image/notes.txt
similarity index 100%
rename from notes.txt
rename to image/notes.txt
diff --git a/debian11-taler.yaml b/image/taler-debian11.yaml
similarity index 72%
rename from debian11-taler.yaml
rename to image/taler-debian11.yaml
index fd84692..86e5a06 100644
--- a/debian11-taler.yaml
+++ b/image/taler-debian11.yaml
@@ -26,7 +26,7 @@ global:
   ## Environment image path and compression
   # Note: unknown why this is not propagated to the ".dsc" file,
   #       So we must adjust it manually!
-  g5k_tgz_file: http://public.lyon.grid5000.fr/~grothoff/debian10-taler.tar.zst
+  g5k_tgz_file: http://public.lyon.grid5000.fr/~bfhch01/debian10-taler.tar.zst
   # g5k_tar_compression: "zstd"
   ## Environment postinstall path, compression, and script command
   # g5k_postinst_path: server:///grid5000/postinstalls/g5k-postinstall.tgz
@@ -51,21 +51,32 @@ setup:
   ### The setup section is where customizations of the system take place.
   ## We can request steps from the extended recipe to be executed
   - "@base"
-  - taler_install
+  - taler_install:
+    - microstep1:
+      - exec_in: |
+         echo "deb https://deb.taler.net/apt/debian bullseye main" > 
/etc/apt/sources.list.d/taler.list
+         wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+         apt-get update
+         apt-upgrade
+         apt-get install -y nginx postgresql-13 taler-exchange taler-auditor 
taler-merchant taler-exchange-offline taler-wallet-cli
+         apt-get install -y git zile
+
   ## We add steps required by our customization after or before @base. Use
   ## kameleon dryrun debian10_custom.yaml to see the resulting steps in the 
build.
   ## The following is given as example only, replace with your steps.
   - a_customization_step:
     - microstep1:
       - exec_in: |
-           cd /root
-           git clone git://git.taler.net/grid5k.git
-           cp grid5k/gridboot.service /etc/systemd/system/gridboot.service
-           chmod 640 /etc/systemd/system/gridboot.service
-           cp grid5k/at-boot.sh /usr/local/bin/at-boot.sh
-           chmod +x /usr/local/bin/at-boot.sh
-           systemctl daemon-reload
-           systemctl enable gridboot
+         cd /root
+         git clone git://git.taler.net/grid5k.git
+         cp grid5k/gridboot.service /etc/systemd/system/gridboot.service
+         chmod 640 /etc/systemd/system/gridboot.service
+         cp grid5k/at-boot.sh /usr/local/bin/at-boot.sh
+         chmod +x /usr/local/bin/at-boot.sh
+         systemctl daemon-reload
+         systemctl enable gridboot
+         systemctl stop nginx postgresql
+         systemctl disable nginx postgresql
 
     - microstep1:
       # This breakpoint will stop the build for inspecting the environment
@@ -75,3 +86,4 @@ export:
   ### The export section takes in charge the export of your customized 
Grid'5000
   ## environment. No modification should be needed here.
   - "@base"
+
diff --git a/steps/setup/taler_install.yaml b/steps/setup/taler_install.yaml
deleted file mode 100644
index 2e55b44..0000000
--- a/steps/setup/taler_install.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-- install_taler:
-    - exec_in : |
-         echo "deb https://deb.taler.net/apt/debian bullseye main" > 
/etc/apt/sources.list.d/taler.list
-         wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
-         apt-get update
-         apt-upgrade
-         apt-get install -y nginx postgresql-13 taler-exchange taler-auditor 
taler-merchant taler-exchange-offline taler-wallet-cli
-         apt-get install -y git zile
diff --git a/steps/setup/taler_install.yaml~ b/steps/setup/taler_install.yaml~
deleted file mode 100644
index 75f58bd..0000000
--- a/steps/setup/taler_install.yaml~
+++ /dev/null
@@ -1,2 +0,0 @@
-- install_ffmpeg:
-    - exec_in : apt-get update && apt-get install -y libsodium-dev
\ No newline at end of file
diff --git a/update.sh b/update.sh
index 2e8b0df..a9f8089 100644
--- a/update.sh
+++ b/update.sh
@@ -5,7 +5,18 @@ set -eu
 
 touch /root/at-boot-worked
 
+# Temporarily checkout to the feature branch
+cd /root/grid5k && git checkout node-setup && git pull && cd
+
 # Override default /etc/ with the one from this Git.
 cp -r /root/grid5k/etc/* /etc
 
+HOST=$(hostname)
+
+case "$HOST" in 
+       yeti-*.grenoble.*) echo "DB";;
+       graphique-*.nancy.*) echo "EXCH";;
+       chifflet-*.lille) echo "WALLET";;
+esac
+
 exit 0

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]