Class: Xanthus::VirtualMachine
- Inherits:
-
Object
- Object
- Xanthus::VirtualMachine
- Defined in:
- lib/xanthus/virtual_machine.rb
Instance Attribute Summary collapse
-
#aws_ami ⇒ Object
Returns the value of attribute aws_ami.
-
#aws_env_key_id ⇒ Object
Returns the value of attribute aws_env_key_id.
-
#aws_env_key_secret ⇒ Object
Returns the value of attribute aws_env_key_secret.
-
#aws_instance_type ⇒ Object
Returns the value of attribute aws_instance_type.
-
#aws_key_pair_name ⇒ Object
Returns the value of attribute aws_key_pair_name.
-
#aws_region ⇒ Object
Returns the value of attribute aws_region.
-
#aws_security_group ⇒ Object
Returns the value of attribute aws_security_group.
-
#box ⇒ Object
Returns the value of attribute box.
-
#boxing ⇒ Object
Returns the value of attribute boxing.
-
#cpu_cap ⇒ Object
Returns the value of attribute cpu_cap.
-
#cpus ⇒ Object
Returns the value of attribute cpus.
-
#gui ⇒ Object
Returns the value of attribute gui.
-
#ip ⇒ Object
Returns the value of attribute ip.
-
#memory ⇒ Object
Returns the value of attribute memory.
-
#name ⇒ Object
Returns the value of attribute name.
-
#on_aws ⇒ Object
Returns the value of attribute on_aws.
-
#ssh_key_path ⇒ Object
Returns the value of attribute ssh_key_path.
-
#ssh_username ⇒ Object
Returns the value of attribute ssh_username.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
- #generate_box(config) ⇒ Object
-
#initialize ⇒ VirtualMachine
constructor
A new instance of VirtualMachine.
- #to_vagrant ⇒ Object
Constructor Details
#initialize ⇒ VirtualMachine
Returns a new instance of VirtualMachine.
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/xanthus/virtual_machine.rb', line 25 def initialize @name = :default @box = 'jhcook/fedora27' @version = '4.13.12.300' @ip = '192.168.33.8' @memory = 4096 @cpus = 2 @cpu_cap = 70 @gui = false @boxing = nil @ssh_username = nil @ssh_key_path = nil end |
Instance Attribute Details
#aws_ami ⇒ Object
Returns the value of attribute aws_ami.
21 22 23 |
# File 'lib/xanthus/virtual_machine.rb', line 21 def aws_ami @aws_ami end |
#aws_env_key_id ⇒ Object
Returns the value of attribute aws_env_key_id.
17 18 19 |
# File 'lib/xanthus/virtual_machine.rb', line 17 def aws_env_key_id @aws_env_key_id end |
#aws_env_key_secret ⇒ Object
Returns the value of attribute aws_env_key_secret.
18 19 20 |
# File 'lib/xanthus/virtual_machine.rb', line 18 def aws_env_key_secret @aws_env_key_secret end |
#aws_instance_type ⇒ Object
Returns the value of attribute aws_instance_type.
22 23 24 |
# File 'lib/xanthus/virtual_machine.rb', line 22 def aws_instance_type @aws_instance_type end |
#aws_key_pair_name ⇒ Object
Returns the value of attribute aws_key_pair_name.
19 20 21 |
# File 'lib/xanthus/virtual_machine.rb', line 19 def aws_key_pair_name @aws_key_pair_name end |
#aws_region ⇒ Object
Returns the value of attribute aws_region.
20 21 22 |
# File 'lib/xanthus/virtual_machine.rb', line 20 def aws_region @aws_region end |
#aws_security_group ⇒ Object
Returns the value of attribute aws_security_group.
23 24 25 |
# File 'lib/xanthus/virtual_machine.rb', line 23 def aws_security_group @aws_security_group end |
#box ⇒ Object
Returns the value of attribute box.
6 7 8 |
# File 'lib/xanthus/virtual_machine.rb', line 6 def box @box end |
#boxing ⇒ Object
Returns the value of attribute boxing.
13 14 15 |
# File 'lib/xanthus/virtual_machine.rb', line 13 def boxing @boxing end |
#cpu_cap ⇒ Object
Returns the value of attribute cpu_cap.
9 10 11 |
# File 'lib/xanthus/virtual_machine.rb', line 9 def cpu_cap @cpu_cap end |
#cpus ⇒ Object
Returns the value of attribute cpus.
8 9 10 |
# File 'lib/xanthus/virtual_machine.rb', line 8 def cpus @cpus end |
#gui ⇒ Object
Returns the value of attribute gui.
12 13 14 |
# File 'lib/xanthus/virtual_machine.rb', line 12 def gui @gui end |
#ip ⇒ Object
Returns the value of attribute ip.
11 12 13 |
# File 'lib/xanthus/virtual_machine.rb', line 11 def ip @ip end |
#memory ⇒ Object
Returns the value of attribute memory.
10 11 12 |
# File 'lib/xanthus/virtual_machine.rb', line 10 def memory @memory end |
#name ⇒ Object
Returns the value of attribute name.
5 6 7 |
# File 'lib/xanthus/virtual_machine.rb', line 5 def name @name end |
#on_aws ⇒ Object
Returns the value of attribute on_aws.
16 17 18 |
# File 'lib/xanthus/virtual_machine.rb', line 16 def on_aws @on_aws end |
#ssh_key_path ⇒ Object
Returns the value of attribute ssh_key_path.
15 16 17 |
# File 'lib/xanthus/virtual_machine.rb', line 15 def ssh_key_path @ssh_key_path end |
#ssh_username ⇒ Object
Returns the value of attribute ssh_username.
14 15 16 |
# File 'lib/xanthus/virtual_machine.rb', line 14 def ssh_username @ssh_username end |
#version ⇒ Object
Returns the value of attribute version.
7 8 9 |
# File 'lib/xanthus/virtual_machine.rb', line 7 def version @version end |
Instance Method Details
#generate_box(config) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/xanthus/virtual_machine.rb', line 93 def generate_box config return unless !boxing.nil? puts 'Generating box...' FileUtils.mkdir_p 'boxing' Dir.chdir 'boxing' do File.open('Vagrantfile', 'w+') do |f| f.write(self.to_vagrant) end script = Script.new(boxing, config).to_s File.open('provision.sh', 'w+') do |f| f.write(script) end system('vagrant', 'up') system('vagrant', 'halt') system('vagrant', 'package', '--output', "#{name}.box") puts "#{name}.box created." system('vagrant', 'box', 'add', '--force', "local/#{name}", "#{name}.box") system('vagrant', 'destroy', '-f') @box = "local/#{name}" @version = '0' end end |
#to_vagrant ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/xanthus/virtual_machine.rb', line 39 def to_vagrant script = %Q{ Vagrant.configure(2) do |config| config.vm.box = "#{@box}" config.vm.box_version = "#{@version}" config.vm.network "private_network", ip: "#{@ip}" } script += %Q{ if Vagrant.has_plugin?("vagrant-vbguest") config.vbguest.auto_update = false end } script += %Q{ config.vm.synced_folder ".", "/vagrant", disabled: false, type: 'rsync' } unless !@on_aws script += %Q{ config.ssh.username = "#{@ssh_username}" } unless ssh_username.nil? script += %Q{ config.ssh.private_key_path = "#{@ssh_key_path}" } unless ssh_key_path.nil? script += %Q{ config.vm.provider "virtualbox" do |vb, override| vb.gui = #{@gui} vb.memory = #{@memory} vb.customize ["modifyvm", :id, "--cpuexecutioncap", "#{@cpu_cap}"] vb.cpus = #{@cpus} vb.name = "#{@name}" end } unless @on_aws script += %Q{ config.vm.provider "aws" do |aws, override| aws.access_key_id = ENV['#{@aws_env_key_id}'] aws.secret_access_key = ENV['#{@aws_env_key_secret}'] aws.keypair_name = '#{@aws_key_pair_name}' aws.region = '#{@aws_region}' aws.ami = '#{@aws_ami}' aws.instance_type = '#{@aws_instance_type}' aws.security_groups = ['#{@aws_security_group}'] end } unless !@on_aws # add simple support for Windows script += %Q{ config.vm.provision "shell", path: "provision.sh" config.trigger.before :halt do |trigger| trigger.info = "Retrieving data before halt..." trigger.run = {path: "before_halt.#{sys_script_ext}"} end end } return script end |