Created
August 9, 2022 07:13
-
-
Save daipham3213/33343b3c137e934fe76911e55b90531e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/bash | |
# PUT THIS FILE IN devstack REPO | |
unset LANG | |
unset LANGUAGE | |
LC_ALL=en_US.utf8 | |
export LC_ALL | |
# Clear all OpenStack related envvars | |
unset `env | grep -E '^OS_' | cut -d = -f 1` | |
# Make sure umask is sane | |
umask 022 | |
# Not all distros have sbin in PATH for regular users. | |
# osc will normally be installed at /usr/local/bin/openstack so ensure | |
# /usr/local/bin is also in the path | |
PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/sbin:/sbin | |
PYTHON=python3 | |
# Keep track of the DevStack directory | |
TOP_DIR=$(pwd) | |
# Check for uninitialized variables, a big cause of bugs | |
NOUNSET=${NOUNSET:-} | |
if [[ -n "$NOUNSET" ]]; then | |
set -o nounset | |
fi | |
# Set start of devstack timestamp | |
DEVSTACK_START_TIME=$(date +%s) | |
# Configuration | |
# ============= | |
# Sanity Checks | |
# ------------- | |
# templates and other useful files in the ``files`` subdirectory | |
FILES=$TOP_DIR/files | |
if [ ! -d $FILES ]; then | |
set +o xtrace | |
echo "missing devstack/files" | |
exit 1 | |
fi | |
# ``stack.sh`` keeps function libraries here | |
# Make sure ``$TOP_DIR/inc`` directory is present | |
if [ ! -d $TOP_DIR/inc ]; then | |
set +o xtrace | |
echo "missing devstack/inc" | |
exit 1 | |
fi | |
# ``stack.sh`` keeps project libraries here | |
# Make sure ``$TOP_DIR/lib`` directory is present | |
if [ ! -d $TOP_DIR/lib ]; then | |
set +o xtrace | |
echo "missing devstack/lib" | |
exit 1 | |
fi | |
# Check if run in POSIX shell | |
if [[ "${POSIXLY_CORRECT}" == "y" ]]; then | |
set +o xtrace | |
echo "You are running POSIX compatibility mode, DevStack requires bash 4.2 or newer." | |
exit 1 | |
fi | |
# OpenStack is designed to be run as a non-root user; Horizon will fail to run | |
# as **root** since Apache will not serve content from **root** user). | |
# ``stack.sh`` must not be run as **root**. It aborts and suggests one course of | |
# action to create a suitable user account. | |
if [[ $EUID -eq 0 ]]; then | |
set +o xtrace | |
echo "DevStack should be run as a user with sudo permissions, " | |
echo "not root." | |
echo "A \"stack\" user configured correctly can be created with:" | |
echo " $TOP_DIR/tools/create-stack-user.sh" | |
exit 1 | |
fi | |
# OpenStack is designed to run at a system level, with system level | |
# installation of python packages. It does not support running under a | |
# virtual env, and will fail in really odd ways if you do this. Make | |
# this explicit as it has come up on the mailing list. | |
if [[ -n "$VIRTUAL_ENV" ]]; then | |
set +o xtrace | |
echo "You appear to be running under a python virtualenv." | |
echo "DevStack does not support this, as we may break the" | |
echo "virtualenv you are currently in by modifying " | |
echo "external system-level components the virtualenv relies on." | |
echo "We recommend you use a separate virtual-machine if " | |
echo "you are worried about DevStack taking over your system." | |
exit 1 | |
fi | |
# Provide a safety switch for devstack. If you do a lot of devstack, | |
# on a lot of different environments, you sometimes run it on the | |
# wrong box. This makes there be a way to prevent that. | |
if [[ -e $HOME/.no-devstack ]]; then | |
set +o xtrace | |
echo "You've marked this host as a no-devstack host, to save yourself from" | |
echo "running devstack accidentally. If this is in error, please remove the" | |
echo "~/.no-devstack file" | |
exit 1 | |
fi | |
# Prepare the environment | |
# ----------------------- | |
# Import common functions | |
source $TOP_DIR/functions | |
# Import 'public' stack.sh functions | |
source $TOP_DIR/lib/stack | |
# Global Settings | |
# --------------- | |
# Check for a ``localrc`` section embedded in ``local.conf`` and extract if | |
# ``localrc`` does not already exist | |
# Phase: local | |
rm -f $TOP_DIR/.localrc.auto | |
extract_localrc_section $TOP_DIR/local.conf $TOP_DIR/localrc $TOP_DIR/.localrc.auto | |
if [[ ! -r $TOP_DIR/stackrc ]]; then | |
die $LINENO "missing $TOP_DIR/stackrc - did you grab more than just stack.sh?" | |
fi | |
source $TOP_DIR/stackrc | |
# Configure Target Directories | |
# ---------------------------- | |
# Destination path for installation ``DEST`` | |
DEST=${DEST:-/opt/stack} | |
# Create the destination directory and ensure it is writable by the user | |
# and read/executable by everybody for daemons (e.g. apache run for horizon) | |
# If directory exists do not modify the permissions. | |
if [[ ! -d $DEST ]]; then | |
sudo mkdir -p $DEST | |
safe_chown -R $STACK_USER $DEST | |
safe_chmod 0755 $DEST | |
fi | |
# Destination path for devstack logs | |
if [[ -n ${LOGDIR:-} ]]; then | |
mkdir -p $LOGDIR | |
fi | |
# Destination path for service data | |
DATA_DIR=${DATA_DIR:-${DEST}/data} | |
if [[ ! -d $DATA_DIR ]]; then | |
sudo mkdir -p $DATA_DIR | |
safe_chown -R $STACK_USER $DATA_DIR | |
safe_chmod 0755 $DATA_DIR | |
fi | |
TIMESTAMP_FORMAT=${TIMESTAMP_FORMAT:-"%F-%H%M%S"} | |
LOGDAYS=${LOGDAYS:-7} | |
CURRENT_LOG_TIME=$(date "+$TIMESTAMP_FORMAT") | |
SSL_BUNDLE_FILE="$DATA_DIR/ca-bundle.pem" | |
rm -f $SSL_BUNDLE_FILE | |
# Import common services (database, message queue) configuration | |
source $TOP_DIR/lib/database | |
source $TOP_DIR/lib/rpc_backend | |
# Configure Projects | |
# ================== | |
# Plugin Phase 0: override_defaults - allow plugins to override | |
# defaults before other services are run | |
run_phase override_defaults | |
# Import Apache functions | |
source $TOP_DIR/lib/apache | |
# Import TLS functions | |
source $TOP_DIR/lib/tls | |
# Source project function libraries | |
source $TOP_DIR/lib/infra | |
source $TOP_DIR/lib/libraries | |
source $TOP_DIR/lib/lvm | |
source $TOP_DIR/lib/horizon | |
source $TOP_DIR/lib/keystone | |
source $TOP_DIR/lib/glance | |
source $TOP_DIR/lib/nova | |
source $TOP_DIR/lib/placement | |
source $TOP_DIR/lib/cinder | |
source $TOP_DIR/lib/swift | |
source $TOP_DIR/lib/neutron | |
source $TOP_DIR/lib/ldap | |
source $TOP_DIR/lib/dstat | |
source $TOP_DIR/lib/tcpdump | |
source $TOP_DIR/lib/etcd3 | |
source $TOP_DIR/lib/os-vif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
PUT THIS FILE IN devstack DIRECTORY