[one-users] Ubuntu Cloud Images

Tobias Brunner tobias at tobru.ch
Wed Oct 23 08:25:46 PDT 2013


Hi Ricardo,

Thanks a lot for the explanation, it's now way more clear how the 
metadata server works!

Cheers,
Tobias

On 23.10.2013 16:41, Ricardo Duarte wrote:
> Hi Tobias,
> 
> As there is no standard "dns" suffix, I just added a .cloud to the
> hostname.
> You can change it by doing the following:
> 
> - Edit /usr/lib/one/ruby/cloud/metadata/MetadataServer.rb
> - And replace .cloud with your domain:
>  when 'local-hostname' # 2007-01-19
> 
>  @value = "i-#{vm.id}.cloud"
>  when 'public-hostname'
>  @value = "i-#{vm.id}.cloud"
> 
> If you use the econe-* commands, userdata and public key should work
> without any change.
> If you create your own template, just add the following to context:
> 
>  CONTEXT = [
> 
>  (...)
>  EC2_USER_DATA = <YOUR USER DATA>
>  EC2_PUBLIC_KEY = <YOUR PUBLIC KEY>
>  EC2_KEYNAME = <THE NAME OF THE KEY>
>  ]
> 
> If you want to use your own variables instead, just change them on
> /usr/lib/one/ruby/cloud/metadata/MetadataServer.rb.
> Search and replace with your own data:
> 
>  TEMPLATE/CONTEXT/EC2_KEYNAME
>  TEMPLATE/CONTEXT/EC2_PUBLIC_KEY
>  TEMPLATE/CONTEXT/EC2_USER_DATA
> 
> The metadata server was thought to work with instances launched by
> eucatools, hybridfox or econe-* , and assumes that you are using the
> standard /etc/one/ec2query_templates/*.erb .
> But it can be easily modified to be more generic.
> 
> Regards,
> Ricardo Duarte
> 
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------
> For reference, this is the ec2 template I'm currently using:
> 
> NAME = eco-vm-<%= erb_vm_info[:instance_type ]%>
> 
> <% if erb_vm_info[:instance_type ] == "m1.small" %>
> CPU = 0.1
> MEMORY = 256
> <% elsif erb_vm_info[:instance_type ] == "m1.medium" %>
> CPU = 0.2
> MEMORY = 1024
> <% elsif erb_vm_info[:instance_type ] == "m1.large" %>
> CPU = 0.4
> MEMORY = 2048
> <% elsif erb_vm_info[:instance_type ] == "m1.xlarge" %>
> CPU = 0.8
> MEMORY = 4096
> <% end %>
> OS = [ ARCH="x86_64", BOOT="hd" ]
> DISK = [ IMAGE_ID = <%= erb_vm_info[:img_id] %> , CACHE="none",
> TARGET="vd", DRIVER="qcow2" ]
> NIC = [NETWORK_ID=0, MODEL="virtio"]
> IMAGE_ID = <%= erb_vm_info[:ec2_img_id] %>
> INSTANCE_TYPE = <%= erb_vm_info[:instance_type]%>
> GRAPHICS = [ TYPE="vnc" ]
> FEATURES = [ ACPI="yes" ]
> RAW = [ DATA="<devices><serial type='pty'><target
> port='0'/></serial></devices>", TYPE="kvm" ]
> CONTEXT = [
>  HOSTNAME = "i-$VMID",
>  ETH0_DNS = "$NETWORK[DNS, NETWORK_ID=0]",
>  ETH0_GATEWAY = "$NETWORK[GATEWAY, NETWORK_ID=0]",
>  ETH0_IP = "$NIC[IP]",
>  ETH0_MASK = "$NETWORK[MASK, NETWORK_ID=0]"
>  <% if @password %>, PASSWORD = "<%= @password %>"<% end %>
>  <% if erb_vm_info[:user_data] %>, EC2_USER_DATA = "<%=
> erb_vm_info[:user_data] %>"<% end %>
>  <% if erb_vm_info[:public_key] %>, EC2_PUBLIC_KEY = "<%=
> erb_vm_info[:key_name] %>"<% end %>
>  <% if erb_vm_info[:public_key] %>, EC2_KEYNAME = "<%=
> erb_vm_info[:public_key] %>"<% end %>
> ]
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------
> 
>> Date: Wed, 23 Oct 2013 16:26:49 +0200
>> From: tobias at tobru.ch
>> To: rjtd21 at hotmail.com
>> CC: users at lists.opennebula.org
>> Subject: RE: [one-users] Ubuntu Cloud Images
>> 
>> Hi,
>> 
>> Ok, I got this working now! Thanks a lot for your ideas... I very
>> appreciate the nice help.
>> 
>> Now the metadata server returns the following values:
>> 
>> ubuntu at ip-192-168-49-152:~$ ./ec2-metadata-mod --all
>> ami-id: not available
>> ami-launch-index: 76
>> ami-manifest-path: none
>> ancestor-ami-ids: not available
>> block-device-mapping:
>> not available
>> instance-id: i-76
>> instance-type: not available
>> local-hostname: one-76.cloud
>> local-ipv4: 192.168.49.152
>> kernel-id: not available
>> placement: not available
>> product-codes: not available
>> public-hostname: one-76.cloud
>> public-ipv4: 192.168.49.152
>> public-keys:
>> not available
>> ramdisk-id: not available
>> reservation-id: r-76
>> security-groups: not available
>> user-data: not available
>> 
>> Some questions regarding the values:
>> 
>> > local-hostname: one-76.cloud
>> > public-hostname: one-76.cloud
>> How are these values created? Shouldn't the value correspond to the
> vm
>> name I've chosen in OpenNebula?
>> 
>> > public-keys:
>> > not available
>> There is a public key available in the template, so I'm wondering
> why
>> it's not available.
>> 
>> Will the metadata server find it's way into the official OpenNebula
>> distribution, or will it stay separate?
>> 
>> Cheers,
>> Tobias
>> 
>> 
>> On 23.10.2013 10:58, Ricardo Duarte wrote:
>> > Hi Tobias,
>> >
>> > I would say that the NAT method will not work if both the
>> > metadata-server and the instances are on the same IP network.
>> >
>> > You can try to do the following:
>> >
>> > - On your router, add a new IP to the VLAN => 169.254.169.253/30
>> > - On the metadata-server, add the IP 169.254.169.254/30 to the
>> > interface
>> > - Edit the /etc/one/metadata.conf to listen on 169.254.169.254,
> and
>> > port 80
>> > - Make sure your router forwards packets from your instance
> network to
>> > this network
>> >
>> > To ensure metadata server is working fine, before making the
> changes,
>> > just change the IP address and port on the ec2-metadata script to
> the
>> > real ip and port of the server, and check if it returns any value.
>> 
>> 




More information about the Users mailing list