code: def AddNewVolumeToInstance(self, instance_id, vol_size_gb):
      
      assert(vol_size_gb >= 1)
      if vol_size_gb > 1000: # probably spending too much if you go bigger
        raise RuntimeError('Adding volumes this large has not been tested.')
      instance = self.__GetInstanceById(instance_id)
      assert(instance)
      # select an unused device
      # see http://askubuntu.com/questions/47617/
      # how-to-attach-new-ebs-volume-to-ubuntu-machine-on-aws
      potential_device_names = ['/dev/xvdf',
                                '/dev/xvdg',
                                '/dev/xvdh', 
                                '/dev/xvdi']
      device_name = None
      for name in potential_device_names:
        if not self.DeviceExists(name, instance):
          device_name = name
          break
      if not device_name:
        raise RuntimeError('No suitable device names available')
      # Attach volume
      volume = self.ec2.create_volume(vol_size_gb, instance.placement)
      volume.attach(instance.id, device_name)
      # wait for volume to attach
      core.WaitForVolumeAttached(volume)
      while not self.DeviceExists(device_name, instance):
          logging.info( 'waiting for device to be attached...')
          time.sleep(5)
      assert(volume.id)
      assert(volume.attach_data.device == device_name)
      # format file system, mount the file system, update fstab to automount
      hostname = instance.dns_name
      add_ebs_volume_playbook = pkg_resources.resource_filename(__name__,
        'ami/playbooks/workstation/add_ebs_volume.yml')
      extra_vars = {}
      extra_vars['volume_name'] = volume.id
      extra_vars['volume_device'] = device_name
      assert(core.RunPlaybookOnHost(add_ebs_volume_playbook, hostname, 
                                    self.ssh_key, extra_vars))      
      return volume.id
docs: Returns the volume id added... mount point is /mnt/vol-<id>/.