mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
Add Ruby code to determine full path to supporting files referenced in all Vagrantfiles. This will allow more effective use of Vagrant commands when not in the same directory as the Vagrantfile.
64 lines
2.2 KiB
Ruby
64 lines
2.2 KiB
Ruby
# -*- mode: ruby -*-
|
|
# vi: set ft=ruby :
|
|
|
|
# Require the OpenStack provider plugin and YAML module
|
|
require 'vagrant-openstack-provider'
|
|
require 'yaml'
|
|
|
|
# Read YAML file with OpenStack credentials
|
|
creds = YAML.load_file(File.join(File.dirname(__FILE__), 'credentials.yml'))
|
|
|
|
# Read YAML file with instance information
|
|
instances = YAML.load_file(File.join(File.dirname(__FILE__), 'instances.yml'))
|
|
|
|
# Specify Vagrant version, Vagrant API version, and Vagrant provider
|
|
Vagrant.require_version '>= 1.6.0'
|
|
VAGRANTFILE_API_VERSION = '2'
|
|
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'openstack'
|
|
|
|
# Specify OpenStack authentication URL
|
|
# Edit the following line with your correct information
|
|
ENV['OS_AUTH_URL'] = 'http://controller:5000/v2.0'
|
|
|
|
# Create and configure the OpenStack instance(s)
|
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
|
|
# No Vagrant box needed with OpenStack
|
|
# config.vm.box = "dummy"
|
|
|
|
# Specify path to SSH private key
|
|
# Edit the following line with your correct information
|
|
config.ssh.private_key_path = '~/.ssh/keypair.pem'
|
|
|
|
# Configure the base information for the OpenStack provider
|
|
config.vm.provider 'openstack' do |os|
|
|
os.openstack_auth_url = ENV['OS_AUTH_URL']
|
|
os.username = creds['username']
|
|
os.password = creds['password']
|
|
os.tenant_name = creds['tenant']
|
|
os.server_name = 'default'
|
|
os.flavor = 'm1.small'
|
|
os.image = 'default'
|
|
os.floating_ip_pool = 'default'
|
|
os.networks = 'default'
|
|
os.keypair_name = 'default'
|
|
# Edit the following line with your correct information
|
|
os.security_groups = ['default']
|
|
os.sync_method = 'none'
|
|
end # config.vm.provider 'openstack'
|
|
|
|
# Loop through YAML file and set per-instance information
|
|
instances.each do |instance|
|
|
config.vm.define instance['name'] do |srv|
|
|
srv.vm.provider 'openstack' do |os, override|
|
|
os.server_name = instance['name']
|
|
os.flavor = instance['flavor']
|
|
os.image = instance['image']
|
|
os.floating_ip_pool = instance['ip_pool']
|
|
os.networks = instance['networks']
|
|
os.keypair_name = instance['keypair']
|
|
override.ssh.username = instance['ssh_user']
|
|
end # srv.vm.provider
|
|
end # config.vm.define
|
|
end # instances.each
|
|
end # Vagrant.configure
|