I have a specific use case for Vagrant with which I'm struggling a bit.

We need to have on the same Vagrantfile a way to roll a local development 
VM and/or an AWS instance. For this I thought of using 2 different 
providers, a virtualbox provider and the vagrant-aws provider plugin.

If I have only these providers set up in the Vagrantfile, it works as 
expected. However, if I

vagrant up --provider=virtualbox

the provision block I have setup in the Virtualbox provider block runs 
*twice*. I have tried isolating each provider's configuration and 
provisioning inside if-then blocks that look at the ARGV array, but Vagrant 
seems to ignore this.

My final goal is to have at a project level, a way that allows my developer 
colleagues to *vagrant up* locally so that they can work on the project, 
but, at a different time, different host and by a different process, be 
able to *vagrant up --provider=aws* to roll a staging environment for the 
same project. Please note that I need different provisioning for either the 
local VM with Virtualbox or the staging instance on AWS. I also *don't* 
want the provisioning of each provider mixed up *or* both providers being 
setup at the same time.

Does anyone have any insight on how to do this? Vagrant's documentation on 
Hashicorp's website is a bit misleading as I thought I could isolate 
different procedures in the same Vagrantfile, but I'm not sure if I'm doing 
it wrong or if it's not possible at all.

My Vagrantfile looks something like this at the moment:


Vagrant.configure(2) do | config |

  # doesn't work:
  # provider_is_aws  = (!ARGV.nil? && 
ARGV.join('').include?('provider=aws'))


  # unless provider_is_aws # doesn't isolate the configuration

  config.vm.provider :virtualbox do |v|
    # several config.vm options
    # ...
    config.vm.provision "ansible" do |ansible|
      ansible.playbook = "local_playbook.yml"
    end
  end
  # end # unless block

  # if provider_is_aws # doesn't isolate the configuration
  config.vm.provider :aws do |aws, override|
    # several aws. options
    # ...
    override.vm.provision "Ansible_Local", type: "ansible_local" do |ansible
|
      ansible.playbook = "aws_playbook.yml"
    end
  end
  # end # if block


end


If I *vagrant up --provider=virtualbox* the *local_playbook.yml *provisioner 
runs 
twice (!). This makes absolutely no sense to me. 

-- 
This mailing list is governed under the HashiCorp Community Guidelines - 
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of 
those guidelines may result in your removal from this mailing list.

GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
--- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vagrant-up/66c66570-f25a-4e58-aa21-72f052050ed5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to