039979424b
I find that enabling the debug log level often causes me to miss important error messages due to the sheer volume of information logged. This change allows configuration of the debug option in a number of the projects so it can be disabled globally without having to make one-off changes after each re-stack. Note that this does not apply to Keystone or Swift right now. They use a different method to configure their logging level and I'm not as familiar with them so I didn't want to mess with their settings. Change-Id: I185d496543d245a644854c8a37f3359377cb978c
207 lines
8.9 KiB
Plaintext
207 lines
8.9 KiB
Plaintext
# lib/heat
|
|
# Install and start **Heat** service
|
|
|
|
# To enable, add the following to localrc
|
|
# ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
|
|
|
|
# Dependencies:
|
|
# - functions
|
|
|
|
# stack.sh
|
|
# ---------
|
|
# install_heatclient
|
|
# install_heat
|
|
# configure_heatclient
|
|
# configure_heat
|
|
# init_heat
|
|
# start_heat
|
|
# stop_heat
|
|
# cleanup_heat
|
|
|
|
# Save trace setting
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
|
|
# Defaults
|
|
# --------
|
|
|
|
# set up default directories
|
|
HEAT_DIR=$DEST/heat
|
|
HEATCLIENT_DIR=$DEST/python-heatclient
|
|
HEAT_AUTH_CACHE_DIR=${HEAT_AUTH_CACHE_DIR:-/var/cache/heat}
|
|
HEAT_STANDALONE=`trueorfalse False $HEAT_STANDALONE`
|
|
|
|
# Functions
|
|
# ---------
|
|
|
|
# cleanup_heat() - Remove residual data files, anything left over from previous
|
|
# runs that a clean run would need to clean up
|
|
function cleanup_heat() {
|
|
sudo rm -rf $HEAT_AUTH_CACHE_DIR
|
|
}
|
|
|
|
# configure_heat() - Set config files, create data dirs, etc
|
|
function configure_heat() {
|
|
setup_develop $HEAT_DIR
|
|
|
|
HEAT_CONF_DIR=/etc/heat
|
|
if [[ ! -d $HEAT_CONF_DIR ]]; then
|
|
sudo mkdir -p $HEAT_CONF_DIR
|
|
fi
|
|
sudo chown $STACK_USER $HEAT_CONF_DIR
|
|
|
|
HEAT_API_CFN_HOST=${HEAT_API_CFN_HOST:-$SERVICE_HOST}
|
|
HEAT_API_CFN_PORT=${HEAT_API_CFN_PORT:-8000}
|
|
HEAT_ENGINE_HOST=${HEAT_ENGINE_HOST:-$SERVICE_HOST}
|
|
HEAT_ENGINE_PORT=${HEAT_ENGINE_PORT:-8001}
|
|
HEAT_API_CW_HOST=${HEAT_API_CW_HOST:-$SERVICE_HOST}
|
|
HEAT_API_CW_PORT=${HEAT_API_CW_PORT:-8003}
|
|
HEAT_API_HOST=${HEAT_API_HOST:-$SERVICE_HOST}
|
|
HEAT_API_PORT=${HEAT_API_PORT:-8004}
|
|
HEAT_API_PASTE_FILE=$HEAT_CONF_DIR/api-paste.ini
|
|
HEAT_POLICY_FILE=$HEAT_CONF_DIR/policy.json
|
|
|
|
cp $HEAT_DIR/etc/heat/api-paste.ini $HEAT_API_PASTE_FILE
|
|
cp $HEAT_DIR/etc/heat/policy.json $HEAT_POLICY_FILE
|
|
|
|
# Cloudformation API
|
|
HEAT_API_CFN_CONF=$HEAT_CONF_DIR/heat-api-cfn.conf
|
|
cp $HEAT_DIR/etc/heat/heat-api-cfn.conf $HEAT_API_CFN_CONF
|
|
iniset $HEAT_API_CFN_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
|
inicomment $HEAT_API_CFN_CONF DEFAULT log_file
|
|
iniset $HEAT_API_CFN_CONF DEFAULT use_syslog $SYSLOG
|
|
iniset $HEAT_API_CFN_CONF DEFAULT bind_host $HEAT_API_CFN_HOST
|
|
iniset $HEAT_API_CFN_CONF DEFAULT bind_port $HEAT_API_CFN_PORT
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken admin_user heat
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
|
|
iniset $HEAT_API_CFN_CONF keystone_authtoken signing_dir $HEAT_AUTH_CACHE_DIR/api-cfn
|
|
iniset $HEAT_API_CFN_CONF ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CFN_CONF ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens
|
|
[[ "$HEAT_STANDALONE" = "True" ]] && iniset $HEAT_API_CFN_CONF paste_deploy flavor standalone
|
|
|
|
iniset_rpc_backend heat $HEAT_API_CFN_CONF DEFAULT
|
|
|
|
# OpenStack API
|
|
HEAT_API_CONF=$HEAT_CONF_DIR/heat-api.conf
|
|
cp $HEAT_DIR/etc/heat/heat-api.conf $HEAT_API_CONF
|
|
iniset $HEAT_API_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
|
inicomment $HEAT_API_CONF DEFAULT log_file
|
|
iniset $HEAT_API_CONF DEFAULT use_syslog $SYSLOG
|
|
iniset $HEAT_API_CONF DEFAULT bind_host $HEAT_API_HOST
|
|
iniset $HEAT_API_CONF DEFAULT bind_port $HEAT_API_PORT
|
|
iniset $HEAT_API_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
|
|
iniset $HEAT_API_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
|
|
iniset $HEAT_API_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
|
|
iniset $HEAT_API_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
|
|
iniset $HEAT_API_CONF keystone_authtoken admin_user heat
|
|
iniset $HEAT_API_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
|
|
iniset $HEAT_API_CONF keystone_authtoken signing_dir $HEAT_AUTH_CACHE_DIR/api
|
|
iniset $HEAT_API_CONF ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CONF ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens
|
|
[[ "$HEAT_STANDALONE" = "True" ]] && iniset $HEAT_API_CONF paste_deploy flavor standalone
|
|
iniset_rpc_backend heat $HEAT_API_CONF DEFAULT
|
|
|
|
|
|
# engine
|
|
HEAT_ENGINE_CONF=$HEAT_CONF_DIR/heat-engine.conf
|
|
cp $HEAT_DIR/etc/heat/heat-engine.conf $HEAT_ENGINE_CONF
|
|
iniset $HEAT_ENGINE_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
|
inicomment $HEAT_ENGINE_CONF DEFAULT log_file
|
|
iniset $HEAT_ENGINE_CONF DEFAULT use_syslog $SYSLOG
|
|
iniset $HEAT_ENGINE_CONF DEFAULT bind_host $HEAT_ENGINE_HOST
|
|
iniset $HEAT_ENGINE_CONF DEFAULT bind_port $HEAT_ENGINE_PORT
|
|
iniset $HEAT_ENGINE_CONF DEFAULT heat_metadata_server_url http://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT
|
|
iniset $HEAT_ENGINE_CONF DEFAULT heat_waitcondition_server_url http://$HEAT_API_CFN_HOST:$HEAT_API_CFN_PORT/v1/waitcondition
|
|
iniset $HEAT_ENGINE_CONF DEFAULT heat_watch_server_url http://$HEAT_API_CW_HOST:$HEAT_API_CW_PORT
|
|
iniset $HEAT_ENGINE_CONF DEFAULT sql_connection `database_connection_url heat`
|
|
iniset $HEAT_ENGINE_CONF DEFAULT auth_encryption_key `hexdump -n 16 -v -e '/1 "%02x"' /dev/random`
|
|
|
|
iniset_rpc_backend heat $HEAT_ENGINE_CONF DEFAULT
|
|
|
|
# Cloudwatch API
|
|
HEAT_API_CW_CONF=$HEAT_CONF_DIR/heat-api-cloudwatch.conf
|
|
cp $HEAT_DIR/etc/heat/heat-api-cloudwatch.conf $HEAT_API_CW_CONF
|
|
iniset $HEAT_API_CW_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
|
inicomment $HEAT_API_CW_CONF DEFAULT log_file
|
|
iniset $HEAT_API_CW_CONF DEFAULT use_syslog $SYSLOG
|
|
iniset $HEAT_API_CW_CONF DEFAULT bind_host $HEAT_API_CW_HOST
|
|
iniset $HEAT_API_CW_CONF DEFAULT bind_port $HEAT_API_CW_PORT
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken auth_host $KEYSTONE_AUTH_HOST
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken auth_port $KEYSTONE_AUTH_PORT
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken auth_protocol $KEYSTONE_AUTH_PROTOCOL
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken admin_user heat
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
|
|
iniset $HEAT_API_CW_CONF keystone_authtoken signing_dir $HEAT_AUTH_CACHE_DIR/api-cloudwatch
|
|
iniset $HEAT_API_CW_CONF ec2authtoken auth_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0
|
|
iniset $HEAT_API_CW_CONF ec2authtoken keystone_ec2_uri $KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v2.0/ec2tokens
|
|
[[ "$HEAT_STANDALONE" = "True" ]] && iniset $HEAT_API_CW_CONF paste_deploy flavor standalone
|
|
|
|
iniset_rpc_backend heat $HEAT_API_CW_CONF DEFAULT
|
|
|
|
}
|
|
|
|
# init_heat() - Initialize database
|
|
function init_heat() {
|
|
|
|
# (re)create heat database
|
|
recreate_database heat utf8
|
|
|
|
$HEAT_DIR/bin/heat-manage db_sync
|
|
create_heat_cache_dir
|
|
}
|
|
|
|
# create_heat_cache_dir() - Part of the init_heat() process
|
|
function create_heat_cache_dir() {
|
|
# Create cache dirs
|
|
sudo mkdir -p $HEAT_AUTH_CACHE_DIR/api
|
|
sudo chown $STACK_USER $HEAT_AUTH_CACHE_DIR/api
|
|
sudo mkdir -p $HEAT_AUTH_CACHE_DIR/api-cfn
|
|
sudo chown $STACK_USER $HEAT_AUTH_CACHE_DIR/api-cfn
|
|
sudo mkdir -p $HEAT_AUTH_CACHE_DIR/api-cloudwatch
|
|
sudo chown $STACK_USER $HEAT_AUTH_CACHE_DIR/api-cloudwatch
|
|
}
|
|
|
|
# install_heatclient() - Collect source and prepare
|
|
function install_heatclient() {
|
|
git_clone $HEATCLIENT_REPO $HEATCLIENT_DIR $HEATCLIENT_BRANCH
|
|
setup_develop $HEATCLIENT_DIR
|
|
}
|
|
|
|
# install_heat() - Collect source and prepare
|
|
function install_heat() {
|
|
git_clone $HEAT_REPO $HEAT_DIR $HEAT_BRANCH
|
|
}
|
|
|
|
# start_heat() - Start running processes, including screen
|
|
function start_heat() {
|
|
screen_it h-eng "cd $HEAT_DIR; bin/heat-engine --config-file=$HEAT_CONF_DIR/heat-engine.conf"
|
|
screen_it h-api "cd $HEAT_DIR; bin/heat-api --config-dir=$HEAT_CONF_DIR/heat-api.conf"
|
|
screen_it h-api-cfn "cd $HEAT_DIR; bin/heat-api-cfn --config-dir=$HEAT_CONF_DIR/heat-api-cfn.conf"
|
|
screen_it h-api-cw "cd $HEAT_DIR; bin/heat-api-cloudwatch --config-dir=$HEAT_CONF_DIR/heat-api-cloudwatch.conf"
|
|
}
|
|
|
|
# stop_heat() - Stop running processes
|
|
function stop_heat() {
|
|
# Kill the screen windows
|
|
for serv in h-eng h-api h-api-cfn h-api-cw; do
|
|
screen -S $SCREEN_NAME -p $serv -X kill
|
|
done
|
|
}
|
|
|
|
|
|
# Restore xtrace
|
|
$XTRACE
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# End:
|