Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | # **exercise.sh** - using the cloud can be fun |
| 4 | |
| 5 | # we will use the ``nova`` cli tool provided by the ``python-novaclient`` |
| 6 | # package |
Jesse Andrews | b19424f | 2011-09-14 22:03:04 -0700 | [diff] [blame] | 7 | # |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 8 | |
Jesse Andrews | b19424f | 2011-09-14 22:03:04 -0700 | [diff] [blame] | 9 | |
| 10 | # This script exits on an error so that errors don't compound and you see |
| 11 | # only the first error that occured. |
| 12 | set -o errexit |
| 13 | |
| 14 | # Print the commands being run so that we can see the command that triggers |
| 15 | # an error. It is also useful for following allowing as the install occurs. |
| 16 | set -o xtrace |
| 17 | |
| 18 | |
| 19 | # Settings |
| 20 | # ======== |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 21 | |
| 22 | HOST=${HOST:-localhost} |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 23 | |
Jesse Andrews | b19424f | 2011-09-14 22:03:04 -0700 | [diff] [blame] | 24 | # Nova original used project_id as the *account* that owned resources (servers, |
| 25 | # ip address, ...) With the addition of Keystone we have standardized on the |
| 26 | # term **tenant** as the entity that owns the resources. **novaclient** still |
| 27 | # uses the old deprecated terms project_id. |
| 28 | export NOVA_PROJECT_ID=${TENANT:-demo} |
| 29 | |
| 30 | # In addition to the owning entity (tenant), nova stores the entity performing |
| 31 | # the action as the **user**. |
| 32 | export NOVA_USERNAME=${USERNAME:-demo} |
| 33 | |
| 34 | # With Keystone you pass the keystone password instead of an api key. |
| 35 | export NOVA_API_KEY=${PASSWORD:-secrete} |
| 36 | |
| 37 | # With the addition of Keystone, to use an openstack cloud you should |
| 38 | # authenticate against keystone, which returns a **Token** and **Service |
| 39 | # Catalog**. The catalog contains the endpoint for all services the user/tenant |
| 40 | # has access to - including nova, glance, keystone, swift, ... We currently |
| 41 | # recommend using the 2.0 *auth api*. |
| 42 | # |
| 43 | # *NOTE*: Using the 2.0 *auth api* does mean that compute api is 2.0. We will |
| 44 | # use the 1.1 *compute api* |
| 45 | export NOVA_URL=${NOVA_URL:-http://$HOST:5000/v2.0/} |
| 46 | |
| 47 | # Currently novaclient needs you to specify the *compute api* version. This |
| 48 | # needs to match the config of your catalog returned by Keystone. |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 49 | export NOVA_VERSION=1.1 |
| 50 | |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 51 | |
Jesse Andrews | 593828d | 2011-09-14 22:44:50 -0700 | [diff] [blame^] | 52 | # Launching a server |
| 53 | # ================== |
Jesse Andrews | b19424f | 2011-09-14 22:03:04 -0700 | [diff] [blame] | 54 | |
Jesse Andrews | 593828d | 2011-09-14 22:44:50 -0700 | [diff] [blame^] | 55 | # List servers for tenant: |
Jesse Andrews | b019151 | 2011-09-14 19:37:10 -0700 | [diff] [blame] | 56 | nova list |
Jesse Andrews | 593828d | 2011-09-14 22:44:50 -0700 | [diff] [blame^] | 57 | |
| 58 | # List of flavors: |
| 59 | nova flavor-list |
| 60 | |
| 61 | # Images |
| 62 | # ------ |
| 63 | |
| 64 | # Nova has a **deprecated** way of listing images. |
| 65 | nova image-list |
| 66 | |
| 67 | # But we recommend using glance directly |
| 68 | glance index |
| 69 | |
| 70 | # show details of the active servers:: |
| 71 | # |
| 72 | # nova show 1234 |
| 73 | # |
| 74 | nova list | grep ACTIVE | cut -d \| -f2 | xargs -n1 nova show |