For provisioners I don't want to run more than once, I leave a "bookmark"
file behind.


For what it's worth, here's some boilerplate (I ripped out of my Lucee
installer):

#!/usr/bin/env bash
set -e

description="Lucee installation"
runfile_name="lucee_install"

while :
do
    case $1 in
        --provisioned-dir=*)
            provisioned_dir=${1#*=}        # Delete everything up till "="
            shift
            ;;
        # ...other option blocks
        --) # End of all options
            shift
            break
            ;;
        -*)
            echo "WARN: Unknown option (ignored): $1" >&2
            shift
            ;;
        *)  # no more options. Stop while loop
            break
            ;;
    esac
done

runfile="${provisioned_dir}/${runfile_name}"

if [ -f "${runfile}" ]; then
  echo "${description}: Already run."
  exit 0
fi

# do a bunch of stuff

touch "${runfile}" || true

I then call it with the following in my Vagrantfile:

  # Install Lucee
  config.vm.provision :shell, :path =>
"#{host_script_dir}/web/lucee_install.sh", :args => [
    "--provisioned-dir=#{vm_provisioned_dir}",
    "--lucee-installer-path-name=#{lucee_installer_path_name}",
    "--lucee-installer-download-url=#{lucee_installer_download_url}",
    "--lucee-password=#{password}",
    "--lucee-user=#{railo_user}"
  ]

Where:

host_script_dir = "C:/www/myproj_vagrant/scripts"
vm_provisioned_dir = "/vagrant/temp/provisioned"


Then, I've got a trigger to get rid of the bookmarks upon destroy:

  config.trigger.after :destroy, :stdout => true, :force => true do
    info "Removing provisioned directory contents:
#{host_provisioned_dir}/*"
    FileUtils.rm_rf Dir.glob("#{host_provisioned_dir}/*")
  end


Where:

host_provisioned_dir = "C:/www/myproj/temp\provisioned"


Thanks,
Jamie

On Fri, Jun 5, 2015 at 12:24 PM, <[email protected]> wrote:

> Hello,
>
> I have these three Shell provisioners in my Vagrantfile.
> After 'vagrant up' the first time, I like to run just the second Shell
> provisioner script "script2.sh".
> I can only run the provision by type "vagrant provision --provision-with
> shell", which run all the shell scripts.
>
> guest.vm.provision "shell" do |sh|
>       sh.path = "./script1.sh"
> end
>
> guest.vm.provision "shell" do |sh|
>       sh.path = "./script2.sh"
>       sh.args = "centos"
> end
>
> guest.vm.provision "shell" do |sh|
>       sh.path = "./script3.sh"
> end
>
> Any ideas?
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups
> "Vagrant" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to