mirror of https://github.com/apache/cloudstack.git
Tuning/reformatting/defensible-ing Vagrantfile
This commit is contained in:
parent
639b24a575
commit
afd2c21893
|
|
@ -2,136 +2,75 @@
|
|||
# vi: set ft=ruby :
|
||||
include RbConfig
|
||||
|
||||
VAGRANTFILE_API_VERSION = "2"
|
||||
ISOUTIL=''
|
||||
VAGRANTFILE_API_VERSION = '2'
|
||||
|
||||
unless ENV['VPC_IP']
|
||||
puts 'Please specify the VPC IP by settings the VPC_IP environment variable'
|
||||
puts 'Example: export VPC_IP=192.168.56.30'
|
||||
puts ''
|
||||
exit 1
|
||||
end
|
||||
VPC_NAME='r-' + ENV['VPC_IP'].split('.').last + '-VM'
|
||||
|
||||
VPC_NAME="r-" + ENV['VPC_IP'].split('.').last + "-VM"
|
||||
if ARGV[0] == 'up'
|
||||
unless ENV['VPC_IP']
|
||||
puts "\nPlease specify the VPC IP by settings the VPC_IP environment variable"
|
||||
puts "Example: export VPC_IP=192.168.56.30"
|
||||
puts ""
|
||||
exit 1
|
||||
end
|
||||
|
||||
|
||||
iso_util=''
|
||||
case CONFIG['host_os']
|
||||
when /mswin|windows/i
|
||||
puts "Windows is not supported"
|
||||
puts 'Windows is not supported'
|
||||
exit 1
|
||||
when /linux|arch/i
|
||||
ISOUTIL="mkisofs -J -o systemvm.iso ./iso"
|
||||
iso_util='mkisofs -J -o systemvm.iso ./iso'
|
||||
when /sunos|solaris/i
|
||||
puts "Solaris is not supported"
|
||||
puts 'Solaris is not supported'
|
||||
exit 1
|
||||
when /darwin/i
|
||||
ISOUTIL='hdiutil makehybrid -iso -joliet -o systemvm.iso ./iso/'
|
||||
iso_util='hdiutil makehybrid -iso -joliet -o systemvm.iso ./iso/'
|
||||
else
|
||||
puts "This OS is not supported"
|
||||
puts 'This OS is not supported'
|
||||
exit 1
|
||||
end
|
||||
|
||||
puts "\nSetting the vagrant-key inside authorized_keys"
|
||||
system 'rm -rf ./systemvm.iso'
|
||||
system 'mkdir -p iso/'
|
||||
unless File.exist? '../../../systemvm/dist/cloud-scripts.tgz'
|
||||
puts 'No cloud-scripts.tgz found. Did you run the maven build?'
|
||||
exit 1
|
||||
end
|
||||
system 'cp ../../../systemvm/dist/cloud-scripts.tgz iso/'
|
||||
unless File.exist? '../../../systemvm/dist/systemvm.zip'
|
||||
puts 'No systemvm.zip found. Did you run the maven build?'
|
||||
exit 1
|
||||
end
|
||||
system 'cp ../../../systemvm/dist/systemvm.zip iso/'
|
||||
|
||||
system 'cat vagrant.pub > iso/authorized_keys'
|
||||
system 'cp vagrant.pub iso/authorized_keys'
|
||||
system 'chmod 600 iso/authorized_keys'
|
||||
|
||||
puts "\nCreating the systemvm.iso file."
|
||||
|
||||
system ISOUTIL
|
||||
system iso_util
|
||||
end
|
||||
|
||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||
|
||||
config.vm.box = "cloudstack/systemvm"
|
||||
config.vm.network "private_network", ip: ENV['VPC_IP'], auto_config: false
|
||||
config.vm.synced_folder "vagrant", "/vagrant", disabled: true
|
||||
config.vm.box = 'cloudstack/systemvm'
|
||||
config.vm.network 'private_network', ip: ENV['VPC_IP'], auto_config: false
|
||||
config.vm.synced_folder 'vagrant', '/vagrant', disabled: true
|
||||
|
||||
config.ssh.forward_agent = true
|
||||
config.ssh.username = "root"
|
||||
config.ssh.username = 'root'
|
||||
config.ssh.host = ENV['VPC_IP']
|
||||
config.ssh.port = 3922
|
||||
config.ssh.guest_port = 3922
|
||||
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
config.vm.provider 'virtualbox' do |vb|
|
||||
# enable or disable headless mode
|
||||
vb.gui = true
|
||||
vb.customize ["modifyvm", :id, "--memory", "256"]
|
||||
vb.customize ["storagectl", :id, "--name", "IDE Controller", "--remove"]
|
||||
vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", "1", "--type", "dvddrive", "--medium", "./systemvm.iso"]
|
||||
vb.customize('pre-boot', ['modifyvm', :id, "--nic1", "none"])
|
||||
vb.customize('pre-boot', ['setextradata', :id, 'VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxRev', "cmdline:console=hvc0 vpccidr=172.16.0.0/16 domain=devcloud.local dns1=8.8.8.8 dns2=8.8.8.4 template=domP name=#{VPC_NAME} eth0ip=#{ENV['VPC_IP']} eth0mask=255.255.255.0 type=vpcrouter disable_rp_filter=true"])
|
||||
vb.customize ['modifyvm', :id, '--memory', '256']
|
||||
vb.customize ['storagectl', :id, '--name', 'IDE Controller', '--remove']
|
||||
vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', '1', '--type', 'dvddrive',
|
||||
'--medium', './systemvm.iso']
|
||||
vb.customize('pre-boot', ['modifyvm', :id, '--nic1', 'none'])
|
||||
extra_data='cmdline:console=hvc0 vpccidr=172.16.0.0/16 domain=devcloud.local dns1=8.8.8.8 dns2=8.8.8.4' +
|
||||
" template=domP name=#{VPC_NAME} eth0ip=#{ENV['VPC_IP']}" +
|
||||
' eth0mask=255.255.255.0 type=vpcrouter disable_rp_filter=true'
|
||||
vb.customize('pre-boot', ['setextradata', :id, 'VBoxInternal/Devices/pcbios/0/Config/DmiOEMVBoxRev', extra_data])
|
||||
end
|
||||
|
||||
|
||||
#
|
||||
# View the documentation for the provider you're using for more
|
||||
# information on available options.
|
||||
|
||||
# Enable provisioning with CFEngine. CFEngine Community packages are
|
||||
# automatically installed. For example, configure the host as a
|
||||
# policy server and optionally a policy file to run:
|
||||
#
|
||||
# config.vm.provision "cfengine" do |cf|
|
||||
# cf.am_policy_hub = true
|
||||
# # cf.run_file = "motd.cf"
|
||||
# end
|
||||
#
|
||||
# You can also configure and bootstrap a client to an existing
|
||||
# policy server:
|
||||
#
|
||||
# config.vm.provision "cfengine" do |cf|
|
||||
# cf.policy_server_address = "10.0.2.15"
|
||||
# end
|
||||
|
||||
# Enable provisioning with Puppet stand alone. Puppet manifests
|
||||
# are contained in a directory path relative to this Vagrantfile.
|
||||
# You will need to create the manifests directory and a manifest in
|
||||
# the file default.pp in the manifests_path directory.
|
||||
#
|
||||
# config.vm.provision "puppet" do |puppet|
|
||||
# puppet.manifests_path = "manifests"
|
||||
# puppet.manifest_file = "site.pp"
|
||||
# end
|
||||
|
||||
# Enable provisioning with chef solo, specifying a cookbooks path, roles
|
||||
# path, and data_bags path (all relative to this Vagrantfile), and adding
|
||||
# some recipes and/or roles.
|
||||
#
|
||||
# config.vm.provision "chef_solo" do |chef|
|
||||
# chef.cookbooks_path = "../my-recipes/cookbooks"
|
||||
# chef.roles_path = "../my-recipes/roles"
|
||||
# chef.data_bags_path = "../my-recipes/data_bags"
|
||||
# chef.add_recipe "mysql"
|
||||
# chef.add_role "web"
|
||||
#
|
||||
# # You may also specify custom JSON attributes:
|
||||
# chef.json = { mysql_password: "foo" }
|
||||
# end
|
||||
|
||||
# Enable provisioning with chef server, specifying the chef server URL,
|
||||
# and the path to the validation key (relative to this Vagrantfile).
|
||||
#
|
||||
# The Opscode Platform uses HTTPS. Substitute your organization for
|
||||
# ORGNAME in the URL and validation key.
|
||||
#
|
||||
# If you have your own Chef Server, use the appropriate URL, which may be
|
||||
# HTTP instead of HTTPS depending on your configuration. Also change the
|
||||
# validation key to validation.pem.
|
||||
#
|
||||
# config.vm.provision "chef_client" do |chef|
|
||||
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
|
||||
# chef.validation_key_path = "ORGNAME-validator.pem"
|
||||
# end
|
||||
#
|
||||
# If you're using the Opscode platform, your validator client is
|
||||
# ORGNAME-validator, replacing ORGNAME with your organization name.
|
||||
#
|
||||
# If you have your own Chef Server, the default validation client name is
|
||||
# chef-validator, unless you changed the configuration.
|
||||
#
|
||||
# chef.validation_client_name = "ORGNAME-validator"
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue