Alternatively, you can use the named provisioners feature as documented
here: http://docs.vagrantup.com/v2/provisioning/basic_usage.html
A minimally viable example might look something like this:
# Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "provisioner1", type: "shell", inline: "echo one"
config.vm.provision "provisioner2", type: "shell", inline: "echo two"
config.vm.provision "provisioner3", type: "shell", inline: "echo three"
end
$ vagrant up
...
==> default: Running provisioner: provisier1 (shell)...
default: Running: inline script
==> default: one
==> default: Running provisioner: provisier2 (shell)...
default: Running: inline script
==> default: two
==> default: Running provisioner: provisier3 (shell)...
default: Running: inline script
==> default: three
...
$ vagrant provision --provision-with provisioner2
==> default: Running provisioner: provisioner2 (shell)...
default: Running: inline script
==> default: stdin: is not a tty
==> default: two
-Chris
On Fri, Jun 5, 2015 at 5:08 PM, Jamie Jackson <[email protected]> wrote:
> 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.
>
--
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.