vagrant-openstack-provider icon indicating copy to clipboard operation
vagrant-openstack-provider copied to clipboard

Boot from image and then attach volume

Open Drakoskai opened this issue 8 years ago • 2 comments

I'm attempting to create a machine using an image and then attach an existing volume to it (data storage). The plugin believes I am trying to simultaneously boot from both the image and the existing volume. Does the plugin support this?

Drakoskai avatar Apr 05 '16 14:04 Drakoskai

It should support this. If it does not, it is probably a bug. Can you please provide your Vagrantfile ?

ggiamarchi avatar Apr 05 '16 14:04 ggiamarchi

Snippet from vagrant file

def machines &block
  @config = load_box_config
  @config['boxes'].each {|x| yield x}
end

def load_box_config
  YAML.load(File.read(VAGRANT_CONFIG)) || []
end

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
  machines do |settings|   
    config.vm.define settings['hostname'] do |x|  
      x.vm.provider :openstack do |os, override|
        os.sync_method                      = "none"
        os.username                         = ENV['OS_USERNAME']
        os.password                         = ENV['OS_PASSWORD']
        os.tenant_name                      = settings['openstack']['tenant_name']
        os.flavor                           = settings['openstack']['flavor']
        os.image                            = settings['openstack']['image']
        os.keypair_name                     = settings['openstack']['keypair_name']
        os.region                           = settings['openstack']['region']
        os.availability_zone                = settings['openstack']['availability_zone']
        os.floating_ip_pool_always_allocate = settings['openstack']['floating_ip_pool_always_allocate']
        os.security_groups                  = settings['openstack']['security_groups']
        os.openstack_auth_url               = settings['openstack']['openstack_auth_url']
        os.openstack_compute_url            = settings['openstack']['openstack_compute_url']
        os.openstack_network_url            = settings['openstack']['openstack_network_url']
        os.openstack_volume_url             = settings['openstack']['openstack_volume_url']
        os.openstack_image_url              = settings['openstack']['openstack_image_url']
        os.networks                         = settings['networks']
        if settings.key?('volumes')
          os.volumes                        = settings['volumes'] 
        end
      end  

snippet from config yaml

---
default_openstack: &default_openstack
  tenant_name: my tenant_name
  flavor: ram16cpu4
  image: my image uuid
  keypair_name: my key
  region: my region
  availability_zone: my zone
  floating_ip_pool_always_allocate: true
  security_groups: 
    - default
    - my security group
  openstack_auth_url: my.url
  openstack_compute_url: my.url
  openstack_network_url: my.url
  openstack_volume_url: my.url
  openstack_image_url: my.url
default_options: &defaults
  box_name: My Box Name
  openstack:
    <<: *default_openstack
  bootstrap:
    type: script
    script: ./scripts/init.bsh
boxes:
  - <<: *defaults
    hostname: esdata-001
    private_ip: 192.168.1.211
    networks:
      - MY_PUBLIC_NETWORK_NAME 
      - :id: my private network uuid
        :address: 192.168.1.211
    volumes:
      - :id: my volume uuid 1
      - :device: /dev/vdc
  - <<: *defaults
    hostname: esdata-002
    private_ip: 192.168.1.212
    networks:
      - MY_PUBLIC_NETWORK_NAME 
      - :id:  my private network uuid
        :address: 192.168.1.212
    volumes:
      - :id: my volume uuid 2
      - :device: /dev/vdc

Drakoskai avatar Apr 05 '16 14:04 Drakoskai