monasca-ceilometer/deployer/ceilosca.sh

110 lines
3.3 KiB
Bash
Executable File

#!/bin/bash -xe
export MONASCA_VAGRANT_REPO=https://git.openstack.org/openstack/monasca-vagrant
export DEVSTACK_REPO=https://git.openstack.org/openstack-dev/devstack.git
export CEILOMETER_REPO=https://git.openstack.org/openstack/ceilometer
export BASE_DIR=~
export WORK_DIR=$BASE_DIR/monasca-vagrant
export PREFERRED_BRANCH=stable/liberty
export DEVSTACK_DIR=$BASE_DIR/devstack
export DEVSTACK_IP=192.168.10.5
export MINIMON_IP=192.168.10.4
export NETWORK_IF=eth0
export CEILOSCA_USER=$USER
export DEVSTACK_DEST=/opt/stack
export CEILOMETER_DEST=$DEVSTACK_DEST/ceilometer
#The following variables are used by, modified devstack ceilometer (deployer/devstack/ceilometer) script
export TARGET_IP=127.0.0.1
export MONASCA_API_URL=http://$TARGET_IP:8070/v2.0
export CEILOSCA_DIR=${PWD}
export CEILOSCA_FILES='ceilometer/monasca_client.py ceilometer/publisher/monasca_data_filter.py ceilometer/publisher/monclient.py ceilometer/storage/impl_monasca.py setup.cfg'
export CEILOSCA_CONF_FILES='pipeline.yaml monasca_field_definitions.yaml';
clear_env()
{
unset OS_USERNAME OS_PASSWORD OS_PROJECT_NAME OS_AUTH_URL
}
download_ceilometer()
{
if [ ! -d $DEVSTACK_DEST ]; then
sudo mkdir -p $DEVSTACK_DEST
sudo chown $CEILOSCA_USER $DEVSTACK_DEST
fi
git clone -b $PREFERRED_BRANCH $CEILOMETER_REPO $CEILOMETER_DEST || true
cp deployer/devstack/settings $CEILOMETER_DEST/devstack
cp deployer/devstack/plugin.sh $CEILOMETER_DEST/devstack
}
setup_devstack()
{
git clone -b $PREFERRED_BRANCH $DEVSTACK_REPO $DEVSTACK_DIR || true
cp deployer/devstack/local.conf $DEVSTACK_DIR
pushd $DEVSTACK_DIR
./unstack.sh || true
./stack.sh
popd
}
install_ansible()
{
sudo apt-get install software-properties-common
sudo apt-add-repository -y ppa:ansible/ansible
sudo apt-get update
sudo apt-get -y install ansible
}
get_monasca_files()
{
git clone $MONASCA_VAGRANT_REPO $WORK_DIR || true
pushd $WORK_DIR
ansible-galaxy install -r requirements.yml -p ./roles --ignore-errors
popd
}
disable_monasca_ui_role()
{
if [ -f $WORK_DIR/roles/monasca-ui/tasks/main.yml ]; then
rm $WORK_DIR/roles/monasca-ui/tasks/main.yml
file_list=$(find $WORK_DIR/roles -type f -exec grep -l get_url: {} +)
for filename in $file_list; do
sed -i.bak 's/ timeout=[0-9]\+//' $filename
sed -i '/get_url:/s/$/ timeout=600/' $filename
done
fi
}
add_to_etc_hosts()
{
if ! grep -q "$TARGET_IP devstack mini-mon" /etc/hosts; then
sudo bash -c "echo $TARGET_IP devstack mini-mon >> /etc/hosts"
fi
}
add_monasca_ips_to_local_net_if()
{
sudo ip addr add $DEVSTACK_IP/24 dev $NETWORK_IF || true
sudo ip addr add $MINIMON_IP/24 dev $NETWORK_IF || true
}
run_ceilosca()
{
cd $WORK_DIR
ansible-playbook -u $CEILOSCA_USER -c local -k -i "devstack," devstack.yml
ansible-playbook -u $CEILOSCA_USER -c local -k -i "mini-mon," mini-mon.yml -e 'database_type=influxdb' -e 'influxdb_version=0.9.4.2'
}
clear_env
download_ceilometer
setup_devstack
install_ansible
get_monasca_files
disable_monasca_ui_role
add_to_etc_hosts
add_monasca_ips_to_local_net_if
run_ceilosca