training-guides/labs/scripts/ubuntu/setup_telemetry_controller.sh
sayalilunkad 2fe7df2835 labs: Adds telemetry service to osbash
Following actions are performed by this patch:
1) Adds the ceilometer packages to the pre-download script.
2) Adds telemetry services on controller node.
3) Configures glance, cinder to send notification to the telemetry module.
4) Adds ceilometer compute agent on compute node.

Co-authored-by: Pranav Salunke <dguitarbite@gmail.com>
Change-Id: I82e8f4799e724e09748bb9c743ec8b77e82af39a
2015-05-10 13:07:44 +00:00

174 lines
6.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -o errexit -o nounset
TOP_DIR=$(cd "$(dirname "$0")/.." && pwd)
source "$TOP_DIR/config/paths"
source "$CONFIG_DIR/credentials"
source "$LIB_DIR/functions.guest"
source "$CONFIG_DIR/openstack"
exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
# Install the Telemetry service
# http://docs.openstack.org/juno/install-guide/install/apt/content/ceilometer-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for telemetry."
echo "Installing the MongoDB packages."
sudo apt-get install -y mongodb-server mongodb-clients python-pymongo
echo "Configuring mongodb.conf."
conf=/etc/mongodb.conf
iniset_sudo_no_section $conf bind_ip "$(hostname_to_ip controller-mgmt)"
iniset_sudo_no_section $conf smallfiles true
echo "Restarting mongodb."
sudo service mongodb restart
echo "Waiting for mongodb to start."
while sudo service mongodb status 2>/dev/null | grep "stop"; do
sleep 5
echo -n .
done
ceilometer_admin_user=$(service_to_user_name ceilometer)
ceilometer_admin_password=$(service_to_user_password ceilometer)
mongodb_user=$(service_to_db_user ceilometer)
mongodb_password=$(service_to_db_password ceilometer)
echo "Creating the ceilometer database."
mongo --host "$(hostname_to_ip controller-mgmt)" --eval "
db = db.getSiblingDB(\"ceilometer\");
db.addUser({user: \"${mongodb_user}\",
pwd: \"${mongodb_password}\",
roles: [ \"readWrite\", \"dbAdmin\" ]})"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "Creating ceilometer user and giving it admin role under service tenant."
keystone user-create \
--name "$ceilometer_admin_user" \
--pass "$ceilometer_admin_password" \
keystone user-role-add \
--user "$ceilometer_admin_user" \
--tenant "$SERVICE_TENANT_NAME" \
--role "$ADMIN_ROLE_NAME"
echo "Registering ceilometer with keystone so that other services can locate it."
keystone service-create \
--name ceilometer \
--type metering \
--description "Telemetry"
ceilometer_service_id=$(keystone service-list | awk '/ metering / {print $2}')
keystone endpoint-create \
--service-id "$ceilometer_service_id" \
--publicurl "http://controller-api:8777" \
--internalurl "http://controller-mgmt:8777" \
--adminurl "http://controller-mgmt:8777" \
--region "$REGION"
echo "Installing ceilometer."
sudo apt-get install -y ceilometer-api ceilometer-collector \
ceilometer-agent-central \
ceilometer-agent-notification \
ceilometer-alarm-evaluator \
ceilometer-alarm-notifier \
python-ceilometerclient
function get_database_url {
local db_user=$(service_to_db_user ceilometer)
local db_password=$(service_to_db_password ceilometer)
local database_host=controller-mgmt
echo "mongodb://$db_user:$db_password@$database_host:27017/ceilometer"
}
database_url=$(get_database_url)
echo "Database connection: $database_url."
echo "Configuring ceilometer.conf."
conf=/etc/ceilometer/ceilometer.conf
iniset_sudo $conf database connection "$database_url"
# Configure RabbitMQ variables
iniset_sudo $conf DEFAULT rpc_backend rabbit
iniset_sudo $conf DEFAULT rabbit_host controller-mgmt
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASSWORD"
# Configure the [DEFAULT] section
iniset_sudo $conf DEFAULT auth_strategy keystone
iniset_sudo $conf keystone_authtoken auth_uri "http://controller-mgmt:5000/v2.0"
iniset_sudo $conf keystone_authtoken identity_uri "http://controller-mgmt:35357"
iniset_sudo $conf keystone_authtoken admin_tenant_name "$SERVICE_TENANT_NAME"
iniset_sudo $conf keystone_authtoken admin_user "$ceilometer_admin_user"
iniset_sudo $conf keystone_authtoken admin_password "$ceilometer_admin_password"
iniset_sudo $conf service_credentials os_auth_url "http://controller-mgmt:5000/v2.0"
iniset_sudo $conf service_credentials os_username "$ceilometer_admin_user"
iniset_sudo $conf service_credentials os_tenant_name "$SERVICE_TENANT_NAME"
iniset_sudo $conf service_credentials os_password "$ceilometer_admin_password"
iniset_sudo $conf publisher metering_secret "$METERING_SECRET"
iniset_sudo $conf DEFAULT verbose True
echo "Restarting telemetry service."
sudo service ceilometer-agent-central restart
sudo service ceilometer-agent-notification restart
sudo service ceilometer-api restart
sudo service ceilometer-collector restart
sudo service ceilometer-alarm-evaluator restart
sudo service ceilometer-alarm-notifier restart
#------------------------------------------------------------------------------
# Configure the Image service
# http://docs.openstack.org/juno/install-guide/install/apt/content/ceilometer-glance.html
#------------------------------------------------------------------------------
# Configure the Image Service to send notifications to the message bus
echo "Configuring glance-api.conf."
conf=/etc/glance/glance-api.conf
iniset_sudo $conf DEFAULT notification_driver messagingv2
iniset_sudo $conf DEFAULT rpc_backend rabbit
iniset_sudo $conf DEFAULT rabbit_host controller-mgmt
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASSWORD"
echo "Configuring glance-registry.conf."
conf=/etc/glance/glance-registry.conf
iniset_sudo $conf DEFAULT notification_driver messagingv2
iniset_sudo $conf DEFAULT rpc_backend rabbit
iniset_sudo $conf DEFAULT rabbit_host controller-mgmt
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASSWORD"
sudo service glance-registry restart
sudo service glance-api restart
#------------------------------------------------------------------------------
# Configure the Block Storage service
# http://docs.openstack.org/juno/install-guide/install/apt/content/ceilometer-cinder.html
#------------------------------------------------------------------------------
# Configure the Block Storage Service to send notifications to the message bus
echo "Configuring cinder.conf."
conf=/etc/cinder/cinder.conf
iniset_sudo $conf DEFAULT control_exchange cinder
iniset_sudo $conf DEFAULT notification_driver messagingv2
echo "Restarting cinder services."
sudo service cinder-api restart
sudo service cinder-scheduler restart