No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Generate Vagrant configurations from arbitrary data
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 10.0

Runtime

 Project Readme

Vagrant Config Builder

Configure and manage your Vagrant environments with data.

Build Status

Synopsis

This plugin provides an interface to the Vagrant configuration constructs in a logic free manner. You can format your input data to fit your needs and use vagrant-config_builder to transform that into the needed Vagrant config.

Example

This example loads all yaml files in the config directory and generates a Vagrant config based on that information. File names are arbitrary and chosen for clarity.

Directory structure

.
├── config
│   ├── roles.yaml
│   └── vms.yaml
└── Vagrantfile

Vagrantfile

For pure yaml configurations, use yaml loader:

require 'config_builder'
Vagrant.configure('2', &ConfigBuilder.load(
  :yaml,
  :yamldir,
  File.expand_path('../config', __FILE__)
))

For yaml erb configurations, use yaml_erb loader:

require 'config_builder'
Vagrant.configure('2', &ConfigBuilder.load(
  :yaml_erb,
  :yamldir,
  File.expand_path('../config', __FILE__)
))

The yaml_erb loader would allow configuration such as:

---
roles:
  puppet_apply:
    provisioners:
      - type: puppet
        manifests_path: 'tests'
        module_path: 'spec/fixtures/modules'
        manifest_file: <%= ENV['VAGRANT_MANIFEST'] || 'init.pp' %>
        hiera_config_path: "hiera.yaml"

config/roles.yaml

---
boxes:
  centos-65-x64: http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-puppet.box
  debian-73-x64: http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-puppet.box
roles:
  bigvm:
    provider:
      type: virtualbox
      customize: [[modifyvm, !ruby/sym id, '--memory', 1024]]
    synced_folders:
      - host_path: '.'
        guest_path: '/vagrant'
        disabled: true
  smallvm:
    provider:
      type: vmware
      vmx:
        memsize: 512
        numvcpus: 1

config/vms.yaml

---
vms:
  -
    name: db
    private_networks: [ {ip: '10.20.1.2'} ]
    box: centos-65-x64
    hostname: db.puppetlabs.vm
    roles: bigvm
  -
    name: web
    private_networks: [ {ip: '10.20.1.3'} ]
    box: debian-73-x64

Installation

Installation into the Vagrant internal gems:

  • vagrant plugin install vagrant-config_builder

Installation from source

Build the gem:

  • gem build vagrant-config_builder.gemspec

Install the gem:

  • gem install vagrant-config_builder-<version>.gem