openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #07564
Re: Creating boot-from-volume capable image and volume
Hi Anthony,
I tried your exercise script and found the following:
- a launched instance cannot go outside the world and failed
to get the cirros image with floating ip.
- I had to go inside nova-compute session to enter password
for executing guestmount and fusermount with sudo.
So, I made some changes with the patch below and got it working.
midokura@midokura-iMac:~/git/devstack.forked/exercises$ diff -u
boot_from_volume_new-8fe133bebcd90fa94c7a1d12c00b3f2cca18a35c.sh
bfv.sh
--- boot_from_volume_new-8fe133bebcd90fa94c7a1d12c00b3f2cca18a35c.sh 2012-02-11
05:49:08.000000000 +0900
+++ bfv.sh 2012-02-14 14:30:44.233636001 +0900
@@ -99,13 +99,13 @@
fi
# Add floating ip to our server
-nova add-floating-ip $VM_UUID $FLOATING_IP
+#nova add-floating-ip $VM_UUID $FLOATING_IP
# Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds
-if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1
$FLOATING_IP; do sleep 1; done"; then
- echo "Couldn't ping server with floating ip"
- exit 1
-fi
+#if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1
$FLOATING_IP; do sleep 1; done"; then
+# echo "Couldn't ping server with floating ip"
+# exit 1
+#fi
# Create our volume
nova volume-create --display_name=$VOL_NAME 1
@@ -116,6 +116,9 @@
exit 1
fi
+# get private ip
+IP=$(nova show $VM_UUID |grep priv | awk -F '|' '{print $3}'|sed -e 's/ //')
+
# FIXME (anthony) - python-novaclient should accept a volume_id for
the attachment param
DEVICE=/dev/vdb
VOLUME_ID=`nova volume-list | grep $VOL_NAME | cut -d '|' -f 2 | tr -d ' '`
@@ -131,7 +134,7 @@
# To do this, ssh to the builder instance, mount volume, and build a
volume-backed image.
STAGING_DIR=/tmp/stage
CIRROS_DIR=/tmp/cirros
-ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$FLOATING_IP << EOF
+ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$IP << EOF
set -o errexit
set -o xtrace
sudo mkdir -p $STAGING_DIR
@@ -177,16 +180,16 @@
sleep 1
# Add floating ip to our server
-nova add-floating-ip $VOL_VM_UUID $FLOATING_IP
+#nova add-floating-ip $VOL_VM_UUID $FLOATING_IP
# Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds
-if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1
$FLOATING_IP; do sleep 1; done"; then
- echo "Couldn't ping volume-backed server with floating ip"
- exit 1
-fi
+#if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! ping -c1 -w1
$FLOATING_IP; do sleep 1; done"; then
+# echo "Couldn't ping volume-backed server with floating ip"
+# exit 1
+#fi
# Make sure our volume-backed instance launched
-ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$FLOATING_IP << EOF
+ssh -o StrictHostKeyChecking=no -i $KEY_FILE cirros@$IP << EOF
echo "success!"
EOF
@@ -206,7 +209,7 @@
nova delete $INSTANCE_NAME
# De-allocate the floating ip
-nova floating-ip-delete $FLOATING_IP
+#nova floating-ip-delete $FLOATING_IP
# Delete secgroup
nova secgroup-delete $SECGROUP
----------------------------------------------
Hope this helps.
Cheers,
Tomoe
On Sat, Feb 11, 2012 at 10:31 PM, Tomoe Sugihara <tomoe@xxxxxxxxxxxx> wrote:
> Hi Anthony,
>
> Thanks for following it up.
>
> On Sat, Feb 11, 2012 at 2:58 PM, Anthony Young
> <sleepsonthefloor@xxxxxxxxx> wrote:
>> On Fri, Feb 10, 2012 at 8:51 PM, Tomoe Sugihara <tomoe@xxxxxxxxxxxx> wrote:
>>>
>>> Hi folks,
>>>
>>> Could someone tell me what is the right way to do boot-from-volume?
>>> Especially, how to create boot-from-volume capable image and volume?
>>> My understanding is that, since openstack API requires imageRef, we
>>> need to pass in both image and volume ids.
>>
>>
>> I was actually playing with this today, and just put up a review that adds a
>> devstack exercise to create and launch a bootable volume. It is true that
>> --image is still required when booting from a volume - I have not
>> investigated yet if that is a bug or a consequence of how boot-from-volume
>> is implemented as an extension (which still may fall into the bug category).
>>
>> https://review.openstack.org/4044
>
> Current servers API, which boot-from-volume inherits from, throws an
> exception when imageRef is missing:
> https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L646
> https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L965
>
>>
>>>
>>> I thought that create_image in EC2 API would be the one and tried, but
>>> it's totally broken now:
>>> https://bugs.launchpad.net/nova/+bug/923546
>>> And, I didn't find equivalent code in OpenStack API.
>>>
>>>
>>> I'd appreciate any help on this and I'd be happy to help debug the issue.
>>
>>
>> Hopefully the code above will give you some direction to get started. My
>> experience thus far is that the end-to-end experience of using this feature
>> needs some work, so I'll probably file some bugs and patches while I muck
>> with it. So it would be great if you took a look and did the same:)
>
> That helps me understand the end-to-end workflow a lot :)
> In your script, you log in to a guest and copy a bootable image by cp
> command to a volume, but I'm wondering if there's a way to create
> bootable volume using only APIs. Otherwise it's a bit hard to manage
> from operator's or dashboard's point of view.
>
> I'll run your script next week and see how it goes. Thanks a lot!
>
> Tomoe
>
>>
>> Anthony
>>
>>>
>>> Cheers,
>>> Tomoe
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to : openstack@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help : https://help.launchpad.net/ListHelp
>>
>>
Follow ups
References