diff --git a/bin/heat-db-setup b/bin/heat-db-setup index 89905b013f..d7a5844125 100755 --- a/bin/heat-db-setup +++ b/bin/heat-db-setup @@ -63,7 +63,7 @@ start_mysql_server() { MYSQL_HEAT_PW_DEFAULT="heat" MYSQL_HEAT_PW=${MYSQL_HEAT_PW_DEFAULT} -HEAT_CONFIG="/etc/heat/heat-engine.conf" +HEAT_CONFIG="/etc/heat/heat.conf" ASSUME_YES="" ELEVATE="" diff --git a/doc/source/getting_started/on_fedora.rst b/doc/source/getting_started/on_fedora.rst index 9bf57c7ae4..05444c4de4 100644 --- a/doc/source/getting_started/on_fedora.rst +++ b/doc/source/getting_started/on_fedora.rst @@ -111,9 +111,7 @@ In the heat directory, run the install script:: If running OpenStack grizzly installed via tools/openstack, it is necessary to modify the default service user password:: - sudo sed -i "s/verybadpass/secrete/" /etc/heat/heat-api-cfn.conf - sudo sed -i "s/verybadpass/secrete/" /etc/heat/heat-api-cloudwatch.conf - sudo sed -i "s/verybadpass/secrete/" /etc/heat/heat-api.conf + sudo sed -i "s/verybadpass/secrete/" /etc/heat/heat.conf Source the keystone credentials created with tools/openstack ------------------------------------------------------------ @@ -186,9 +184,10 @@ The heat engine configuration file should be updated with the address of the bri :: - sudo sed -i -e "/heat_metadata_server_url/ s/127\.0\.0\.1/${BRIDGE_IP}/" /etc/heat/heat-engine.conf - sudo sed -i -e "/heat_waitcondition_server_url/ s/127\.0\.0\.1/${BRIDGE_IP}/" /etc/heat/heat-engine.conf - sudo sed -i -e "/heat_watch_server_url/ s/127\.0\.0\.1/${BRIDGE_IP}/" /etc/heat/heat-engine.conf + sudo sed -i -e "/^\[DEFAULT\]/ a\\\nheat_metadata_server_url=http://${BRIDGE_IP}:8000/\n" /etc/heat/heat.conf + sudo sed -i -e "/^\[DEFAULT\]/ a\\\nheat_waitcondition_server_url=http://${BRIDGE_IP}:8000/v1/waitcondition/" /etc/heat/heat.conf + sudo sed -i -e "/^\[DEFAULT\]/ a\\\nheat_watch_server_url=http://${BRIDGE_IP}:8003/" /etc/heat/heat.conf + Launch the Heat services ------------------------ diff --git a/doc/source/getting_started/on_ubuntu.rst b/doc/source/getting_started/on_ubuntu.rst index 7ddb3763fd..a1a805ff4c 100644 --- a/doc/source/getting_started/on_ubuntu.rst +++ b/doc/source/getting_started/on_ubuntu.rst @@ -101,9 +101,7 @@ Modify configuration for admin password Later a keystone user called '''heat''' will be created. At this point a password for that user needs to be chosen. The following files will need editing: -- /etc/heat/heat-api-cfn.conf -- /etc/heat/heat-api-cloudwatch.conf -- /etc/heat/heat-api.conf +- /etc/heat/heat.conf :: diff --git a/doc/source/man/heat-api-cfn.rst b/doc/source/man/heat-api-cfn.rst index 9fb7220e74..2577897606 100644 --- a/doc/source/man/heat-api-cfn.rst +++ b/doc/source/man/heat-api-cfn.rst @@ -36,4 +36,4 @@ OPTIONS FILES ======== -* /etc/heat/heat-api-cfn.conf +* /etc/heat/heat.conf diff --git a/doc/source/man/heat-api-cloudwatch.rst b/doc/source/man/heat-api-cloudwatch.rst index 192ff25178..85aad6bb0a 100644 --- a/doc/source/man/heat-api-cloudwatch.rst +++ b/doc/source/man/heat-api-cloudwatch.rst @@ -30,4 +30,4 @@ OPTIONS FILES ======== -* /etc/heat/heat-api-cloudwatch.conf +* /etc/heat/heat.conf diff --git a/doc/source/man/heat-api.rst b/doc/source/man/heat-api.rst index 3b3823992a..708e94955e 100644 --- a/doc/source/man/heat-api.rst +++ b/doc/source/man/heat-api.rst @@ -36,4 +36,4 @@ OPTIONS FILES ======== -* /etc/heat/heat-api.conf +* /etc/heat/heat.conf diff --git a/doc/source/man/heat-engine.rst b/doc/source/man/heat-engine.rst index 3071acd19d..1d9420ba74 100644 --- a/doc/source/man/heat-engine.rst +++ b/doc/source/man/heat-engine.rst @@ -35,4 +35,4 @@ OPTIONS FILES ======== -* /etc/heat/heat-engine.conf +* /etc/heat/heat.conf diff --git a/etc/heat/api-paste.ini b/etc/heat/api-paste.ini index 273e94c14f..3e1094dc66 100644 --- a/etc/heat/api-paste.ini +++ b/etc/heat/api-paste.ini @@ -7,7 +7,7 @@ pipeline = faultwrap versionnegotiation authtoken context apiv1app # ie. uses alternative auth backend that authenticates users against keystone # using username and password instead of validating token (which requires # an admin/service token). -# To enable, in heat-api.conf: +# To enable, in heat.conf: # [paste_deploy] # flavor = standalone # @@ -15,7 +15,7 @@ pipeline = faultwrap versionnegotiation authtoken context apiv1app pipeline = faultwrap versionnegotiation authpassword context apiv1app # heat-api pipeline for custom cloud backends -# i.e. in heat-api.conf: +# i.e. in heat.conf: # [paste_deploy] # flavor = custombackend # diff --git a/heat/db/sqlalchemy/manage.py b/heat/db/sqlalchemy/manage.py index 8a7ff16821..dc7b90746e 100755 --- a/heat/db/sqlalchemy/manage.py +++ b/heat/db/sqlalchemy/manage.py @@ -27,7 +27,7 @@ if __name__ == '__main__': config = ConfigParser.SafeConfigParser() try: config = ConfigParser.SafeConfigParser() - config.readfp(open('/etc/heat/heat-engine.conf')) + config.readfp(open('/etc/heat/heat.conf')) sql_connection = config.get('DEFAULT', 'sql_connection') except Exception: sql_connection = 'mysql://heat:heat@localhost/heat' diff --git a/install.sh b/install.sh index efe1fac5b8..40dfefae4c 100755 --- a/install.sh +++ b/install.sh @@ -35,16 +35,60 @@ detect_rabbit() { return 1 } -sed_if_rabbit() { - DEFAULT_RABBIT_PASSWORD="guest" +# Determinate is the given option present in the INI file +# ini_has_option config-file section option +function ini_has_option() { + local file=$1 + local section=$2 + local option=$3 + local line + line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" "$file") + [ -n "$line" ] +} + +# Set an option in an INI file +# iniset config-file section option value +function iniset() { + local file=$1 + local section=$2 + local option=$3 + local value=$4 + if ! grep -q "^\[$section\]" "$file"; then + # Add section at the end + echo -e "\n[$section]" >>"$file" + fi + if ! ini_has_option "$file" "$section" "$option"; then + # Add it + sed -i -e "/^\[$section\]/ a\\ +$option = $value +" "$file" + else + # Replace it + sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file" + fi +} + +basic_configuration() { conf_path=$1 if echo $conf_path | grep ".conf$" >/dev/null 2>&1 then - if detect_rabbit + iniset $target DEFAULT auth_encryption_key `hexdump -n 16 -v -e '/1 "%02x"' /dev/random` + iniset $target DEFAULT db_backend heat.db.sqlalchemy.api + iniset $target DEFAULT sql_connection "mysql://heat:heat@localhost/heat" + + BRIDGE_IP=127.0.0.1 + iniset $target DEFAULT heat_metadata_server_url "http://${BRIDGE_IP}:8000/" + iniset $target DEFAULT heat_waitcondition_server_url "http://${BRIDGE_IP}:8000/v1/waitcondition/" + iniset $target DEFAULT heat_watch_server_url "http://${BRIDGE_IP}:8003/" + + if detect_rabbit then echo "rabbitmq detected, configuring $conf_path for rabbit" >&2 - sed -i "/^rpc_backend\b/ s/impl_qpid/impl_kombu/" $conf_path - sed -i "/^rpc_backend/a rabbit_password=$DEFAULT_RABBIT_PASSWORD" $conf_path + iniset $conf_path DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu + iniset $conf_path DEFAULT rabbit_password guest + else + echo "qpid detected, configuring $conf_path for qpid" >&2 + iniset $conf_path DEFAULT rpc_backend heat.openstack.common.rpc.impl_qpid fi fi } @@ -55,19 +99,22 @@ install_dir() { for fn in $(ls $dir); do f=$dir/$fn + target=$prefix/$f + if [ $fn = 'heat.conf.sample' ]; then + target=$prefix/$dir/heat.conf + fi if [ -d $f ]; then - [ -d $prefix/$f ] || install -d $prefix/$f + [ -d $target ] || install -d $target install_dir $f $prefix - elif [ -f $prefix/$f ]; then - echo "NOT replacing existing config file $prefix/$f" >&2 - diff -u $prefix/$f $f + elif [ -f $target ]; then + echo "NOT replacing existing config file $target" >&2 + diff -u $target $f else echo "Installing $fn in $prefix/$dir" >&2 - install -m 664 $f $prefix/$dir - if [ $fn = 'heat-engine.conf' ]; then - sed -i "s/%ENCRYPTION_KEY%/`hexdump -n 16 -v -e '/1 "%02x"' /dev/random`/" $prefix/$f + install -m 664 $f $target + if [ $fn = 'heat.conf.sample' ]; then + basic_configuration $target fi - sed_if_rabbit $prefix/$f fi done }