lib/awstool/instance.rb in awstool-0.1.2 vs lib/awstool/instance.rb in awstool-0.2.0

- old
+ new

@@ -6,55 +6,68 @@ @options = options @compute = Fog::Compute.new( provider: 'AWS', region: @options['region'], aws_access_key_id: @options['access_key_id'], - aws_secret_access_key: @options['access_key'], + aws_secret_access_key: @options['access_key'] ) @dns = Fog::DNS.new( provider: 'AWS', aws_access_key_id: @options['access_key_id'], - aws_secret_access_key: @options['access_key'], + aws_secret_access_key: @options['access_key'] ) - end def launch b = binding + userdata = ERB.new(File.read(@options['userdata']), nil, '<>').result(b) @instance = @compute.servers.create( image_id: @options['image-id'], flavor_id: @options['instance-type'], security_group_ids: @options['security-group-ids'], subnet_id: @options['subnet-ids'][@options['subnet-id-index']], key_name: @options['key-name'], tags: @options['tags'], - user_data: ERB.new(File.read(@options['userdata'])).result(b), - block_device_mapping: [ - { - 'DeviceName' => '/dev/sda1', - 'Ebs.VolumeType' => "gp2", - 'Ebs.VolumeSize' => @options['rootvol_size'], - 'Ebs.DeleteOnTermination' => 'true' - }, - ], + user_data: userdata, + block_device_mapping: map_block_devices ) @instance.wait_for { ready? } pp @instance.reload end def set_dns zone = @dns.zones.get(@options['dns-zone-id']) - if @options['purge_dns'] record = zone.records.find { |r| r.name == "#{@options['hostname']}." } if record record.destroy end end - record = zone.records.create( value: @instance.private_ip_address, name: @options['hostname'], type: 'A' ) + end + + private + + def map_block_devices + block_device_mapping = [ + { + 'DeviceName' => '/dev/sda1', + 'Ebs.VolumeType' => 'gp2', + 'Ebs.VolumeSize' => @options['rootvol_size'], + 'Ebs.DeleteOnTermination' => 'true' + } + ] + @options['block_devices'].each do |device, opts| + block_device_mapping << { + 'DeviceName' => "/dev/#{device}", + 'Ebs.VolumeType' => 'gp2', + 'Ebs.VolumeSize' => opts['size'], + 'Ebs.DeleteOnTermination' => 'true' + } + end + block_device_mapping end end