k8s: Unify provisioning scripts

This patch:

* removes remaining string interpolation (for future script reuse),
* makes DNS replacement provisioner always run.

This way VM definition is more concise and resilient.

Issue-ID: SECCOM-235
Change-Id: I382dae5e256b46577c4c8af3aa45ab4d64d1b2b9
Signed-off-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
diff --git a/test/security/k8s/vagrant/dublin/Vagrantfile b/test/security/k8s/vagrant/dublin/Vagrantfile
index 36f433f..9e92580 100644
--- a/test/security/k8s/vagrant/dublin/Vagrantfile
+++ b/test/security/k8s/vagrant/dublin/Vagrantfile
@@ -18,11 +18,27 @@
 
 all = cluster.dup << operation
 
+$replace_dns = <<-SCRIPT
+  HOST_IP="$1"
+  rm -f /etc/resolv.conf # drop its dynamic management by systemd-resolved
+  echo nameserver "$HOST_IP" | tee /etc/resolv.conf
+SCRIPT
+
 $add_to_docker_group = <<-SCRIPT
   USER="$1"
   usermod -aG docker "$USER"
 SCRIPT
 
+$install_sshpass = <<-SCRIPT
+  apt-get update
+  apt-get install sshpass
+SCRIPT
+
+$generate_key = <<-SCRIPT
+  KEY_FILE="$1"
+  ssh-keygen -q -b 4096 -t rsa -f "$KEY_FILE" -N ""
+SCRIPT
+
 $deploy_key = <<-SCRIPT
   KEY="$1"
   USER="$2"
@@ -57,10 +73,7 @@
       end
 
       config.vm.network :private_network, ip: machine[:ip]
-      config.vm.provision :shell, inline: <<-SHELL
-        rm -f /etc/resolv.conf # drop its dynamic management by systemd-resolved
-        echo nameserver #{host_ip} | tee /etc/resolv.conf
-      SHELL
+      config.vm.provision :shell, run: "always", inline: $replace_dns, args: host_ip
 
       if machine[:name] == 'control'
         config.vm.provision :shell, path: "../../tools/dublin/imported/openstack-k8s-controlnode.sh"
@@ -80,13 +93,8 @@
 
         config.vm.provision :shell, path: "../../tools/dublin/get_rke.sh"
 
-        config.vm.provision :shell, inline: <<-SHELL
-          apt-get update
-          apt-get install sshpass
-        SHELL
-        config.vm.provision :shell, privileged: false, inline: <<-SHELL
-          ssh-keygen -q -b 4096 -t rsa -f #{operator_key} -N ""
-        SHELL
+        config.vm.provision :shell, inline: $install_sshpass
+        config.vm.provision :shell, privileged: false, inline: $generate_key, args: operator_key
 
         ips = ""
         cluster.each { |node| ips << node[:ip] << " " }