Przeglądaj źródła

Vagrant tests: set prompts to be more consistent

Also a small amount of cleanup in the way we create VMs - just a bit less
repetition.

Prompts are always of the form "box:cwd$ ". Even for root. Which is ok because
you don't have to be that careful with root because these are VMs that you
can destroy and recreate quickly.
Nik Everett 10 lat temu
rodzic
commit
b6f2cebf8b
1 zmienionych plików z 37 dodań i 17 usunięć
  1. 37 17
      Vagrantfile

+ 37 - 17
Vagrantfile

@@ -22,32 +22,32 @@
 # under the License.
 
 Vagrant.configure(2) do |config|
-  config.vm.define "precise", autostart: false do |config|
+  config.vm.define "precise" do |config|
     config.vm.box = "ubuntu/precise64"
     ubuntu_common config
   end
-  config.vm.define "trusty", autostart: false do |config|
+  config.vm.define "trusty" do |config|
     config.vm.box = "ubuntu/trusty64"
     ubuntu_common config
   end
-  config.vm.define "vivid", autostart: false do |config|
+  config.vm.define "vivid" do |config|
     config.vm.box = "ubuntu/vivid64"
     ubuntu_common config
   end
-  config.vm.define "wheezy", autostart: false do |config|
+  config.vm.define "wheezy" do |config|
     config.vm.box = "debian/wheezy64"
     deb_common(config)
   end
-  config.vm.define "jessie", autostart: false do |config|
+  config.vm.define "jessie" do |config|
     config.vm.box = "debian/jessie64"
     deb_common(config)
   end
-  config.vm.define "centos-6", autostart: false do |config|
+  config.vm.define "centos-6" do |config|
     # TODO switch from chef to boxcutter to provide?
     config.vm.box = "chef/centos-6.6"
     rpm_common(config)
   end
-  config.vm.define "centos-7", autostart: false do |config|
+  config.vm.define "centos-7" do |config|
     # There is a centos/7 box but it doesn't have rsync or virtualbox guest
     # stuff on there so its slow to use. So chef it is....
     # TODO switch from chef to boxcutter to provide?
@@ -59,11 +59,11 @@ Vagrant.configure(2) do |config|
   #   config.vm.box = "boxcutter/oel66"
   #   rpm_common(config)
   # end
-  config.vm.define "oel-7", autostart: false do |config|
+  config.vm.define "oel-7" do |config|
     config.vm.box = "boxcutter/oel70"
     rpm_common(config)
   end
-  config.vm.define "fedora-22", autostart: false do |config|
+  config.vm.define "fedora-22" do |config|
     # Fedora hosts their own 'cloud' images that aren't in Vagrant's Atlas but
     # and are missing required stuff like rsync. It'd be nice if we could use
     # them but they much slower to get up and running then the boxcutter image.
@@ -75,6 +75,33 @@ Vagrant.configure(2) do |config|
   # the elasticsearch project called vagrant....
   config.vm.synced_folder ".", "/vagrant", disabled: true
   config.vm.synced_folder "", "/elasticsearch"
+  if Vagrant.has_plugin?("vagrant-cachier")
+    config.cache.scope = :box
+  end
+  config.vm.defined_vms.each do |name, config|
+    config.options[:autostart] = false
+    set_prompt = lambda do |config|
+      # Sets up a consistent prompt for all users. Or tries to. The VM might
+      # contain overrides for root and vagrant but this attempts to work around
+      # them by re-source-ing the standard prompt file.
+      config.vm.provision "prompt", type: "shell", inline: <<-SHELL
+        cat \<\<PROMPT > /etc/profile.d/elasticsearch_prompt.sh
+export PS1='#{name}:\\w$ '
+PROMPT
+        grep 'source /etc/profile.d/elasticsearch_prompt.sh' ~/.bashrc |
+          cat \<\<SOURCE_PROMPT >> ~/.bashrc
+# Replace the standard prompt with a consistent one
+source /etc/profile.d/elasticsearch_prompt.sh
+SOURCE_PROMPT
+        grep 'source /etc/profile.d/elasticsearch_prompt.sh' ~vagrant/.bashrc |
+          cat \<\<SOURCE_PROMPT >> ~vagrant/.bashrc
+# Replace the standard prompt with a consistent one
+source /etc/profile.d/elasticsearch_prompt.sh
+SOURCE_PROMPT
+      SHELL
+    end
+    config.config_procs.push ['2', set_prompt]
+  end
 end
 
 def ubuntu_common(config)
@@ -90,24 +117,17 @@ end
 def deb_common(config)
   provision(config, "apt-get update", "/var/cache/apt/archives/last_update",
     "apt-get install -y", "openjdk-7-jdk")
-  if Vagrant.has_plugin?("vagrant-cachier")
-    config.cache.scope = :box
-  end
 end
 
 def rpm_common(config)
   provision(config, "yum check-update", "/var/cache/yum/last_update",
     "yum install -y", "java-1.7.0-openjdk-devel")
-  if Vagrant.has_plugin?("vagrant-cachier")
-    config.cache.scope = :box
-  end
 end
 
 def dnf_common(config)
   provision(config, "dnf check-update", "/var/cache/dnf/last_update",
     "dnf install -y", "java-1.8.0-openjdk-devel")
   if Vagrant.has_plugin?("vagrant-cachier")
-    config.cache.scope = :box
     # Autodetect doesn't work....
     config.cache.auto_detect = false
     config.cache.enable :generic, { :cache_dir => "/var/cache/dnf" }
@@ -116,7 +136,7 @@ end
 
 
 def provision(config, update_command, update_tracking_file, install_command, java_package)
-  config.vm.provision "elasticsearch bats dependencies", type: "shell", inline: <<-SHELL
+  config.vm.provision "bats dependencies", type: "shell", inline: <<-SHELL
     set -e
     installed() {
       command -v $1 2>&1 >/dev/null