scottslowe-learning-tools/ssh-bastion/Vagrantfile
Scott Lowe f1f26d30c4 Update SSH bastion files
Add file for hosts entries on bastion host. Add SSH configuration file for client VM. Update Vagrantfile with new provisioning lines. Update README.md with final instructions.
2015-11-27 22:00:54 -07:00

117 lines
4.7 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby :
# Specify Vagrant version, Vagrant API version, and Vagrant clone location
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
ENV['VAGRANT_VMWARE_CLONE_DIRECTORY'] = '~/.vagrant'
#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vmware_appcatalyst'
# Require 'yaml' module
require 'yaml'
# Read YAML file with VM details (box, CPU, and RAM)
servers = YAML.load_file('servers.yml')
# Create and configure the VMs
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Always use Vagrant's default insecure key
config.ssh.insert_key = false
# Iterate through entries in YAML file to create VMs
servers.each do |servers|
config.vm.define servers["name"] do |srv|
# Don't check for box updates
srv.vm.box_check_update = false
srv.vm.hostname = servers["name"]
srv.vm.box = servers["box"]
# Configure default synced folder (disable by default)
if servers["sync_disabled"] != nil
srv.vm.synced_folder ".", "/vagrant", disabled: servers["sync_disabled"]
else
srv.vm.synced_folder ".", "/vagrant", disabled: true
end #if servers["sync_disabled"]
# Assign additional private network, if specified in servers.yml
if servers["ip_addr"] != nil
srv.vm.network "private_network", ip: servers["ip_addr"]
end # if servers["ip_addr"]
# Configure CPU & RAM per settings in servers.yml (Fusion)
srv.vm.provider :vmware_fusion do |vmw|
vmw.vmx["memsize"] = servers["ram"]
vmw.vmx["numvcpus"] = servers["vcpu"]
if servers["nested"] == true
vmw.vmx["vhv.enable"] = "TRUE"
end #if servers["nested"]
end # srv.vm.provider vmware_fusion
# Configure CPU & RAM per settings in servers.yml (AppCatalyst)
srv.vm.provider :vmware_appcatalyst do |vmw|
vmw.vmx["memsize"] = servers["ram"]
vmw.vmx["numvcpus"] = servers["vcpu"]
#vmw.vmx['guestos'] = "other3xlinux-64"
if servers["nested"] == true
vmw.vmx["vhv.enable"] = "TRUE"
end #if servers["nested"]
end # srv.vm.provider vmware_appcatalyst
# Configure CPU & RAM per settings in servers.yml (VirtualBox)
srv.vm.provider :virtualbox do |vb|
vb.memory = servers["ram"]
vb.cpus = servers["vcpu"]
end # srv.vm.provider virtualbox
# Provision key pairs according to VM name
# If "client" VM, copy in all keys
if servers["name"] == "client"
srv.vm.provision "file", source: "bastion_rsa",
destination: "/home/vagrant/.ssh/bastion_rsa"
srv.vm.provision "file", source: "bastion_rsa.pub",
destination: "/home/vagrant/.ssh/bastion_rsa.pub"
srv.vm.provision "file", source: "remote_rsa",
destination: "/home/vagrant/.ssh/remote_rsa"
srv.vm.provision "file", source: "remote_rsa.pub",
destination: "/home/vagrant/.ssh/remote_rsa.pub"
srv.vm.provision "file", source: "client-ssh-config",
destination: "/home/vagrant/.ssh/config"
end # if "client"
# If "bastion" VM, echo bastion_rsa.pub to authorized_keys
if servers["name"] == "bastion"
srv.vm.provision "file", source: "bastion_rsa.pub",
destination: "/home/vagrant/bastion_rsa.pub"
srv.vm.provision "shell",
inline: "cat /home/vagrant/bastion_rsa.pub >> /home/vagrant/.ssh/authorized_keys"
srv.vm.provision "shell", inline: "rm /home/vagrant/bastion_rsa.pub"
srv.vm.provision "file", source: "bastion-hosts",
destination: "/home/vagrant/bastion-hosts"
srv.vm.provision "shell",
inline: "cat /home/vagrant/bastion-hosts >> /etc/hosts", privileged: "true"
srv.vm.provision "shell", inline: "rm /home/vagrant/bastion-hosts"
end # if "bastion"
# If "remote1" VM, echo remote_rsa.pub to authorized_keys
if servers["name"] == "remote1"
srv.vm.provision "file", source: "remote_rsa.pub",
destination: "/home/vagrant/remote_rsa.pub"
srv.vm.provision "shell",
inline: "cat /home/vagrant/remote_rsa.pub >> /home/vagrant/.ssh/authorized_keys"
srv.vm.provision "shell", inline: "rm /home/vagrant/remote_rsa.pub"
end # if "remote1"
# If "remote2" VM, echo remote_rsa.pub to authorized_keys
if servers["name"] == "remote2"
srv.vm.provision "file", source: "remote_rsa.pub",
destination: "/home/vagrant/remote_rsa.pub"
srv.vm.provision "shell",
inline: "cat /home/vagrant/remote_rsa.pub >> /home/vagrant/.ssh/authorized_keys"
srv.vm.provision "shell", inline: "rm /home/vagrant/remote_rsa.pub"
end # if "remote2"
end # config.vm.define
end # servers.each
end # Vagrant.configure