diff --git a/vagrant-env/.gitignore b/vagrant-env/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..63b17d85e607d30c37ae16f5492b965204e40018
--- /dev/null
+++ b/vagrant-env/.gitignore
@@ -0,0 +1,4 @@
+.vagrant
+/envs/*.tgz
+/envs/*.img
+/envs/*.vmlinuz
diff --git a/vagrant-env/README.md b/vagrant-env/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..619ad027394a55fad7f4ad8b725e3da890cc32d5
--- /dev/null
+++ b/vagrant-env/README.md
@@ -0,0 +1,34 @@
+Vagrant
+=======
+
+On your host you need:
+* To be inside g5k vpn (to get deb from packages.grid5000.fr)
+* To get an environment from g5k
+```
+* rsync nancy.g5kadmin:/grid5000/images/debian9-x64-min-2020090209.tgz envs/
+```
+* To start ncat to allow the kadeploy from vagrant to reboot a virtual machine.
+You will need ncat from nmap. (apt install ncat)
+* In a separate terminal:
+```
+  cd vagrant-env
+  ncat -k -l --allow localhost --sh-exec $(readlink -f vbhelper.sh)
+```
+* vagrant up kadeploy
+* vagrant up knode-1 #Fail to connect ssh is expected
+* vagrant ssh kadeploy
+```
+vagrant@kadeploy> kadeploy3d -d
+vagrant@kadeploy> karights3 -o -a -m node-1 -u vagrant
+vagrant@kadeploy> kaenv3 -a /vagrant/envs/debian9-x64-min.dsc
+vagrant@kadeploy> kadeploy3 -m node-1 -e debian9-x64-min -V5 -r ext4
+```
+
+How to debug
+============
+
+Server side using byebug
+------------------------
+
+* Add `require byebug` and `byebug` to the line you whish to debug
+* start the deamon in foreground without any std fd redirection: `kadeploy3d -IOE`
diff --git a/vagrant-env/Vagrantfile b/vagrant-env/Vagrantfile
new file mode 100644
index 0000000000000000000000000000000000000000..08ed8cc7f63368360dc4007e9b95951f06af57a5
--- /dev/null
+++ b/vagrant-env/Vagrantfile
@@ -0,0 +1,51 @@
+require 'yaml'
+
+
+Vagrant.configure("2") do |config|
+  config.vm.define :kadeploy do |server|
+    server.vm.box = 'debian/contrib-jessie64'
+    server.vm.hostname = 'kadeploy'
+    server.vm.synced_folder '.', '/vagrant'
+    server.vm.synced_folder '..', '/kadeploy'
+    server.vm.network "private_network", ip: "10.0.10.100", libvirt__network_name: "pxe_network", :libvirt__dhcp_enabled => false, virtualbox__intnet: "pxe_network"
+    server.ssh.insert_key = false
+    server.vm.provision 'shell', path: "kadeploy_provision.sh"
+  end
+
+  nodes = {}
+  (ENV['NODES'] || 1).to_i.times do |i|
+    nodes["knode-#{i+1}"] = {
+      'mac' => "00:09:3d:00:11:%02x"%(i+1),
+      'ip'  => "10.0.10.#{i+1}" # The first IP of the network is used by the host
+    }
+  end
+  nodes.each_pair do |name,node|
+    config.vm.define name do |agent|
+    # Vagrant want a box even if we don't use it
+      agent.vm.box = "olbat/tiny-core-micro"
+      agent.vm.box_version = "0.1.0"
+
+      agent.vm.provider :virtualbox do |vb|
+        vb.memory = '1024'
+        vb.cpus = '1'
+        vb.gui = 'true'
+
+        vb.customize [
+        'modifyvm', :id,
+          '--nic1', 'intnet',
+          '--intnet1', 'pxe_network',
+          '--boot1', 'net',
+          '--boot2', 'none',
+          '--boot3', 'none',
+          '--boot4', 'none',
+          '--macaddress1', node['mac'].delete(':'),
+          '--ioapic', 'on',
+          '--uart1', '0x3f8', '4',
+          "--uartmode1", "tcpserver", "2323"
+        ]
+        agent.ssh.host = node['ip']
+        agent.vm.boot_timeout = 20
+      end
+    end
+  end
+end
diff --git a/vagrant-env/db_creation.sql b/vagrant-env/db_creation.sql
new file mode 100644
index 0000000000000000000000000000000000000000..24ac349b8e01f317259a50f238fd3007605b42fa
--- /dev/null
+++ b/vagrant-env/db_creation.sql
@@ -0,0 +1,97 @@
+-- Kadeploy 3.1
+-- Copyright (c) by INRIA, Emmanuel Jeanvoine - 2008-2010
+-- CECILL License V2 - http://www.cecill.info
+-- For details on use and redistribution please refer to License.txt
+
+
+-- 
+-- Table `environments`
+-- 
+
+DROP TABLE IF EXISTS `environments`;
+CREATE TABLE IF NOT EXISTS `environments` (
+  `id` int(10) unsigned NOT NULL auto_increment,
+  `name` varchar(255) NOT NULL default '',
+  `version` int(10) unsigned NOT NULL default '0',
+  `description` text,
+  `author` varchar(56) NOT NULL default '',
+  `tarball` varchar(512) NOT NULL,
+  `preinstall` varchar(512) NOT NULL,
+  `postinstall` varchar(512) NOT NULL,
+  `hypervisor` varchar(255) NOT NULL,
+  `hypervisor_params` varchar(255) NOT NULL,
+  `initrd` varchar(255) NOT NULL,
+  `kernel` varchar(255) NOT NULL,
+  `kernel_params` varchar(255) NOT NULL,
+  `fdisk_type` varchar(2) default NULL,
+  `filesystem` varchar(9) default NULL,
+  `user` varchar(255) default 'nobody',
+  `allowed_users` varchar(512) NOT NULL,
+  `environment_kind` varchar(10) NOT NULL,
+  `visibility` varchar(8) NOT NULL,
+  `demolishing_env` boolean NOT NULL default FALSE,
+  `multipart` boolean NOT NULL default FALSE,
+  `options` text NULL default NULL,
+  PRIMARY KEY  (`id`)
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+-- 
+-- Table `log`
+-- 
+
+DROP TABLE IF EXISTS `log`;
+CREATE TABLE IF NOT EXISTS `log` (
+  `wid` varchar(41) NOT NULL,
+  `hostname` varchar(256) NOT NULL,
+  `step1` varchar(45) NOT NULL,
+  `step2` varchar(45) NOT NULL,
+  `step3` varchar(45) NOT NULL,
+  `timeout_step1` smallint(5) unsigned NOT NULL,
+  `timeout_step2` smallint(5) unsigned NOT NULL,
+  `timeout_step3` smallint(5) unsigned NOT NULL,
+  `retry_step1` tinyint(1) unsigned NOT NULL,
+  `retry_step2` tinyint(1) unsigned NOT NULL,
+  `retry_step3` tinyint(1) unsigned NOT NULL,
+  `start` int(10) unsigned NOT NULL,
+  `step1_duration` int(10) unsigned NOT NULL,
+  `step2_duration` int(10) unsigned NOT NULL,
+  `step3_duration` int(10) unsigned NOT NULL,
+  `env` varchar(64) NOT NULL,
+  `anonymous_env` varchar(6) NOT NULL,
+  `md5` varchar(35) NOT NULL,
+  `success` varchar(6) NOT NULL,
+  `error` varchar(255) NOT NULL,
+  `user` varchar(16) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+-- 
+-- Table `nodes`
+-- 
+
+DROP TABLE IF EXISTS `nodes`;
+CREATE TABLE IF NOT EXISTS `nodes` (
+  `hostname` varchar(256) NOT NULL,
+  `state` varchar(16) NOT NULL,
+  `env_id` int(10) NOT NULL,
+  `date` int(10) unsigned NOT NULL,
+  `user` varchar(16) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+
+-- --------------------------------------------------------
+
+-- 
+-- Table `rights`
+-- 
+
+DROP TABLE IF EXISTS `rights`;
+CREATE TABLE IF NOT EXISTS `rights` (
+  `user` varchar(30) NOT NULL,
+  `node` varchar(256) NOT NULL,
+  `part` varchar(50) NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
diff --git a/vagrant-env/envs/debian9-x64-min.dsc b/vagrant-env/envs/debian9-x64-min.dsc
new file mode 100644
index 0000000000000000000000000000000000000000..9a706c335ead948dffed6dfec69dfb2cef57f8c7
--- /dev/null
+++ b/vagrant-env/envs/debian9-x64-min.dsc
@@ -0,0 +1,22 @@
+---
+name: debian9-x64-min
+version: 2020090209
+description: debian 9 (stretch) - min
+author: support-staff@lists.grid5000.fr
+visibility: public
+destructive: false
+os: linux
+image:
+  file: server:///vagrant/envs/debian9-x64-min-2020090209.tgz
+  kind: tar
+  compression: gzip
+postinstalls:
+- archive: server:///grid5000/postinstalls/g5k-postinstall.tgz
+  compression: gzip
+  script: "g5k-postinstall --net debian --net traditional-names -d --no-ref-api"
+boot:
+  kernel: "/vmlinuz"
+  initrd: "/initrd.img"
+filesystem: ext4
+partition_type: 131
+multipart: false
diff --git a/vagrant-env/kadeploy_conf/client.conf b/vagrant-env/kadeploy_conf/client.conf
new file mode 100644
index 0000000000000000000000000000000000000000..4affeba8f6debe530192a7899bbc0c22e6e2c841
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/client.conf
@@ -0,0 +1,7 @@
+---
+default: site1
+servers:
+- name: site1
+  port: 25301
+  hostname: 127.0.0.1
+  secure: true
diff --git a/vagrant-env/kadeploy_conf/clusters.conf b/vagrant-env/kadeploy_conf/clusters.conf
new file mode 100644
index 0000000000000000000000000000000000000000..82b8d8fbe5538a5fc330350a9a2ad2a76e023109
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/clusters.conf
@@ -0,0 +1,7 @@
+---
+clusters:
+- name: A
+  conf_file: sample-cluster.conf
+  nodes:
+  - address: 10.0.10.2
+    name: node-1
diff --git a/vagrant-env/kadeploy_conf/command.conf b/vagrant-env/kadeploy_conf/command.conf
new file mode 100644
index 0000000000000000000000000000000000000000..5e0251e8b92d9e0ec6e381e7274761c985f8382c
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/command.conf
@@ -0,0 +1,7 @@
+#We can specify here specific commands for specific nodes
+#
+# node-1:
+#   soft_reboot: ssh root@node-1 reboot
+# node-2:
+#   power_status: lanpower -s node-1
+#
diff --git a/vagrant-env/kadeploy_conf/sample-cluster.conf b/vagrant-env/kadeploy_conf/sample-cluster.conf
new file mode 100644
index 0000000000000000000000000000000000000000..501c13d7b9ec21b03b381720bf80c67d10dc0a43
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/sample-cluster.conf
@@ -0,0 +1,67 @@
+---
+partitioning:
+  partitions:
+    tmp: 5
+    prod: 2
+    deploy: 3
+    swap: 1
+  disable_swap: false
+  block_device: /dev/sda
+  script: /vagrant/scripts/partitioning.sh
+boot:
+  sleep_time_before_ping: 0
+  install_bootloader: /vagrant/scripts/install_grub_g5k.sh
+  kernels:
+    deploy:
+      initrd: kernels/kadeploy3-deploy-kernel-buster.initrd.img
+      vmlinuz: kernels/kadeploy3-deploy-kernel-buster.vmlinuz
+      params: modprobe.blacklist=igb ETH_DEV=eth0 console=tty0 console=ttyS0,115200 ramdisk_size=260000 rw root=/root.tmp net.ifnames=0 biosdevname=0
+      supported_fs: ext2, ext3, ext4
+timeouts:
+  reboot: 120
+  kexec: 120
+remoteops:
+  console:
+  - name: soft
+    cmd: conman HOSTNAME_SHORT
+  reboot:
+  - name: soft
+    cmd: ssh -o StrictHostKeyChecking=no HOSTNAME_SHORT sudo reboot
+  - name: hard
+    cmd:  echo restart | ncat $(ip route get 8.8.8.8 | head -n 1 | sed 's/.*via \([0-9.]*\) dev.*/\1/g')
+  - name: very_hard
+    cmd:  echo restart | ncat $(ip route get 8.8.8.8 | head -n 1 | sed 's/.*via \([0-9.]*\) dev.*/\1/g')
+  power_on:
+  - name: hard
+    cmd:  echo poweron | ncat $(ip route get 8.8.8.8 | head -n 1 | sed 's/.*via \([0-9.]*\) dev.*/\1/g')
+  power_off:
+  - name: soft
+    cmd: ssh -o StrictHostKeyChecking=no HOSTNAME_SHORT sudo poweroff
+  - name: hard
+    cmd:  echo poweroff | ncat $(ip route get 8.8.8.8 | head -n 1 | sed 's/.*via \([0-9.]*\) dev.*/\1/g')
+  power_status:
+  - name: soft
+    cmd: ping -c 2 HOSTNAME_SHORT
+pxe:
+  headers:
+    dhcp: &id001 |-
+     PROMPT 0
+     SERIAL 0 38400
+    networkboot: *id001
+    localboot: *id001
+automata:
+  macrosteps:
+    BootNewEnv:
+    - timeout: 150
+      type: Classical
+#      type: Kexec
+      retries: 1
+    BroadcastEnv:
+    - timeout: 300
+      type: Kascade
+      retries: 2
+    SetDeploymentEnv:
+    - timeout: 200
+      type: Untrusted
+#      type: Kexec
+      retries: 2
diff --git a/vagrant-env/kadeploy_conf/server.conf b/vagrant-env/kadeploy_conf/server.conf
new file mode 100644
index 0000000000000000000000000000000000000000..b2326bb022e6370f9a7e3d3b77ee916ff62e58b7
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/server.conf
@@ -0,0 +1,88 @@
+---
+database:
+  name: deploy3
+  kind: mysql
+  host: localhost
+  login: deploy
+  passwd: deploy-password
+rights:
+  purge_deployment_timer: 900
+  kind: db
+  almighty_users: root,deploy,vagrant
+authentication:
+  acl:
+    whitelist:
+    - localhost
+  certificate:
+    ca_cert: /vagrant/ssl/test.cert
+    whitelist:
+    - localhost
+    - 127.0.0.1
+  ident:
+    whitelist:
+    - localhost
+    - 127.0.0.1
+security:
+  secure_server: true
+  certificate: /vagrant/ssl/test2.cert
+  private_key:
+    algorithm: RSA
+    file: /vagrant/ssl/test2.key
+logs:
+  database: true
+  logfile: /var/log/kadeploy3/kadeploy.log
+  debugfile: /var/log/kadeploy3/kadeploy.debug
+verbosity:
+  logs: 3
+  clients: 3
+ssh_private_key: /home/vagrant/.ssh/deploy_id_rsa
+cache:
+  size: 5000
+  directory: /tmp/kadeploy_cache
+network:
+  vlan:
+    hostname_suffix: -kavlan-VLAN_ID
+    set_cmd: kavlan NODES -s -i VLAN_ID -u USER
+  server_hostname: wheezy_mock
+  ports:
+    test_deploy_env: 25300
+    kadeploy_server: 25301
+windows:
+  reboot:
+    sleep_time: 1
+    size: 50
+  check:
+    size: 100
+environments:
+  max_postinstall_size: 10
+  max_preinstall_size: 10
+  deployment:
+    rambin_dir: /rambin
+    extraction_dir: /mnt/dest
+    tarball_dir: /tmp
+pxe:
+  dhcp:
+    method: PXElinux
+    repository: /srv/tftp
+    export:
+      kind: tftp
+      server: kadeploy-server
+    profiles:
+      directory: pxelinux.cfg
+      filename: ip_hex
+    userfiles:
+      directory: userfiles
+      max_size: 200
+autoclean_threshold: 360
+external:
+  mkfs:
+  - args: -F -b 4096 -O sparse_super,filetype,resize_inode,dir_index
+    fstype: ext3
+  - args: -F -b 4096 -O sparse_super,filetype,resize_inode,dir_index
+    fstype: ext4
+  kascade:
+    binary: /kadeploy/addons/kascade/kascade
+  taktuk:
+    auto_propagate: false
+    tree_arity: 3
+    connector: ssh -A -l root -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o PreferredAuthentications=publickey -o BatchMode=yes
diff --git a/vagrant-env/kadeploy_conf/version b/vagrant-env/kadeploy_conf/version
new file mode 100644
index 0000000000000000000000000000000000000000..e80871977d49607069d17bdb132986509d85edc1
--- /dev/null
+++ b/vagrant-env/kadeploy_conf/version
@@ -0,0 +1 @@
+3.3.10.stable
diff --git a/vagrant-env/kadeploy_provision.sh b/vagrant-env/kadeploy_provision.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3c29cb3588a4f5338402a07e509f13ed67d9291a
--- /dev/null
+++ b/vagrant-env/kadeploy_provision.sh
@@ -0,0 +1,70 @@
+#!/bin/bash
+set -xe
+
+install_package() {
+wget http://packages.grid5000.fr/grid5000-archive-key.asc -q -O- | apt-key add -
+echo deb http://packages.grid5000.fr/deb/g5k-postinstall/ ./ > /etc/apt/sources.list.d/postinstall.list
+echo deb http://packages.grid5000.fr/deb/kadeploy-kernels/ ./ > /etc/apt/sources.list.d/kadeploykernel.list
+DEBIAN_FRONTEND=noninteractive apt-get update
+DEBIAN_FRONTEND=noninteractive apt-get install -y ruby rubygems lsb-release git taktuk rake help2man mysql-server ruby-dev libmysqlclient-dev ident2 syslinux nmap dnsmasq isc-dhcp-server tftpd-hpa pxelinux
+DEBIAN_FRONTEND=noninteractive apt-get install -y g5k-postinstall kadeploy3-deploy-kernel-buster
+# Not necessary:
+DEBIAN_FRONTEND=noninteractive apt-get install -y vim tcpdump
+gem install --conservative --no-ri --no-rdoc mysql
+gem install --conservative --no-ri --no-rdoc net-ssh -v 4.2.0
+gem install --conservative --no-ri --no-rdoc net-ssh-multi
+}
+
+setup_tftp() {
+mkdir -p /srv/tftp/{pxelinux.cfg,userfiles,kernels}
+chmod -R 777 /srv/tftp
+cp /vagrant/other_conf/tftpd-hpa /etc/default/tftpd-hpa
+cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
+cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/
+cp /grid5000/kadeploy-kernels/kadeploy3-deploy-kernel-buster.{vmlinuz,initrd.img} /srv/tftp/kernels
+cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/
+cp /usr/lib/syslinux/modules/bios/chain.c32 /srv/tftp/
+cp /usr/lib/syslinux/modules/bios/libcom32.c32 /srv/tftp/
+cp /usr/lib/syslinux/modules/bios/libutil.c32 /srv/tftp/
+systemctl restart tftpd-hpa
+}
+
+setup_dhcp() {
+sudo cp /vagrant/other_conf/dhcpd.conf /etc/dhcp/dhcpd.conf
+sudo cp /vagrant/other_conf/isc-dhcp-server /etc/default/isc-dhcp-server
+systemctl restart isc-dhcp-server.service
+}
+
+setup_dns() {
+sed -i -E "s/^.*\s+kadeploy\s+kadeploy$/10.0.10.100\tkadeploy\tkadeploy/g" /etc/hosts
+echo "10.0.10.2 node-1 node-1" >> /etc/hosts
+systemctl restart dnsmasq
+}
+
+setup_kadeploy() {
+mysql <<< "DROP DATABASE IF EXISTS deploy3;\nCREATE DATABASE deploy3;\nGRANT select, insert, update, delete, create, drop, alter,  create temporary tables, lock tables ON deploy3.*  TO 'deploy'@'localhost';\nSET PASSWORD FOR  'deploy'@'localhost' = PASSWORD('deploy-password');\nuse deploy3;\nsource /vagrant/db_creation.sql;"
+cp /vagrant/keys/id_deploy /home/vagrant/.ssh/deploy_id_rsa
+chown vagrant /home/vagrant/.ssh/deploy_id_rsa
+chmod og-r /home/vagrant/.ssh/deploy_id_rsa
+mkdir -p /var/lib/deploy/bin
+sudo ln -fs /vagrant/kalogger /var/lib/deploy/bin/lanpower
+sudo ln -fs /vagrant/kalogger /var/lib/deploy/bin/partition
+mkdir -p /etc/kadeploy3
+sudo ln -fs /vagrant/kadeploy_conf/client.conf /etc/kadeploy3/client.conf
+sudo ln -fs /vagrant/kadeploy_conf/clusters.conf /etc/kadeploy3/clusters.conf
+sudo ln -fs /vagrant/kadeploy_conf/command.conf /etc/kadeploy3/command.conf
+sudo ln -fs /vagrant/kadeploy_conf/sample-cluster.conf /etc/kadeploy3/sample-cluster.conf
+sudo ln -fs /vagrant/kadeploy_conf/server.conf /etc/kadeploy3/server.conf
+cat  /kadeploy/conf/version <(echo -n vagrant) | tr '\n' '.' > /etc/kadeploy3/version
+mkdir -p /var/log/kadeploy3
+chown vagrant:vagrant /var/log/kadeploy3
+ident2
+echo "export KADEPLOY3_LIBS=/kadeploy/lib/" > /home/vagrant/.bashrc
+echo "export PATH=$PATH:/kadeploy/bin:/kadeploy/sbin" > /etc/profile.d/kadeploy.sh
+}
+
+install_package
+setup_tftp
+setup_dhcp
+setup_dns
+setup_kadeploy
diff --git a/vagrant-env/kalogger b/vagrant-env/kalogger
new file mode 100755
index 0000000000000000000000000000000000000000..0fff225ec029eba27e870a85ea1fac9e9f76a383
--- /dev/null
+++ b/vagrant-env/kalogger
@@ -0,0 +1,66 @@
+#!/usr/bin/ruby
+
+require 'socket'
+require 'pp'
+$more = nil
+
+TFTP="/var/lib/deploy/tftp/pxelinux.cfg"
+CommandLogger="/var/log/kadeploy3/command.log"
+
+def convert_to_filename(ip)
+  hexa=ip.split('.').map do |p| 
+    i=p.to_i.to_s(16)
+    i='0'+i if i.size == 1
+    i
+  end
+  hexa.join('').upcase
+end
+
+def check_chainc32(ip)
+  f=File.join(TFTP,convert_to_filename(ip))
+  system("sync")
+  out=`grep chain.c32 #{f} 2> /dev/null`
+  $?.exitstatus != 0
+end
+def connect_openport(ip,open)
+  cmd = 'stop'
+  cmd = 'start' if open
+  t=TCPSocket.new('127.0.0.1',25000)
+  t.puts("#{cmd} #{ip}")
+  t.close
+end
+
+def update_port(ip)
+  connect_openport(ip,check_chainc32(ip))
+end
+
+date=`date`.strip
+connection_ssh = 'kadeploy'
+connection_ssh_ip = '127.0.0.1'
+if (ENV['SSH_CONNECTION'])
+	connection_ssh = ENV['SSH_CONNECTION'].split(' ')[2]
+	connection_ssh_ip = connection_ssh.clone
+	connection_ssh.gsub!('127.0.2.','node-')
+end
+
+case File.basename($0)
+when 'reboot'
+  update_port(connection_ssh_ip)
+when 'kexec'
+  test = ARGV.join(' ')
+  if test.include? "-l"
+    if test.include?  "/dev/shm/kexec_repository"
+      connect_openport(connection_ssh_ip,true)
+    else
+      connect_openport(connection_ssh_ip,false)
+    end
+  end
+when 'lanpower'
+  name = ARGV[-1].gsub('node-','127.0.2.')
+  update_port(name)
+end
+
+open(CommandLogger, 'a') do |f|
+  f.puts("#{date}   #{connection_ssh}   #{$0}   #{ARGV.join(' ')}")
+  f.puts("#{date}   #{connection_ssh}   #{$more}") if $more
+end
diff --git a/vagrant-env/keys/id_deploy b/vagrant-env/keys/id_deploy
new file mode 100644
index 0000000000000000000000000000000000000000..a05f9d809d4cd4943c5c72b41d0c2c757b471bd2
--- /dev/null
+++ b/vagrant-env/keys/id_deploy
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----
\ No newline at end of file
diff --git a/vagrant-env/other_conf/dhcpd.conf b/vagrant-env/other_conf/dhcpd.conf
new file mode 100644
index 0000000000000000000000000000000000000000..4674f562c30638b90b3783f84e3ec1e3ecae3af6
--- /dev/null
+++ b/vagrant-env/other_conf/dhcpd.conf
@@ -0,0 +1,22 @@
+default-lease-time 28800;
+max-lease-time 86400;
+allow booting;
+allow bootp;
+not-authoritative;
+use-host-decl-names on;
+
+subnet 10.0.10.0 netmask 255.255.255.0 {
+  option subnet-mask 255.255.255.0;
+  option broadcast-address 10.0.10.255;
+  option routers 10.0.10.254;
+  option domain-name-servers 10.0.10.100;
+  option domain-name "testbed.lan";
+  filename "pxelinux.0";
+
+  host node-1.testbed.lan {
+    hardware ethernet 00:09:3d:00:11:01;
+    fixed-address 10.0.10.2;
+    option host-name "node-1";
+    next-server 10.0.10.100;
+  }
+}
diff --git a/vagrant-env/other_conf/isc-dhcp-server b/vagrant-env/other_conf/isc-dhcp-server
new file mode 100644
index 0000000000000000000000000000000000000000..8650a9d69700d1b11933d8d10a2b416b7c6d8900
--- /dev/null
+++ b/vagrant-env/other_conf/isc-dhcp-server
@@ -0,0 +1 @@
+INTERFACES="eth1"
diff --git a/vagrant-env/other_conf/tftpd-hpa b/vagrant-env/other_conf/tftpd-hpa
new file mode 100644
index 0000000000000000000000000000000000000000..268ebe12aecde0dbb2bea9af916dda675806cff7
--- /dev/null
+++ b/vagrant-env/other_conf/tftpd-hpa
@@ -0,0 +1,4 @@
+TFTP_USERNAME="tftp"
+TFTP_DIRECTORY="/srv/tftp"
+TFTP_ADDRESS="0.0.0.0:69"
+TFTP_OPTIONS="-v -l -c -s"
diff --git a/vagrant-env/scripts/install_grub_g5k.sh b/vagrant-env/scripts/install_grub_g5k.sh
new file mode 100755
index 0000000000000000000000000000000000000000..07e05a518fee63b1b443359881ff033307a1ef81
--- /dev/null
+++ b/vagrant-env/scripts/install_grub_g5k.sh
@@ -0,0 +1,104 @@
+#!/bin/bash -e
+
+## Test if Grub is already installed (g5k-postinstall)
+
+if [ -f $KADEPLOY_ENV_EXTRACTION_DIR/boot/grub/grub.cfg ] ||
+    [ -f $KADEPLOY_ENV_EXTRACTION_DIR/boot/grub2/grub.cfg ]; then
+  echo "Grub is already installed, nothing to do"
+  exit
+fi
+
+## Guess the Grub's disk number from the name of the block device ##
+# Get the last character of the block device name ("/dev/sdb" -> 'b')
+grubdisk=${KADEPLOY_BLOCK_DEVICE#${KADEPLOY_BLOCK_DEVICE%?}}
+# Get a number based on this value, numbering starts at 'a'
+let grubdisk=$(printf "%d" "'$grubdisk")-$(printf "%d" "'a") || test $grubdisk -eq 0
+
+# Workaround for pyxis, grub detect the deployed disk as hd1
+if [ $KADEPLOY_CLUSTER == "pyxis" ]; then
+  grubdisk=1
+fi
+
+KADEPLOY_DEPLOY_DISK_NUM=$grubdisk
+
+# Get the Grub's disk identifier (so "/dev/sdb" -> "hd1")
+grubdisk="hd${grubdisk}"
+
+
+
+if [ -d /sys/firmware/efi ];
+then
+  cpu_arch=$(uname -m)
+  if [[ $cpu_arch == "x86_64"  ]]; then
+    grub_target="x86_64-efi"
+  elif [[ $cpu_arch == "aarch64"  ]]; then
+    grub_target="arm64-efi"
+  else
+    echo "Unable to install grub2 on unknown CPU architecture : $cpu_arch" 1>&2
+    exit 1
+  fi
+  rm -f /etc/apt/sources.list.d/jessie-backports.list
+  mkdir -p $KADEPLOY_ENV_EXTRACTION_DIR/boot/efi
+  mount ${KADEPLOY_BLOCK_DEVICE}4 $KADEPLOY_ENV_EXTRACTION_DIR/boot/efi
+  mkdir -p $KADEPLOY_ENV_EXTRACTION_DIR/boot/efi/EFI/part$KADEPLOY_DEPLOY_PART_NUM
+  grub-install --target=$grub_target \
+    --efi-directory=$KADEPLOY_ENV_EXTRACTION_DIR/boot/efi \
+    --bootloader-id=part$KADEPLOY_DEPLOY_PART_NUM \
+    --boot-directory=$KADEPLOY_ENV_EXTRACTION_DIR/boot
+  grub-mkimage \
+    -o $KADEPLOY_ENV_EXTRACTION_DIR/boot/efi/EFI/part$KADEPLOY_DEPLOY_PART_NUM/boot.efi \
+    --format=$grub_target "--prefix=(hd${KADEPLOY_DEPLOY_DISK_NUM},gpt${KADEPLOY_DEPLOY_PART_NUM})/boot/grub" ext2 part_gpt
+
+else
+  ### Install grub on the deployment partition ###
+  grub-install --no-floppy --root-directory=$KADEPLOY_ENV_EXTRACTION_DIR --force \
+    $KADEPLOY_DEPLOY_PART
+  grub-install --no-floppy --root-directory=$KADEPLOY_ENV_EXTRACTION_DIR --force \
+    --recheck $KADEPLOY_DEPLOY_PART
+fi
+
+
+### Generation of the menu file grub.cfg ###
+MENUFILE=/boot/grub/grub.cfg
+
+## Generate the options considering on the operating system ##
+case $KADEPLOY_OS_KIND in
+  "linux")
+    opts="  linux $KADEPLOY_ENV_KERNEL $KADEPLOY_ENV_KERNEL_PARAMS root=$KADEPLOY_DEPLOY_PART ro"$'\n'
+    [ -n "$KADEPLOY_ENV_INITRD" ] && opts+="  initrd $KADEPLOY_ENV_INITRD"$'\n'
+    ;;
+
+  "xen")
+    opts="  multiboot $KADEPLOY_ENV_HYPERVISOR $KADEPLOY_ENV_HYPERVISOR_PARAMS"$'\n'
+    opts+="  module $KADEPLOY_ENV_KERNEL $KADEPLOY_ENV_KERNEL_PARAMS root=$KADEPLOY_DEPLOY_PART ro"$'\n'
+    [ -n "$KADEPLOY_ENV_INITRD" ] && opts+="  module $KADEPLOY_ENV_INITRD"$'\n'
+    ;;
+
+  "bsd")
+    opts="  insmod ufs1"$'\n'
+    opts+="  insmod ufs2"$'\n'
+    opts+="  insmod zfs"$'\n'
+    opts+="  chainloader +1"$'\n'
+    ;;
+
+  "windows")
+    opts="  insmod fat"$'\n'
+    opts+="  insmod ntfs"$'\n'
+    opts+="  ntldr /bootmgr"$'\n'
+    ;;
+  *)
+    echo "Unknown operating system '${KADEPLOY_OS_KIND}'" 1>&2
+    exit 1
+esac
+
+## Write the menu file ##
+IFS=''
+cat <<EOF > $KADEPLOY_ENV_EXTRACTION_DIR/$MENUFILE
+set default=1
+set timeout=0
+
+menuentry "${KADEPLOY_OS_KIND}" {
+  set root=(${grubdisk},${KADEPLOY_DEPLOY_PART_NUM})
+${opts}}
+EOF
+
diff --git a/vagrant-env/scripts/partitioning.sh b/vagrant-env/scripts/partitioning.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f4472649cc72c58fd3826bf8f416d801d6794e02
--- /dev/null
+++ b/vagrant-env/scripts/partitioning.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+PARTED_OPTS="--script -a optimal"
+UNIT="GB"
+env > /tmp/envatexecute
+# Set the filesystem type of the deployment partition
+# (in order for parted to write the corresponding MSDOS partition type
+# in the partition table)
+if [ $KADEPLOY_DEPLOY_PART_NUM -ne "5" ]; then
+  FSTYPE[$KADEPLOY_DEPLOY_PART_NUM]=$KADEPLOY_FS_TYPE
+  FSTYPE[5]="ext4"
+else
+  FSTYPE[$KADEPLOY_DEPLOY_PART_NUM]=$KADEPLOY_FS_TYPE
+fi
+
+function do_parted()
+{
+  echo /sbin/parted $PARTED_OPTS $KADEPLOY_BLOCK_DEVICE unit $UNIT $@ >> /tmp/log
+  /sbin/parted $PARTED_OPTS $KADEPLOY_BLOCK_DEVICE unit $UNIT $@
+}
+
+echo "Kadeploy starting partitionning..." > /dev/kmsg
+
+until stat $KADEPLOY_BLOCK_DEVICE
+do
+  sleep 2
+done
+
+if [ -d /sys/firmware/efi ];
+then
+  echo "UEFI in use" > /dev/kmsg
+  do_parted "mklabel gpt"
+  do_parted "mkpart primary linux-swap 0% 4"
+  do_parted "mkpart primary ${FSTYPE[2]} 4 25"
+  do_parted "mkpart primary ${FSTYPE[3]} 25 49"
+  do_parted "mkpart efi 49 50"
+  do_parted "toggle 4 boot"
+  do_parted "mkpart primary ${FSTYPE[5]} 50 100%"
+else
+  # Execution of several parted commands for debug purpose
+  # (identification of the line which is failing)
+  do_parted "mklabel msdos"
+  do_parted "mkpart primary linux-swap 0% 1%"
+  do_parted "mkpart primary ${FSTYPE[2]} 1% 2"
+  do_parted "mkpart primary ${FSTYPE[3]} 2 4"
+  do_parted "mkpart extended 4 100%"
+  do_parted "mkpart logical ${FSTYPE[5]} 4 100%"
+fi
+
+# https://intranet.grid5000.fr/bugzilla/show_bug.cgi?id=5124
+#do_parted "toggle $KADEPLOY_DEPLOY_PART_NUM boot"
+do_parted "align-check optimal 1"
+do_parted "align-check optimal 2"
+do_parted "align-check optimal 3"
+do_parted "align-check optimal 4"
+do_parted "align-check optimal 5"
+
+/sbin/partprobe $KADEPLOY_BLOCK_DEVICE
+
+if [ -d /sys/firmware/efi ];
+then
+  until stat ${KADEPLOY_BLOCK_DEVICE}4
+  do
+    sleep 1
+  done
+  if ! $(/sbin/parted $PARTED_OPTS -m ${KADEPLOY_BLOCK_DEVICE}4 print | grep -q fat32); then
+      mkdosfs -F 32 ${KADEPLOY_BLOCK_DEVICE}4
+  fi
+fi
diff --git a/vagrant-env/ssl/test.cert b/vagrant-env/ssl/test.cert
new file mode 100644
index 0000000000000000000000000000000000000000..dd5b46095baf323972b1e9e6167ed3d3dc032c30
--- /dev/null
+++ b/vagrant-env/ssl/test.cert
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAeGgAwIBAgIJAMUwu4634PcdMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
+BAMMCCouZGVwbG95MB4XDTE0MDUxMzA3MjgyN1oXDTE0MDYxMjA3MjgyN1owEzER
+MA8GA1UEAwwIKi5kZXBsb3kwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQDVrOaMZz719bemVf6ZHhZdHAJGmtA36EdlwHYGrIOLX0Xa6SYAY2Wez6G32RDJ
+ZVfio+bR0nV0+x2rNSrsyjP5Sw2IvTctIj6zJoMZJmOV0lU6yVQc+ifQ7ULPkqbt
+lMlNOhkbm2SRSR+2/o89F7Fo7Vg1YMM949M/p2hubZ5rfVWodqS5nVKjMT2fRhC3
+NW7H50s2cXiaeC54H3OnjX0pAhBb71KA5niePF2u6LF2qSJYQuw51dkAxY6tL/JK
+OJwCxJYgyb4Yqh7z5Jgfkp3KJ6UthK/0vmLbN3gYbgfMbCBtduwxa4feYJ/mPeVb
+ZxwOAcUbU8uSgvmd9YWUPk1DAgMBAAGjUDBOMB0GA1UdDgQWBBRJB86me8fOeI6N
+wKDg9gLDE7yEOjAfBgNVHSMEGDAWgBRJB86me8fOeI6NwKDg9gLDE7yEOjAMBgNV
+HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQBQ1C5V5d+9+jpKw8BjBt282Ewl
+7GTpLgTvkJu5eEy4O4EhZzSVy9WKCgajk344RdmxLgLNz0wU9jjOK8DiVNrB3AOH
+bgBoiv99XiFUhBeIgpdsVWUAgPtVQXtRvgTizBdGPmMCgcjtWzHyUIwyLZBqhTU8
+Jo4eJMWwNYx95zXAGVa0jUFORenuriV2GuGonDIaxilLU6RtPMZ3+cbIcbxXtYS8
+/Uvj1L1llM5YxLzP25q9gF3tjY3aQnCEHWN9S3WQV6iPzHGk+MeLazFyGDchuOjC
+4P31j0C9QcU2jzuke1185y4GMSglntRrMx9OG6EHYbU7qPqpLiYKrgRonl/F
+-----END CERTIFICATE-----
diff --git a/vagrant-env/ssl/test.csr b/vagrant-env/ssl/test.csr
new file mode 100644
index 0000000000000000000000000000000000000000..97495ae6fd7bae84c37174bf763682a503d5f213
--- /dev/null
+++ b/vagrant-env/ssl/test.csr
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICXjCCAUYCAQAwGTEXMBUGA1UEAwwOI2RlYmlhbi1wdXBwZXQwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMfivOZIDmV90/G1yryrnyoorjw9cDgZJw
+zKs+BZJXZXCdqLOdYQ5hqodhW849aqKsGXgSI7gsfaTstmoRy0955qeiKlOiQGnl
+25ZfwysaaQrwooOFAat7dUzqx3l8hnuNjEB6tJoTDjtfIeFcF2Tc72R7f/HtQ+ho
+JPqepVkPjKAGhasYoxoWAF7BfJPRBFxXNIQ1NdJIxIKrwuMb1390/roStRreN9L2
+4tj1veU8jkb2yt02igD64Wla8KIVu66XnUSZ9RRowJutpFBFpppkkjLY3AyU1AQG
+HoZGm2rvTClaNcpBf2nHSUq7wCJSmi8lL2HwiUEBrbQJSFXgfk5rAgMBAAGgADAN
+BgkqhkiG9w0BAQUFAAOCAQEAyVkT1FqguQ3uoFvYtZ2PKn83oOqtHCAcBS8uy25f
+6bsQIT1JRaEaUVAsecdga+FKybtAC7m8Agi1PhpjaUQf+GwRRWX1RUG71tDsVf5Z
+FhTX+CVBzLAV9qftBdq/p2erclrdOWKgFLDAptxdC6CSuP0ZeuaecaDUxIwq1/L0
+1wRDFnPx2J5gtbQeZ224MqJ8YwNLEoAhouQ/4rKEUVs3BNpXdSXt8h0+0263txxX
+vhBnJqstX5vqNraKgzBeCgxUD/YPY0+RzptYQqID2/s/MSYo1d2dELSWcowUiill
+jty/KvHRjY9mCTfaHxUxl3AHM4zVawY2dGGHSmGQ83Fy3w==
+-----END CERTIFICATE REQUEST-----
diff --git a/vagrant-env/ssl/test.key b/vagrant-env/ssl/test.key
new file mode 100644
index 0000000000000000000000000000000000000000..ccfe52b4a6707f12d6b9cb450926bf406561ea08
--- /dev/null
+++ b/vagrant-env/ssl/test.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDVrOaMZz719bem
+Vf6ZHhZdHAJGmtA36EdlwHYGrIOLX0Xa6SYAY2Wez6G32RDJZVfio+bR0nV0+x2r
+NSrsyjP5Sw2IvTctIj6zJoMZJmOV0lU6yVQc+ifQ7ULPkqbtlMlNOhkbm2SRSR+2
+/o89F7Fo7Vg1YMM949M/p2hubZ5rfVWodqS5nVKjMT2fRhC3NW7H50s2cXiaeC54
+H3OnjX0pAhBb71KA5niePF2u6LF2qSJYQuw51dkAxY6tL/JKOJwCxJYgyb4Yqh7z
+5Jgfkp3KJ6UthK/0vmLbN3gYbgfMbCBtduwxa4feYJ/mPeVbZxwOAcUbU8uSgvmd
+9YWUPk1DAgMBAAECggEAXJQUM+ML8W9sCaKas+bIU8Et7z9mVcLLJHf160BVok4+
+KvH3aBWo0t0tOUXQMyI4qNbQzDo+b9fZa/OWTI/zYuC01Xj97g03U1GtXXk3jpNa
+ICVYz1FHbQtPdjYZIzji2xYACOkT8qrXFedHUnXwhQDIxh/NmAQc5Ch5Y9cU24bg
+j2+MMoKFdpPGeTP7n57Faa7daL6u0yvEb+veNui48sEErtrDTMCzbWX9kvTi7n1s
+UgIuSDJ92iW83v6iUQNWhMcOrjp3hvtMDGl4WHJEbmUnErktl0niEkXk5y+mbWd5
+uNhyLfZxgytufNwX1aJVw+0hFqHMCVcu7LmDxbKEkQKBgQDxb9pno9EKG5FpVQym
+qmfXt+dnZGF9v8FEmfgIjuWs9S7UmNERfYWFAhRDtISju3uQ9VxC9XAqW5D1i6yP
+JWEE2XzdBBRErgvcg4VHAhVvtN7PR8KrRiZvJ0qlD/DHv/4+FvbhIHi1FCA7MRcI
+YJxKJpvgIWQQargr0aYL+Ci3OQKBgQDikF4tk+J66uAuwyymTinEGcdxJQ0Egu69
++3hebBrq66xKcynGS9ZxNNegug9TSu4ACCK/fxUN+vUL6W5jEOJzFqhZU7ruU+Hb
+194Y8HWNyZxX7oA1xvMbLllmA9K7M79ZPiEZVZaWuys3+m6YOoXD6xF/pG7PWWvn
+DUOv5CKMWwKBgQDRp73SrdCCpHnbK/22ZNeT3aDWibaXCgL8XW+jjuMnFCo8dw9l
+zsg5Phr2yDU+MToWINqjUpq6TZVNhKKuE1lyaqIhEr++/BxUuujrRoXy4O9ys+/5
+5wrNDyOkvnjqHHDc3fg4eogXRojOncxQfAR755cIRDaugt23P3CfiDljEQKBgE97
+E/7rRWWXpkPhZnWFMDPCU2xG8jUl9bkiUgzV4e+N8+g+VGZjTnxybD7PZvbyb2IF
+eKMzYuB/rJ2cK4SHdNmpFjAYJpjbRn3IUfrvyF2QX8+dNM8o1zou3V/jcXcI5VTa
+beQkWWrRiIzfxxKSXUDo4z+jINiO50KsLZWz88bHAoGBAIgEbDHfDCqYc4P4OwK1
+eYvdqrPMG03tPO2eA8/U1iJmr/uSH9TCP+p8qu5iS1H13TYhVxDD3SNWR5LY436U
+VwAQHZLAMubyD4VOyFquJLvYOoWS3EQNDJ1eJ4WiO/QolODC+65da7Cp9dqZyqjE
+pnM/HHBcauXmtq/QmgQd/efd
+-----END PRIVATE KEY-----
diff --git a/vagrant-env/ssl/test.srl b/vagrant-env/ssl/test.srl
new file mode 100644
index 0000000000000000000000000000000000000000..84286c550013f1979e3d9ec37aed8250a1f4933c
--- /dev/null
+++ b/vagrant-env/ssl/test.srl
@@ -0,0 +1 @@
+FDCC9A1384EE45E7
diff --git a/vagrant-env/ssl/test2.cert b/vagrant-env/ssl/test2.cert
new file mode 100644
index 0000000000000000000000000000000000000000..e7381619fc1e439bd71c37a690901896020392a2
--- /dev/null
+++ b/vagrant-env/ssl/test2.cert
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICqDCCAZACCQD9zJoThO5F5zANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDDAgq
+LmRlcGxveTAeFw0xNDA1MTMwNzMxMDRaFw0xNDA2MTIwNzMxMDRaMBkxFzAVBgNV
+BAMMDiNkZWJpYW4tcHVwcGV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAzH4rzmSA5lfdPxtcq8q58qKK48PXA4GScMyrPgWSV2VwnaiznWEOYaqHYVvO
+PWqirBl4EiO4LH2k7LZqEctPeeanoipTokBp5duWX8MrGmkK8KKDhQGre3VM6sd5
+fIZ7jYxAerSaEw47XyHhXBdk3O9ke3/x7UPoaCT6nqVZD4ygBoWrGKMaFgBewXyT
+0QRcVzSENTXSSMSCq8LjG9d/dP66ErUa3jfS9uLY9b3lPI5G9srdNooA+uFpWvCi
+Fbuul51EmfUUaMCbraRQRaaaZJIy2NwMlNQEBh6GRptq70wpWjXKQX9px0lKu8Ai
+UpovJS9h8IlBAa20CUhV4H5OawIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAy7WA6
+YN/Cv1cB4kDX/Udh6DbpxVL1gYxSTmZ7Ghu2977GRv62Z/rlE8BrnsanvOckZX0M
+7sLzOePWxyd0o62FoS57U2OxKY5tY4K8k258vhW79Wg4Cffd3eEdanvdYEsSOCof
+SSC81zUq/bkXcyvej0nwZUxIqXLu6Tp7sUeNY6KW6E2i9g7GTwG44aPYR133nlqm
+plJsKV2iG75GZ7T3AqrczVP9xxZwEbTUof7EWQEXSIWNWlJ8SmKgwdNu/LUr3xSm
+pLzpyKnwbRgsmyynymoT6Uol4N0SSCUxk4VBet+kx07eQregVWrWM2Qa5Xk8JjXg
+PHqNgaJ8mmju4rJZ
+-----END CERTIFICATE-----
diff --git a/vagrant-env/ssl/test2.key b/vagrant-env/ssl/test2.key
new file mode 100644
index 0000000000000000000000000000000000000000..84febabfc6f9ee80e6bc75405923eba0ccba906a
--- /dev/null
+++ b/vagrant-env/ssl/test2.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMfivOZIDmV90/
+G1yryrnyoorjw9cDgZJwzKs+BZJXZXCdqLOdYQ5hqodhW849aqKsGXgSI7gsfaTs
+tmoRy0955qeiKlOiQGnl25ZfwysaaQrwooOFAat7dUzqx3l8hnuNjEB6tJoTDjtf
+IeFcF2Tc72R7f/HtQ+hoJPqepVkPjKAGhasYoxoWAF7BfJPRBFxXNIQ1NdJIxIKr
+wuMb1390/roStRreN9L24tj1veU8jkb2yt02igD64Wla8KIVu66XnUSZ9RRowJut
+pFBFpppkkjLY3AyU1AQGHoZGm2rvTClaNcpBf2nHSUq7wCJSmi8lL2HwiUEBrbQJ
+SFXgfk5rAgMBAAECggEATJyketGqfSHD8QWmRXJREfcVg9l2L4kWvQ3gxf6+YeHO
+PDLdAARBqBOEXtRPQzE1OrbcBie9s2VrKYf52yrJXsksWpPy+2GYixYmk0ACYQWj
+pJ2uGmGSxlEe/QK4oA+eMFywN4h8BNGbKrv9u0vEbQV/Jsm7cIG1i3b3MgKOiEUi
+IVyL1jyzVcc3ca46btruF19r61Zg9K9uW9JYmLyW6bPnXbDSLf8+D0bwKvwAe74h
+NnaYp6JD83/i/DLYqHlBK4pIXvmnQKnIdzoawKLPPfcytRroGz5duOO22fzjJ5VR
+pq8cKyK8kqdiyuESgGXFIrSXvFsKvvXrjzfzERScoQKBgQD3l60KaDm5U3hTTjXc
+HUtaQjUXfW2Y6N5E1bE4PLOOZNNpEQ+edOKa4GqGW7o5MYiiP0k3Bvxne/uCe6W1
+dDaN8ehno3fx5USDhdEtvEjbgNUCmY/vdffjWDFOAJRS8GoeocOWXBUCEaAo7vgM
+SKihXLFEgultMfswQsQW3I3UEQKBgQDTb9RkepBgk+C6xY34eFnQwF8diB6tTiuh
+An0Y0+4Xw1QP6yJCpqVzKJH/kP5kMn124EaXuM6yMsbDc+mltQIHhZFKApf4Vd5n
+XXEgcY6K5+JXWoZVK+NSfoNc75sVvRZZS0NZEFTwrW9FafDEGmTFTIZ4666fFbmE
+EOIKDywGuwKBgCS+b8HBof9s8ch7LOcTueEVPkfUJ3Wv6XyRshFEgOk68V0AWS8M
+7axKbcSuzD48qahaeAUglkjNT5AXxYneS1JZekIXMm/FtJtIOrjs3msk/Xe7Tm8d
+NMKajgajc1+zqiwNmbcwxzVdZEVu4YUBK3V3Ch++xeGcr0iEQBGcfbfhAoGAMrWx
+dN/IXMFatrDG2f7TW7OnnEeXQ+1pnVYhdqDti5l3QdIdB2s8ZyAl0+uMd698U9R6
+Wc0jFa4D6cCVGv8Mm403SU7R7+d4TcYlaaiSjVIMAPNfIHJENPbOvq1gvpf5EjVw
+052NIaQW+cjsy7ugy4kM/1dXLCRjt/7sl4kIAB0CgYEA8V0e33GIz6dQtdrjca7T
+0fIWzcvn/mXTrlV4UYqoen6nwZ9pNK4s2MWL6SLOBszRp/SsLr1TUj+EeCkhopGh
+9fYsP00hOKw1Ixsa9tUd1G6xI4foZ0oYs/gNCkt3vSHuC1zAdZsGJi5meGe28bgW
+w3Ci0l2uIS1loLhyHvsnhZY=
+-----END PRIVATE KEY-----
diff --git a/vagrant-env/vbhelper.sh b/vagrant-env/vbhelper.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9f93f4dad6c9f05f2c363f0949c88d51828691be
--- /dev/null
+++ b/vagrant-env/vbhelper.sh
@@ -0,0 +1,23 @@
+read action
+vm=$(VBoxManage list vms | sed "s/\"\(.*\)\".*$/\1/g" | grep vagrant-env.knode-1)
+
+
+
+echo "$action on $vm" > /dev/stderr
+case "$action" in
+  poweroff)
+    VBoxManage controlvm $vm  acpipowerbutton 1>&2
+    ;;
+  hardpoweroff)
+    VBoxManage controlvm $vm  poweroff 1>&2
+    ;;
+  poweron)
+    VBoxManage startvm $vm 1>&2
+    ;;
+  restart)
+    VBoxManage controlvm $vm reset 1>&2
+    ;;
+  *)
+    echo "Operation not known"
+    ;;
+esac