Hello,

There are lots of example in the internet around what you can do. Basically
because Vagrantfile is ruby :D

ie.

http://bitcubby.com/configuring-vagrant-json-ruby/

Have a look at the end there is a link to a github project.

If you check projects that distribute vagrantfiles with them, you will find
nice examples of things you can incorporate later.

Alvaro


On Thu, Mar 31, 2016 at 2:56 AM, Juan Carlos Pérez Pardo <
[email protected]> wrote:

> Hi there!
>
> I was thinking is maybe is possible to use several shell scripts to
> provision the machine.
>
> I mean, instead to have a big one, use different ones, with the concept
> from configuration management.
>
> I have a nodes. json definition as this one:
>
> {
>
>   "nodes": {
>
>     "vagrant.domain": {
>
>       ":ip": "192.168.32.5",
>
>       "ports": [],
>
>       ":memory": 2048,
>
>       "bootstrap": ["bootstrap-hosts.sh","bootstrap-centos.sh"]
>
>     }
>
>   }
>
> }
>
>
>
> And I was trying something like this in my vagrant file ….
>
> # vi: set ft=ruby :
>
>
>
> # Builds Puppet Master and multiple Puppet Agent Nodes using JSON config
> file
>
> # Author: Gary A. Stafford
>
>
>
> # read vm and chef configurations from JSON files
>
> nodes_config = (JSON.parse(File.read("nodes.json")))['nodes']
>
>
>
> VAGRANTFILE_API_VERSION = "2"
>
>
>
> Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
>
>   config.vm.box = "centos/7"
>
>
>
>   nodes_config.each do |node|
>
>     node_name   = node[0] # name of node
>
>     node_values = node[1] # content of node
>
>
>
>     config.vm.define node_name do |config|
>
>       # configures all forwarding ports in JSON array
>
>       ports = node_values['ports']
>
>       ports.each do |port|
>
>         config.vm.network :forwarded_port,
>
>           host:  port[':host'],
>
>           guest: port[':guest'],
>
>           id:    port[':id'],
>
>           auto_correct: true
>
>       end
>
>
>
>       config.vm.hostname = node_name
>
>       config.vm.network :private_network, ip: node_values[':ip']
>
>
>
>       config.vm.provider :virtualbox do |vb|
>
>         vb.customize ["modifyvm", :id, "--memory", node_values[':memory']]
>
>         vb.customize ["modifyvm", :id, "--name", node_name]
>
>       end
>
>
>
>       # config.vm.provision :shell, :path => node_values[':bootstrap']
>
>       valores = node_values['bootstrap']
>
>       valores.each do |v|
>
>         #puts v.upcase
>
>         config.vm.provision :shell, path=> v.upcase
>
>       end
>
>     end
>
>   end
>
> end
>
>
>
> Thanks!
>
>
>
>
>
>
>
> --
> 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/1bea458f-88df-44eb-8f5c-feff5d2f4bf9%40googlegroups.com
> <https://groups.google.com/d/msgid/vagrant-up/1bea458f-88df-44eb-8f5c-feff5d2f4bf9%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CAHqq0ezA-ajD7Vvvc22KOoizQ6Ke420VAoi_NXBUeXAU%3DnTA6w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to