| ... | ... |
@@ -1,11 +1,10 @@ |
| 1 |
-Tool to build (nfs export) openstack dev environments |
|
| 1 |
+Tool to quickly deploy openstack dev environments |
|
| 2 | 2 |
|
| 3 | 3 |
# Todo |
| 4 | 4 |
|
| 5 | 5 |
* Add python-novaclient cli support |
| 6 | 6 |
* move keystone/glance/dash to mysql |
| 7 | 7 |
* syslog |
| 8 |
-* munin |
|
| 9 | 8 |
* check openstack-puppet recipes to see if anything else is missing |
| 10 | 9 |
* allow rabbit connection to be specified via environment variables with sensible defaults |
| 11 | 10 |
* Add volume support |
| ... | ... |
@@ -18,7 +17,8 @@ Tool to build (nfs export) openstack dev environments |
| 18 | 18 |
* sqlconn can be set via env |
| 19 | 19 |
* move back to using sudo |
| 20 | 20 |
* move nova to mysql |
| 21 |
-* create images via vmbuilder and upload images via glance |
|
| 21 |
+* munin |
|
| 22 |
+* image upload with a script that supports generating images via debootstrap (ubuntu-vm-builder) |
|
| 22 | 23 |
|
| 23 | 24 |
# Future |
| 24 | 25 |
|
| ... | ... |
@@ -14,11 +14,11 @@ $BIN_DIR/keystone-manage $* role add Member |
| 14 | 14 |
$BIN_DIR/keystone-manage $* role grant Admin admin |
| 15 | 15 |
|
| 16 | 16 |
#endpointTemplates |
| 17 |
-# $BIN_DIR/keystone-manage $* endpointTemplates add RegionOne swift http://localhost:8080/v1/AUTH_%tenant_id% http://localhost:8080/ http://localhost:8080/v1/AUTH_%tenant_id% 1 1 |
|
| 18 |
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne nova_compat http://localhost:8774/v1.0/ http://localhost:8774/v1.0 http://localhost:8774/v1.0 1 1 |
|
| 19 |
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne nova http://localhost:8774/v1.1/%tenant_id% http://localhost:8774/v1.1/%tenant_id% http://localhost:8774/v1.1/%tenant_id% 1 1 |
|
| 20 |
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne glance http://localhost:9292/v1.1/%tenant_id% http://localhost:9292/v1.1/%tenant_id% http://localhost:9292/v1.1/%tenant_id% 1 1 |
|
| 21 |
-$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne identity http://localhost:5000/v2.0 http://localhost:5001/v2.0 http://localhost:5000/v2.0 1 1 |
|
| 17 |
+# $BIN_DIR/keystone-manage $* endpointTemplates add RegionOne swift http://%HOST_IP%:8080/v1/AUTH_%tenant_id% http://%HOST_IP%:8080/ http://%HOST_IP%:8080/v1/AUTH_%tenant_id% 1 1 |
|
| 18 |
+$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne nova_compat http://%HOST_IP%:8774/v1.0/ http://%HOST_IP%:8774/v1.0 http://%HOST_IP%:8774/v1.0 1 1 |
|
| 19 |
+$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne nova http://%HOST_IP%:8774/v1.1/%tenant_id% http://%HOST_IP%:8774/v1.1/%tenant_id% http://%HOST_IP%:8774/v1.1/%tenant_id% 1 1 |
|
| 20 |
+$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne glance http://%HOST_IP%:9292/v1.1/%tenant_id% http://%HOST_IP%:9292/v1.1/%tenant_id% http://%HOST_IP%:9292/v1.1/%tenant_id% 1 1 |
|
| 21 |
+$BIN_DIR/keystone-manage $* endpointTemplates add RegionOne identity http://%HOST_IP%:5000/v2.0 http://%HOST_IP%:5001/v2.0 http://%HOST_IP%:5000/v2.0 1 1 |
|
| 22 | 22 |
|
| 23 | 23 |
# Tokens |
| 24 | 24 |
$BIN_DIR/keystone-manage $* token add 999888777666 admin admin 2015-02-05T00:00 |
| ... | ... |
@@ -1,12 +1,14 @@ |
| 1 | 1 |
#!/usr/bin/env bash |
| 2 | 2 |
|
| 3 |
-# **stack.sh** is rackspace cloudbuilder's opinionated openstack dev installation. |
|
| 3 |
+# **stack.sh** is an opinionated openstack dev installation. |
|
| 4 | 4 |
|
| 5 | 5 |
# To keep this script simple we assume you are running on an **Ubuntu 11.04 |
| 6 | 6 |
# Natty** machine. It should work in a VM or physical server. Additionally we |
| 7 | 7 |
# put the list of *apt* and *pip* dependencies and other configuration files in |
| 8 | 8 |
# this repo. So start by grabbing this script and the dependencies. |
| 9 | 9 |
|
| 10 |
+# You can grab the most recent version of this script and files from Rackspace |
|
| 11 |
+# Cloud Builders at https://github.com/cloudbuilders/devstack |
|
| 10 | 12 |
|
| 11 | 13 |
# Sanity Check |
| 12 | 14 |
# ============ |
| ... | ... |
@@ -87,8 +89,9 @@ EC2_DMZ_HOST=${EC2_DMZ_HOST:-$HOST_IP}
|
| 87 | 87 |
# ip or you risk breaking things. |
| 88 | 88 |
# FLAT_INTERFACE=eth0 |
| 89 | 89 |
|
| 90 |
-# Nova hypervisor configuration |
|
| 91 |
-LIBVIRT_TYPE=${LIBVIRT_TYPE:-qemu}
|
|
| 90 |
+# Nova hypervisor configuration. We default to **kvm** but will drop back to |
|
| 91 |
+# **qemu** if we are unable to load the kvm module. |
|
| 92 |
+LIBVIRT_TYPE=${LIBVIRT_TYPE:-kvm}
|
|
| 92 | 93 |
|
| 93 | 94 |
# Mysql connection info |
| 94 | 95 |
MYSQL_USER=${MYSQL_USER:-root}
|
| ... | ... |
@@ -156,6 +159,7 @@ git_clone https://github.com/cloudbuilders/openstack-munin.git $MUNIN_DIR |
| 156 | 156 |
# Initialization |
| 157 | 157 |
# ============== |
| 158 | 158 |
|
| 159 |
+ |
|
| 159 | 160 |
# setup our checkouts so they are installed into python path |
| 160 | 161 |
# allowing ``import nova`` or ``import glance.client`` |
| 161 | 162 |
cd $NOVA_DIR; sudo python setup.py develop |
| ... | ... |
@@ -237,7 +241,7 @@ fi |
| 237 | 237 |
|
| 238 | 238 |
if [[ "$ENABLED_SERVICES" =~ "munin" ]]; then |
| 239 | 239 |
# allow connections from other hosts |
| 240 |
- sudo sed -i -e '/Allow from localhost/s/localhost.*$/all/' /etc/munin/apache.conf |
|
| 240 |
+ sudo sed -i -e 's/Allow from localhost/Allow from all/g' /etc/munin/apache.conf |
|
| 241 | 241 |
|
| 242 | 242 |
cat >/tmp/nova <<EOF |
| 243 | 243 |
[keystone_*] |
| ... | ... |
@@ -282,53 +286,21 @@ fi |
| 282 | 282 |
# Nova |
| 283 | 283 |
# ---- |
| 284 | 284 |
|
| 285 |
-function add_nova_flag {
|
|
| 286 |
- echo "$1" >> $NOVA_DIR/bin/nova.conf |
|
| 287 |
-} |
|
| 288 |
- |
|
| 289 |
-# (re)create nova.conf |
|
| 290 |
-rm -f $NOVA_DIR/bin/nova.conf |
|
| 291 |
-add_nova_flag "--verbose" |
|
| 292 |
-add_nova_flag "--nodaemon" |
|
| 293 |
-add_nova_flag "--dhcpbridge_flagfile=$NOVA_DIR/bin/nova.conf" |
|
| 294 |
-add_nova_flag "--network_manager=nova.network.manager.$NET_MAN" |
|
| 295 |
-add_nova_flag "--my_ip=$HOST_IP" |
|
| 296 |
-add_nova_flag "--public_interface=$INTERFACE" |
|
| 297 |
-add_nova_flag "--vlan_interface=$INTERFACE" |
|
| 298 |
-add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova" |
|
| 299 |
-add_nova_flag "--libvirt_type=$LIBVIRT_TYPE" |
|
| 300 |
-add_nova_flag "--osapi_extensions_path=$API_DIR/extensions" |
|
| 301 |
-add_nova_flag "--vncproxy_url=http://$HOST_IP:6080" |
|
| 302 |
-add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/" |
|
| 303 |
-add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini" |
|
| 304 |
-add_nova_flag "--image_service=nova.image.glance.GlanceImageService" |
|
| 305 |
-add_nova_flag "--ec2_dmz_host=$EC2_DMZ_HOST" |
|
| 306 |
-add_nova_flag "--rabbit_host=$RABBIT_HOST" |
|
| 307 |
-add_nova_flag "--glance_api_servers=$GLANCE_HOSTPORT" |
|
| 308 |
-if [ -n "$FLAT_INTERFACE" ]; then |
|
| 309 |
- add_nova_flag "--flat_interface=$FLAT_INTERFACE" |
|
| 310 |
-fi |
|
| 311 |
-if [ -n "$MULTI_HOST" ]; then |
|
| 312 |
- add_nova_flag "--multi_host=$MULTI_HOST" |
|
| 313 |
-fi |
|
| 314 |
- |
|
| 315 |
-# create a new named screen to store things in |
|
| 316 |
-screen -d -m -S nova -t nova |
|
| 317 |
-sleep 1 |
|
| 318 | 285 |
|
| 319 | 286 |
if [[ "$ENABLED_SERVICES" =~ "n-cpu" ]]; then |
| 320 | 287 |
|
| 321 |
- # attempt to load modules: kvm (hardware virt) and nbd (network block |
|
| 322 |
- # device - used to manage qcow images) |
|
| 288 |
+ # attempt to load modules: nbd (network block device - used to manage |
|
| 289 |
+ # qcow images) and kvm (hardware based virtualization). If unable to |
|
| 290 |
+ # load kvm, set the libvirt type to qemu. |
|
| 323 | 291 |
sudo modprobe nbd || true |
| 324 |
- sudo modprobe kvm || true |
|
| 292 |
+ if ! sudo modprobe kvm; then |
|
| 293 |
+ LIBVIRT_TYPE=qemu |
|
| 294 |
+ fi |
|
| 325 | 295 |
# User needs to be member of libvirtd group for nova-compute to use libvirt. |
| 326 | 296 |
sudo usermod -a -G libvirtd `whoami` |
| 327 | 297 |
# if kvm wasn't running before we need to restart libvirt to enable it |
| 328 | 298 |
sudo /etc/init.d/libvirt-bin restart |
| 329 | 299 |
|
| 330 |
- ## FIXME(ja): should LIBVIRT_TYPE be kvm if kvm module is loaded? |
|
| 331 |
- |
|
| 332 | 300 |
# setup nova instance directory |
| 333 | 301 |
mkdir -p $NOVA_DIR/instances |
| 334 | 302 |
|
| ... | ... |
@@ -351,6 +323,36 @@ if [[ "$ENABLED_SERVICES" =~ "n-net" ]]; then |
| 351 | 351 |
mkdir -p $NOVA_DIR/networks |
| 352 | 352 |
fi |
| 353 | 353 |
|
| 354 |
+function add_nova_flag {
|
|
| 355 |
+ echo "$1" >> $NOVA_DIR/bin/nova.conf |
|
| 356 |
+} |
|
| 357 |
+ |
|
| 358 |
+# (re)create nova.conf |
|
| 359 |
+rm -f $NOVA_DIR/bin/nova.conf |
|
| 360 |
+add_nova_flag "--verbose" |
|
| 361 |
+add_nova_flag "--nodaemon" |
|
| 362 |
+add_nova_flag "--dhcpbridge_flagfile=$NOVA_DIR/bin/nova.conf" |
|
| 363 |
+add_nova_flag "--network_manager=nova.network.manager.$NET_MAN" |
|
| 364 |
+add_nova_flag "--my_ip=$HOST_IP" |
|
| 365 |
+add_nova_flag "--public_interface=$INTERFACE" |
|
| 366 |
+add_nova_flag "--vlan_interface=$INTERFACE" |
|
| 367 |
+add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova" |
|
| 368 |
+add_nova_flag "--libvirt_type=$LIBVIRT_TYPE" |
|
| 369 |
+add_nova_flag "--osapi_extensions_path=$API_DIR/extensions" |
|
| 370 |
+add_nova_flag "--vncproxy_url=http://$HOST_IP:6080" |
|
| 371 |
+add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/" |
|
| 372 |
+add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini" |
|
| 373 |
+add_nova_flag "--image_service=nova.image.glance.GlanceImageService" |
|
| 374 |
+add_nova_flag "--ec2_dmz_host=$EC2_DMZ_HOST" |
|
| 375 |
+add_nova_flag "--rabbit_host=$RABBIT_HOST" |
|
| 376 |
+add_nova_flag "--glance_api_servers=$GLANCE_HOSTPORT" |
|
| 377 |
+if [ -n "$FLAT_INTERFACE" ]; then |
|
| 378 |
+ add_nova_flag "--flat_interface=$FLAT_INTERFACE" |
|
| 379 |
+fi |
|
| 380 |
+if [ -n "$MULTI_HOST" ]; then |
|
| 381 |
+ add_nova_flag "--multi_host=$MULTI_HOST" |
|
| 382 |
+fi |
|
| 383 |
+ |
|
| 354 | 384 |
if [[ "$ENABLED_SERVICES" =~ "mysql" ]]; then |
| 355 | 385 |
# (re)create nova database |
| 356 | 386 |
mysql -u$MYSQL_USER -p$MYSQL_PASS -e 'DROP DATABASE nova;' || true |
| ... | ... |
@@ -364,6 +366,7 @@ if [[ "$ENABLED_SERVICES" =~ "mysql" ]]; then |
| 364 | 364 |
$NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE |
| 365 | 365 |
fi |
| 366 | 366 |
|
| 367 |
+ |
|
| 367 | 368 |
# Keystone |
| 368 | 369 |
# -------- |
| 369 | 370 |
|
| ... | ... |
@@ -377,8 +380,11 @@ if [[ "$ENABLED_SERVICES" =~ "key" ]]; then |
| 377 | 377 |
cp $FILES/keystone.conf $KEYSTONE_CONF |
| 378 | 378 |
sudo sed -e "s,%SQL_CONN%,$BASE_SQL_CONN/keystone,g" -i $KEYSTONE_CONF |
| 379 | 379 |
|
| 380 |
+ KEYSTONE_DATA=$KEYSTONE_DIR/bin/keystone_data.sh |
|
| 381 |
+ cp $FILES/keystone_data.sh $KEYSTONE_DATA |
|
| 382 |
+ sudo sed -e "s,%HOST_IP%,$HOST_IP,g" -i $KEYSTONE_DATA |
|
| 380 | 383 |
# initialize keystone with default users/endpoints |
| 381 |
- BIN_DIR=$KEYSTONE_DIR/bin bash $FILES/keystone_data.sh |
|
| 384 |
+ BIN_DIR=$KEYSTONE_DIR/bin bash $KEYSTONE_DATA |
|
| 382 | 385 |
fi |
| 383 | 386 |
|
| 384 | 387 |
|
| ... | ... |
@@ -398,6 +404,10 @@ function screen_it {
|
| 398 | 398 |
fi |
| 399 | 399 |
} |
| 400 | 400 |
|
| 401 |
+# create a new named screen to run processes in |
|
| 402 |
+screen -d -m -S nova -t nova |
|
| 403 |
+sleep 1 |
|
| 404 |
+ |
|
| 401 | 405 |
screen_it g-api "cd $GLANCE_DIR; bin/glance-api --config-file=etc/glance-api.conf" |
| 402 | 406 |
screen_it g-reg "cd $GLANCE_DIR; bin/glance-registry --config-file=etc/glance-registry.conf" |
| 403 | 407 |
screen_it key "$KEYSTONE_DIR/bin/keystone --config-file $KEYSTONE_CONF" |