77 lines
3.1 KiB
Plaintext
77 lines
3.1 KiB
Plaintext
#!/bin/bash
|
|
#
|
|
# assumes that openstack credentails are set in this file
|
|
source <%= rc_file_path %>
|
|
|
|
<% if image_type == 'cirros' -%>
|
|
|
|
# Grab an image. Cirros is a nice small Linux that's easy to deploy
|
|
wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
|
|
|
|
# Add it to glance so that we can use it in Openstack
|
|
glance add name='cirros image' is_public=true container_format=bare disk_format=qcow2 < cirros-0.3.0-x86_64-disk.img
|
|
|
|
# Caputre the Image ID so taht we can call the right UUID for this image
|
|
IMAGE_ID=`glance index | grep 'cirros image' | head -1 | awk -F' ' '{print $1}'`
|
|
|
|
login_user='cirros'
|
|
<% else -%>
|
|
|
|
# otherwise, use an Ubuntu precise image. This is a larger image, but a little more
|
|
# feature-full and realistic
|
|
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
|
|
# import that image into glance
|
|
glance add name="precise-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img
|
|
# Caputre the Image ID so taht we can call the right UUID for this image
|
|
IMAGE_ID=`glance index | grep 'precise-amd64' | head -1 | awk -F' ' '{print $1}'`
|
|
login_user='ubuntu'
|
|
<% end -%>
|
|
|
|
|
|
# create a pub/priv keypair
|
|
ssh-keygen -f /tmp/id_rsa -t rsa -N ''
|
|
|
|
#add the public key to nova.
|
|
nova --no-cache keypair-add --pub_key /tmp/id_rsa.pub key_cirros
|
|
|
|
|
|
instance_name='<%= image_type %>_test_vm'
|
|
|
|
<% if quantum -%>
|
|
quantum net-create net1
|
|
quantum subnet-create net1 10.0.0.0/24
|
|
quantum_net=`quantum net-list | grep net1 | awk -F' ' '{print $2}'`
|
|
nova --no-cache boot --flavor 1 --image $IMAGE_ID --key_name key_cirros --nic net-id=$quantum_net $instance_name
|
|
<% else -%>
|
|
<% if floating_ip -%>
|
|
# create a security group so that we can allow ssh, http, and ping traffic
|
|
# when we add a floating IP (assuming you are adding floating IPs)
|
|
nova --no-cache secgroup-create nova_test 'Cirros test security group'
|
|
nova --no-cache secgroup-add-rule nova_test tcp 22 22 0.0.0.0/0
|
|
nova --no-cache secgroup-add-rule nova_test tcp 80 80 0.0.0.0/0
|
|
nova --no-cache secgroup-add-rule nova_test icmp -1 -1 0.0.0.0/0
|
|
# request a floating IP address, and extract the address from the results message
|
|
floating_ip=`nova --no-cache floating-ip-create | grep None | awk '{print $2}'`
|
|
<% end -%>
|
|
# Boot the added image against the "1" flavor which by default maps to a micro instance. <% if floating_ip -%> Include the cirros_test group so our address will work when we add it later <% end %>
|
|
nova --no-cache boot --flavor 1 <% if floating_ip -%>--security_groups nova_test<% end %> --image ${IMAGE_ID} --key_name key_cirros $instance_name
|
|
<% end -%>
|
|
|
|
# let the system catch up
|
|
sleep <%= sleep_time %>
|
|
|
|
# Show the state of the system we just requested.
|
|
nova --no-cache show $instance_name
|
|
|
|
# wait for the server to boot
|
|
sleep <%= sleep_time %>
|
|
|
|
<% if floating_ip -%>
|
|
# Now add the floating IP we reserved earlier to the machine.
|
|
nova --no-cache add-floating-ip $instance_name $floating_ip
|
|
# Wait and then try to SSH to the node, leveraging the private key
|
|
# we generated earlier.
|
|
sleep <%= sleep_time %>
|
|
ssh $login_user@$floating_ip -i /tmp/id_rsa
|
|
<% end -%>
|