From f5633ddb7d543397fb881a4d3cbf9207abd6b1de Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 28 Mar 2012 11:21:40 -0500 Subject: [PATCH] Add local.sh support and samples of local.sh and locarc Run $TOP_DIR/local.sh at the end of stack.sh if it exists and is executable. This allows the user to automatically perform local actions on every re-stack, such as creating custom flavors or specific tenants/users. Like localrc, this file is not distributed with DevStack so user modifications will be undisturbed. Add local.sh to .gitignore Examples of local.sh and localrc are in the samples/ directory. Change-Id: I0be6b4d80ce084981cac8a3a8f1dc9bc8c3bbd4e --- .gitignore | 1 + samples/local.sh | 59 +++++++++++++++++++++++++++++++++++++ samples/localrc | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ stack.sh | 10 +++++++ 4 files changed, 147 insertions(+) create mode 100755 samples/local.sh create mode 100644 samples/localrc diff --git a/.gitignore b/.gitignore index e4820903d4..c8d25605ee 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ proto *.log src localrc +local.sh diff --git a/samples/local.sh b/samples/local.sh new file mode 100755 index 0000000000..83637f983b --- /dev/null +++ b/samples/local.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +# Sample ``local.sh`` for user-configurable tasks to run automatically +# at the sucessful conclusion of ``stack.sh``. + +# NOTE: Copy this file to the root ``devstack`` directory for it to +# work properly. + +# This is a collection of some of the things we have found to be useful to run +# after stack.sh to tweak the OpenStack configuration that DevStack produces. +# These should be considered as samples and are unsupported DevStack code. + +# Keep track of the devstack directory +TOP_DIR=$(cd $(dirname "$0") && pwd) + +# Use openrc + stackrc + localrc for settings +source $TOP_DIR/stackrc + +# Destination path for installation ``DEST`` +DEST=${DEST:-/opt/stack} + + +# Import ssh keys +# --------------- + +# Import keys from the current user into the default OpenStack user (usually +# ``demo``) + +# Get OpenStack auth +source $TOP_DIR/openrc + +# Add first keypair found in localhost:$HOME/.ssh +for i in $HOME/.ssh/id_rsa.pub $HOME/.ssh/id_dsa.pub; do + if [[ -f $i ]]; then + nova keypair-add --pub_key=$i `hostname` + break + fi +done + + +# Create A Flavor +# --------------- + +# Get OpenStack admin auth +source $TOP_DIR/openrc admin admin + +# Name of new flavor +# set in ``localrc`` with ``DEFAULT_INSTANCE_TYPE=m1.micro`` +MI_NAME=m1.micro + +# Create micro flavor if not present +if [[ -z $(nova flavor-list | grep $MI_NAME) ]]; then + nova flavor-create $MI_NAME 6 128 0 1 +fi +# Other Uses +# ---------- + +# Add tcp/22 to default security group + diff --git a/samples/localrc b/samples/localrc new file mode 100644 index 0000000000..4fb093dc16 --- /dev/null +++ b/samples/localrc @@ -0,0 +1,77 @@ +# Sample ``localrc`` for user-configurable variables in ``stack.sh`` + +# NOTE: Copy this file to the root ``devstack`` directory for it to work properly. + +# ``localrc`` is a user-maintained setings file that is sourced at the end of +# ``stackrc``. This gives it the ability to override any variables set in ``stackrc``. +# Also, most of the settings in ``stack.sh`` are written to only be set if no +# value has already been set; this lets ``localrc`` effectively override the +# default values. + +# This is a collection of some of the settings we have found to be useful +# in our DevStack development environments. Additional settings are described +# in http://devstack.org/localrc.html +# These should be considered as samples and are unsupported DevStack code. + + +# Minimal Contents +# ---------------- + +# While ``stack.sh`` is happy to run without ``localrc``, devlife is better when +# there are a few minimal variables set: + +# If the ``*_PASSWORD`` variables are not set here you will be prompted to enter +# values for them by ``stack.sh``. +ADMIN_PASSWORD=nomoresecrete +MYSQL_PASSWORD=stackdb +RABBIT_PASSWORD=stackqueue +SERVICE_PASSWORD=$ADMIN_PASSWORD + +# HOST_IP should be set manually for best results. It is auto-detected during the +# first run of ``stack.sh`` but often is indeterminate on later runs due to the IP +# being moved from an Ethernet interface to a bridge on the host. Setting it here +# also makes it available for ``openrc`` to include when setting ``OS_AUTH_URL``. +# ``HOST_IP`` is not set by default. +HOST_IP=w.x.y.z + + +# Set DevStack Install Directory +# ------------------------------ + +# The DevStack install directory is set by the ``DEST`` variable. By setting it +# early in ``localrc`` you can reference it in later variables. The default value +# is ``/opt/stack``. It can be useful to set it even though it is not changed from +# the default value. +DEST=/opt/stack + + +# Using milestone-proposed branches +# --------------------------------- + +# Uncomment these to grab the milestone-proposed branches from the repos: +#GLANCE_BRANCH=milestone-proposed +#HORIZON_BRANCH=milestone-proposed +#KEYSTONE_BRANCH=milestone-proposed +#KEYSTONECLIENT_BRANCH=milestone-proposed +#NOVA_BRANCH=milestone-proposed +#NOVACLIENT_BRANCH=milestone-proposed +#SWIFT_BRANCH=milestone-proposed + + +# Swift +# ----- + +# Swift is now used as the back-end for the S3-like object store. If Nova's +# objectstore (``n-obj`` in ``ENABLED_SERVICES``) is enabled, it will NOT +# run if Swift is enabled. Setting the hash value is required and you will +# be prompted for it if Swift is enabled so just set it to something already: +SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 + +# For development purposes the default of 3 replicas is usually not required. +# Set this to 1 to save some resources: +SWIFT_REPLICAS=1 + +# The data for Swift is stored in the source tree by default (``$DEST/swift/data``) +# and can be moved by setting ``SWIFT_DATA_DIR``. The directory will be created +# if it does not exist. +SWIFT_DATA_DIR=$DEST/data diff --git a/stack.sh b/stack.sh index 3a7fc5dafe..fd2daaf8ad 100755 --- a/stack.sh +++ b/stack.sh @@ -1706,6 +1706,16 @@ if is_service_enabled g-reg; then fi +# Run local script +# ================ + +# Run ``local.sh`` if it exists to perform user-managed tasks +if [[ -x $TOP_DIR/local.sh ]]; then + echo "Running user script $TOP_DIR/local.sh" + $TOP_DIR/local.sh +fi + + # Fin # ===