https://github.com/frapposelli/vagrant-vcenter
A Vagrant provider for VMware vCenter®
https://github.com/frapposelli/vagrant-vcenter
Last synced: about 2 months ago
JSON representation
A Vagrant provider for VMware vCenter®
- Host: GitHub
- URL: https://github.com/frapposelli/vagrant-vcenter
- Owner: frapposelli
- License: mit
- Created: 2013-12-18T10:30:44.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-02-16T10:27:46.000Z (over 4 years ago)
- Last Synced: 2025-03-30T17:11:07.449Z (2 months ago)
- Language: Ruby
- Homepage:
- Size: 128 KB
- Stars: 107
- Watchers: 17
- Forks: 36
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[Vagrant](http://www.vagrantup.com) provider for VMware vCenter®
=============[](https://gitter.im/frapposelli/vagrant-vcenter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[Version 0.3.3](../../releases/tag/v0.3.3) has been released!
-------------Please note that this software is still Alpha/Beta quality and is not recommended for production usage.
We have a wide array of boxes available at [Vagrant Cloud](https://vagrantcloud.com/gosddc) you can use them directly or you can roll your own as you please, make sure to install VMware tools in it.
This plugin supports the universal [```vmware_ovf``` box format](https://github.com/gosddc/packer-post-processor-vagrant-vmware-ovf/wiki/vmware_ovf-Box-Format), that is 100% portable between [vagrant-vcloud](https://github.com/frapposelli/vagrant-vcloud), [vagrant-vcenter](https://github.com/gosddc/vagrant-vcenter) and [vagrant-vcloudair](https://github.com/gosddc/vagrant-vcloudair), no more double boxes!.
Changes in [version 0.3.3](../../releases/tag/v0.3.3) include:
Changes
- Configuration setting ```computer_name``` renamed to ```compute_name``` as this can be either a vSphere host or a Cluster name.
Fixes
- Better error management
- Fixed some commands in unwanted situations (SSH when machine suspended/off)
- Refactored code to avoid code duplicationInstall
-------------Latest version can be easily installed by running the following command:
```vagrant plugin install vagrant-vcenter```
Vagrant will download all the required gems during the installation process.
If you already have the plugin installed you can use:
```vagrant plugin upgrade vagrant-vcenter```
To perform an upgrade to the latest version.
After the install has completed a ```vagrant up --provider=vcenter``` will trigger the newly installed provider.
Configuration
-------------Here's a sample Multi-VM Vagrantfile:
```ruby
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vcenter'nodes = []
[*1..5].each do |n|
nodes << { hostname: "centos#{n}",
box: 'gosddc/centos65-x64',
ip: "10.250.21.#{n}",
mem: 1024 * n,
cpu: n }
end[*1..5].each do |n|
nodes << { hostname: "precise#{n}",
box: 'gosddc/precise32',
ip: "10.250.22.#{n}",
mem: 1024 * n,
cpu: n }
endVagrant.configure('2') do |config|
# Go through nodes and configure each of them.
nodes.each do |node|config.vm.provider :vcenter do |vcenter|
vcenter.hostname = 'my.vcenter.hostname'
vcenter.username = 'myUsername'
vcenter.password = 'myPassword'
vcenter.folder_name = 'myFolderName'
vcenter.datacenter_name = 'MyDatacenterName'
vcenter.compute_name = 'MyHostOrCluster'
vcenter.datastore_name = 'MyDatastore'
vcenter.network_name = 'myNetworkName'
vcenter.linked_clones = true
endconfig.vm.define node[:hostname] do |node_config|
node_config.vm.box = node[:box]
node_config.vm.hostname = node[:hostname]# Let's configure the network for the VM, only the ip changes and is
# coming from the nodes array
node_config.vm.network :public_network,
ip: node[:ip],
netmask: '255.255.0.0',
gateway: '10.250.254.254',
dns_server_list: ['8.8.4.4', '8.8.8.8'],
dns_suffix_list: ['ad.lab.gosddc.com']# Let's override some provider settings for specific VMs
node_config.vm.provider :vcenter do |override|
# Override number of cpu and memory based on what's in the nodes array
override.num_cpu = node[:cpu]
override.memory = node[:mem]
case node[:hostname]
# Override the folder name based on the hostname of the VM
when /centos/
override.folder_name = 'Vagrant/centos'
when /precise/
override.folder_name = 'Vagrant/ubuntu/precise'
override.enable_vm_customization = false
end
end
node_config.nfs.functional = false
end
end
end```
Contribute
-------------What is still missing:
- TEST SUITES! (working on that).
- Speed, the code is definitely not optimized.
- Thorough testing.
- Error checking is absymal.
- Some spaghetti code here and there.
- Bugs, bugs and BUGS!.If you're a developer and want to lend us a hand, send us PRs!