Skip to content

Instantly share code, notes, and snippets.

@feniix
Created April 14, 2014 20:00
Show Gist options
  • Save feniix/10678515 to your computer and use it in GitHub Desktop.
Save feniix/10678515 to your computer and use it in GitHub Desktop.
require 'yaml'
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'aws'
dir = File.dirname(File.expand_path(__FILE__))
configValues = YAML.load_file("#{dir}/puphpet/config.yaml")
data = configValues['vagrantfile-aws']
Vagrant.configure("2") do |config|
config.vm.box = "dummy"
config.vm.hostname = "#{data['vm']['hostname']}"
config.vm.provider :aws do |aws, override|
aws.access_key_id = "#{data['vm']['provider']['aws']['access_key_id']}"
aws.secret_access_key = "#{data['vm']['provider']['aws']['secret_access_key']}"
aws.keypair_name = "#{data['vm']['provider']['aws']['keypair_name']}"
aws.ami = "#{data['vm']['provider']['aws']['ami']}"
if !data['vm']['provider']['aws']['region'].nil?
aws.region = "#{data['vm']['provider']['aws']['region']}"
end
aws.instance_type = "#{data['vm']['provider']['aws']['instance_type']}"
override.ssh.username = "#{data['ssh']['username']}"
override.ssh.private_key_path = "#{data['ssh']['private_key_path']}"
if !data['vm']['provider']['aws']['security_groups'].nil? && !data['vm']['provider']['aws']['security_groups'].empty?
aws.security_groups = data['vm']['provider']['aws']['security_groups']
end
end
data['vm']['synced_folder'].each do |i, folder|
if folder['source'] != '' && folder['target'] != '' && folder['id'] != ''
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{folder['id']}"
end
end
config.vm.provision "shell" do |s|
s.path = "puphpet/shell/initial-setup.sh"
s.args = "/vagrant/puphpet"
end
config.vm.provision :shell, :path => "puphpet/shell/update-puppet.sh"
config.vm.provision :shell, :path => "puphpet/shell/r10k.sh"
config.vm.provision :puppet do |puppet|
ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : "vagrant"
puppet.facter = {
"ssh_username" => "#{ssh_username}",
"provisioner_type" => ENV['VAGRANT_DEFAULT_PROVIDER'],
}
puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
puppet.manifest_file = "#{data['vm']['provision']['puppet']['manifest_file']}"
if !data['vm']['provision']['puppet']['options'].empty?
puppet.options = data['vm']['provision']['puppet']['options']
end
end
config.vm.provision :shell, :path => "puphpet/shell/execute-files.sh"
if !data['ssh']['host'].nil?
config.ssh.host = data['ssh']['host']
end
if !data['ssh']['port'].nil?
config.ssh.port = "#{data['ssh']['port']}"
end
if !data['ssh']['guest_port'].nil?
config.ssh.guest_port = data['ssh']['guest_port']
end
if !data['ssh']['shell'].nil?
config.ssh.shell = "#{data['ssh']['shell']}"
end
if !data['ssh']['keep_alive'].nil?
config.ssh.keep_alive = data['ssh']['keep_alive']
end
if !data['ssh']['forward_agent'].nil?
config.ssh.forward_agent = data['ssh']['forward_agent']
end
if !data['ssh']['forward_x11'].nil?
config.ssh.forward_x11 = data['ssh']['forward_x11']
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment