Keep the DevStack plugin in-tree
Change-Id: Iab185314be2efc78753289b06efffefbe8e0d0f6
This commit is contained in:
parent
622dddc270
commit
7fc43e3805
|
@ -0,0 +1,88 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# **designate.sh**
|
||||
|
||||
# Simple Tests to verify designate is running
|
||||
|
||||
echo "*********************************************************************"
|
||||
echo "Begin DevStack Exercise: $0"
|
||||
echo "*********************************************************************"
|
||||
|
||||
# This script exits on an error so that errors don't compound and you see
|
||||
# only the first error that occurred.
|
||||
set -o errexit
|
||||
|
||||
# Print the commands being run so that we can see the command that triggers
|
||||
# an error. It is also useful for following allowing as the install occurs.
|
||||
set -o xtrace
|
||||
|
||||
|
||||
# Settings
|
||||
# ========
|
||||
|
||||
# Keep track of the current directory
|
||||
EXERCISE_DIR=$(cd $(dirname "$0") && pwd)
|
||||
TOP_DIR=$(cd $EXERCISE_DIR/..; pwd)
|
||||
|
||||
# Import common functions
|
||||
source $TOP_DIR/functions
|
||||
|
||||
# Import configuration
|
||||
source $TOP_DIR/openrc
|
||||
|
||||
# Import exercise configuration
|
||||
source $TOP_DIR/exerciserc
|
||||
|
||||
# Skip if designate is not enabled
|
||||
is_service_enabled designate || exit 55
|
||||
|
||||
# Various functions
|
||||
# -----------------
|
||||
function get_domain_id {
|
||||
local DOMAIN_NAME=$1
|
||||
local DOMAIN_ID=$(designate domain-list | egrep " $DOMAIN_NAME " | get_field 1)
|
||||
die_if_not_set $LINENO DOMAIN_ID "Failure retrieving DOMAIN_ID"
|
||||
echo "$DOMAIN_ID"
|
||||
}
|
||||
|
||||
function get_record_id {
|
||||
local DOMAIN_ID=$1
|
||||
local RECORD_NAME=$2
|
||||
local RECORD_ID=$(designate record-list $DOMAIN_ID | egrep " $RECORD_NAME " | get_field 1)
|
||||
die_if_not_set $LINENO RECORD_ID "Failure retrieving RECORD_ID"
|
||||
echo "$RECORD_ID"
|
||||
}
|
||||
|
||||
# Testing Domains
|
||||
# ===============
|
||||
|
||||
# List domains
|
||||
designate domain-list
|
||||
|
||||
# Create random domain name
|
||||
DOMAIN_NAME="exercise-$(openssl rand -hex 4).com."
|
||||
|
||||
# Create the domain
|
||||
designate domain-create --name $DOMAIN_NAME --email devstack@example.org
|
||||
DOMAIN_ID=$(get_domain_id $DOMAIN_NAME)
|
||||
|
||||
# Fetch the domain
|
||||
designate domain-get $DOMAIN_ID
|
||||
|
||||
# Testing Records
|
||||
# ===============
|
||||
|
||||
# Create random record name
|
||||
RECORD_NAME="$(openssl rand -hex 4).${DOMAIN_NAME}"
|
||||
|
||||
# Create the record
|
||||
designate record-create $DOMAIN_ID --name $RECORD_NAME --type A --data 127.0.0.1
|
||||
RECORD_ID=$(get_record_id $DOMAIN_ID $RECORD_NAME)
|
||||
|
||||
# Fetch the record
|
||||
designate record-get $DOMAIN_ID $RECORD_ID
|
||||
|
||||
set +o xtrace
|
||||
echo "*********************************************************************"
|
||||
echo "SUCCESS: End DevStack Exercise: $0"
|
||||
echo "*********************************************************************"
|
|
@ -0,0 +1,49 @@
|
|||
# check for service enabled
|
||||
if is_service_enabled designate; then
|
||||
|
||||
if [[ "$1" == "source" ]]; then
|
||||
# Initial source of lib script
|
||||
source $TOP_DIR/lib/designate
|
||||
fi
|
||||
|
||||
if [[ "$1" == "stack" && "$2" == "install" ]]; then
|
||||
echo_summary "Installing Designate"
|
||||
install_designate
|
||||
|
||||
echo_summary "Installing Designate Client"
|
||||
install_designateclient
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
|
||||
echo_summary "Configuring Designate"
|
||||
configure_designate
|
||||
|
||||
echo_summary "Configuring Designate Client"
|
||||
configure_designateclient
|
||||
|
||||
if is_service_enabled key; then
|
||||
echo_summary "Creating Designate Keystone Accounts"
|
||||
create_designate_accounts
|
||||
fi
|
||||
|
||||
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
|
||||
echo_summary "Initializing Designate"
|
||||
init_designate
|
||||
|
||||
echo_summary "Starting Designate"
|
||||
start_designate
|
||||
|
||||
echo_summary "Creating Initial Designate Resources"
|
||||
create_designate_initial_resources
|
||||
fi
|
||||
|
||||
if [[ "$1" == "unstack" ]]; then
|
||||
# Shut down designate services
|
||||
# no-op
|
||||
:
|
||||
fi
|
||||
|
||||
if [[ "$1" == "clean" ]]; then
|
||||
echo_summary "Cleaning Designate"
|
||||
cleanup_designate
|
||||
fi
|
||||
fi
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
for f in lib/* extras.d/* exercises/*; do
|
||||
echo "Installing symlink for $f"
|
||||
rm ../../../devstack/$f || true
|
||||
ln -s $DIR/$f ../../../devstack/$f
|
||||
done
|
|
@ -0,0 +1,211 @@
|
|||
# lib/designate
|
||||
# Install and start **Designate** service
|
||||
|
||||
# To enable Designate services, add the following to localrc
|
||||
# enable_service designate,designate-api,designate-central,designate-agent,designate-sink
|
||||
|
||||
# stack.sh
|
||||
# ---------
|
||||
# install_designate
|
||||
# configure_designate
|
||||
# init_designate
|
||||
# start_designate
|
||||
# stop_designate
|
||||
# cleanup_designate
|
||||
|
||||
# Save trace setting
|
||||
XTRACE=$(set +o | grep xtrace)
|
||||
set +o xtrace
|
||||
|
||||
|
||||
# Defaults
|
||||
# --------
|
||||
|
||||
# Set up default repos
|
||||
DESIGNATE_REPO=${DESIGNATE_REPO:-${GIT_BASE}/stackforge/designate.git}
|
||||
DESIGNATE_BRANCH=${DESIGNATE_BRANCH:-master}
|
||||
DESIGNATECLIENT_REPO=${DESIGNATECLIENT_REPO:-${GIT_BASE}/stackforge/python-designateclient.git}
|
||||
DESIGNATECLIENT_BRANCH=${DESIGNATECLIENT_BRANCH:-master}
|
||||
|
||||
# Set up default paths
|
||||
DESIGNATE_DIR=$DEST/designate
|
||||
DESIGNATECLIENT_DIR=$DEST/python-designateclient
|
||||
DESIGNATE_CONF_DIR=/etc/designate
|
||||
DESIGNATE_STATE_PATH=${DESIGNATE_STATE_PATH:=$DATA_DIR/designate}
|
||||
DESIGNATE_CONF=$DESIGNATE_CONF_DIR/designate.conf
|
||||
DESIGNATE_LOG_DIR=/var/log/designate
|
||||
DESIGNATE_AUTH_CACHE_DIR=${DESIGNATE_AUTH_CACHE_DIR:-/var/cache/designate}
|
||||
|
||||
# Set up default options
|
||||
DESIGNATE_BACKEND_DRIVER=${DESIGNATE_BACKEND_DRIVER:=fake}
|
||||
|
||||
# Support potential entry-points console scripts
|
||||
DESIGNATE_BIN_DIR=$(get_python_exec_prefix)
|
||||
|
||||
# Functions
|
||||
# ---------
|
||||
|
||||
# cleanup_designate() - Remove residual data files, anything left over from previous
|
||||
# runs that a clean run would need to clean up
|
||||
function cleanup_designate() {
|
||||
sudo rm -rf $DESIGNATE_STATE_PATH $DESIGNATE_AUTH_CACHE_DIR
|
||||
}
|
||||
|
||||
# configure_designateclient() - Set config files, create data dirs, etc
|
||||
function configure_designateclient() {
|
||||
setup_develop $DESIGNATECLIENT_DIR
|
||||
}
|
||||
|
||||
# configure_designate() - Set config files, create data dirs, etc
|
||||
function configure_designate() {
|
||||
setup_develop $DESIGNATE_DIR
|
||||
|
||||
[ ! -d $DESIGNATE_CONF_DIR ] && sudo mkdir -m 755 -p $DESIGNATE_CONF_DIR
|
||||
sudo chown $USER $DESIGNATE_CONF_DIR
|
||||
|
||||
[ ! -d $DESIGNATE_LOG_DIR ] && sudo mkdir -m 755 -p $DESIGNATE_LOG_DIR
|
||||
sudo chown $USER $DESIGNATE_LOG_DIR
|
||||
|
||||
# (Re)create ``designate.conf``
|
||||
rm -f $DESIGNATE_CONF
|
||||
iniset_rpc_backend designate $DESIGNATE_CONF DEFAULT
|
||||
iniset $DESIGNATE_CONF DEFAULT verbose True
|
||||
iniset $DESIGNATE_CONF storage:sqlalchemy database_connection `database_connection_url designate`
|
||||
|
||||
if [[ "$DESIGNATE_BACKEND_DRIVER" = 'powerdns' ]]; then
|
||||
iniset $DESIGNATE_CONF backend:powerdns database_connection `database_connection_url designate_pdns`
|
||||
fi
|
||||
|
||||
if is_service_enabled key; then
|
||||
# Setup the Keystone Integration
|
||||
iniset $DESIGNATE_CONF service:api auth_strategy keystone
|
||||
iniset $DESIGNATE_CONF keystone_authtoken auth_protocol http
|
||||
iniset $DESIGNATE_CONF keystone_authtoken admin_user designate
|
||||
iniset $DESIGNATE_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
|
||||
iniset $DESIGNATE_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
|
||||
iniset $DESIGNATE_CONF keystone_authtoken signing_dir $DESIGNATE_AUTH_CACHE_DIR
|
||||
fi
|
||||
|
||||
if is_service_enabled designate-agent; then
|
||||
iniset $DESIGNATE_CONF service:central backend_driver rpc
|
||||
iniset $DESIGNATE_CONF service:agent backend_driver $DESIGNATE_BACKEND_DRIVER
|
||||
else
|
||||
iniset $DESIGNATE_CONF service:central backend_driver $DESIGNATE_BACKEND_DRIVER
|
||||
fi
|
||||
|
||||
# Install the policy file for the API server
|
||||
cp $DESIGNATE_DIR/etc/designate/policy.json $DESIGNATE_CONF_DIR/policy.json
|
||||
iniset $DESIGNATE_CONF DEFAULT policy_file $DESIGNATE_CONF_DIR/policy.json
|
||||
|
||||
cleanup_designate
|
||||
}
|
||||
|
||||
# create_designate_accounts() - Set up common required designate accounts
|
||||
|
||||
# Tenant User Roles
|
||||
# ------------------------------------------------------------------
|
||||
# service designate admin # if enabled
|
||||
function create_designate_accounts() {
|
||||
|
||||
SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
|
||||
ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
|
||||
|
||||
if [[ "$ENABLED_SERVICES" =~ "designate-api" ]]; then
|
||||
DESIGNATE_USER=$(keystone user-create \
|
||||
--name=designate \
|
||||
--pass="$SERVICE_PASSWORD" \
|
||||
--tenant_id $SERVICE_TENANT \
|
||||
--email=designate@example.com \
|
||||
| grep " id " | get_field 2)
|
||||
keystone user-role-add \
|
||||
--tenant_id $SERVICE_TENANT \
|
||||
--user_id $DESIGNATE_USER \
|
||||
--role_id $ADMIN_ROLE
|
||||
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
|
||||
DESIGNATE_SERVICE=$(keystone service-create \
|
||||
--name=designate \
|
||||
--type=dns \
|
||||
--description="Designate Service" \
|
||||
| grep " id " | get_field 2)
|
||||
keystone endpoint-create \
|
||||
--region RegionOne \
|
||||
--service_id $DESIGNATE_SERVICE \
|
||||
--publicurl "http://$SERVICE_HOST:9001/v1" \
|
||||
--adminurl "http://$SERVICE_HOST:9001/v1" \
|
||||
--internalurl "http://$SERVICE_HOST:9001/v1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function create_designate_initial_resources() {
|
||||
#ADMIN_TENANT_ID=$(keystone tenant-list | grep " admin " | get_field 1)
|
||||
designate server-create --name ns1.devstack.org.
|
||||
}
|
||||
|
||||
|
||||
|
||||
# init_designate() - Initialize etc.
|
||||
function init_designate() {
|
||||
# Create cache dir
|
||||
sudo mkdir -p $DESIGNATE_AUTH_CACHE_DIR
|
||||
sudo chown $STACK_USER $DESIGNATE_AUTH_CACHE_DIR
|
||||
rm -f $DESIGNATE_AUTH_CACHE_DIR/*
|
||||
|
||||
# (Re)create designate database
|
||||
recreate_database designate utf8
|
||||
|
||||
# Init and migrate designate database
|
||||
designate-manage database-init
|
||||
designate-manage database-sync
|
||||
|
||||
if [[ "$DESIGNATE_BACKEND_DRIVER" = 'powerdns' ]]; then
|
||||
# (Re)create designate_pdns database
|
||||
recreate_database designate_pdns utf8
|
||||
|
||||
# Init and migrate designate_pdns database
|
||||
designate-manage powerdns database-init
|
||||
designate-manage powerdns database-sync
|
||||
fi
|
||||
}
|
||||
|
||||
# install_designate() - Collect source and prepare
|
||||
function install_designate() {
|
||||
git_clone $DESIGNATE_REPO $DESIGNATE_DIR $DESIGNATE_BRANCH
|
||||
setup_develop $DESIGNATE_DIR
|
||||
|
||||
if [[ "$DESIGNATE_BACKEND_DRIVER" = 'powerdns' ]]; then
|
||||
install_package pdns-server pdns-backend-mysql
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
# install_designateclient() - Collect source and prepare
|
||||
function install_designateclient() {
|
||||
git_clone $DESIGNATECLIENT_REPO $DESIGNATECLIENT_DIR $DESIGNATECLIENT_BRANCH
|
||||
setup_develop $DESIGNATECLIENT_DIR
|
||||
}
|
||||
|
||||
# start_designate() - Start running processes, including screen
|
||||
function start_designate() {
|
||||
screen_it designate-api "designate-api --config-file $DESIGNATE_CONF"
|
||||
screen_it designate-central "designate-central --config-file $DESIGNATE_CONF"
|
||||
screen_it designate-agent "designate-agent --config-file $DESIGNATE_CONF"
|
||||
screen_it designate-sink "designate-sink --config-file $DESIGNATE_CONF"
|
||||
}
|
||||
|
||||
# stop_designate() - Stop running processes
|
||||
function stop_designate() {
|
||||
# Kill the designate screen windows
|
||||
for serv in designate-api designate-central designate-agent designate-sink; do
|
||||
screen -S $SCREEN_NAME -p $serv -X kill
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Restore xtrace
|
||||
$XTRACE
|
||||
|
||||
# Local variables:
|
||||
# mode: shell-script
|
||||
# End:
|
Loading…
Reference in New Issue