aboutsummaryrefslogtreecommitdiff
path: root/docker/neutron
diff options
context:
space:
mode:
authorDaneyon Hansen <danehans@cisco.com>2014-10-13 16:36:17 +0000
committerDaneyon Hansen <danehans@cisco.com>2014-10-16 19:50:04 +0000
commitde313681f94a75b3dbcb078fa023495e2c04617f (patch)
treee7711d1e0347b40aedb71c29be2d1c99651f34ee /docker/neutron
parent558dcb5f56cf52a949fecc580ef1e359a1c6cb30 (diff)
downloadkolla-de313681f94a75b3dbcb078fa023495e2c04617f.tar.gz
kolla-de313681f94a75b3dbcb078fa023495e2c04617f.zip
Adds Neutron Server Support
Previously Kolla did not support Neutron. This patch provides initial Neutron support by implementing neutron-server functionality. It also creates a neutron-base image that provides common config and packages for all Neutron-based services. Partially Implements: Blueprint Kubernetes Neutron Container Change-Id: I2399a1331992fae0f387f01e5b5c1c1d34f0637d
Diffstat (limited to 'docker/neutron')
-rw-r--r--docker/neutron/neutron-base/Dockerfile8
l---------docker/neutron/neutron-base/build1
-rw-r--r--docker/neutron/neutron-base/config-neutron.sh87
-rw-r--r--docker/neutron/neutron-server/Dockerfile17
l---------docker/neutron/neutron-server/build1
-rwxr-xr-xdocker/neutron/neutron-server/check.sh17
-rwxr-xr-xdocker/neutron/neutron-server/start.sh104
7 files changed, 235 insertions, 0 deletions
diff --git a/docker/neutron/neutron-base/Dockerfile b/docker/neutron/neutron-base/Dockerfile
new file mode 100644
index 000000000..ab8890326
--- /dev/null
+++ b/docker/neutron/neutron-base/Dockerfile
@@ -0,0 +1,8 @@
+FROM kollaglue/fedora-rdo-base
+MAINTAINER Daneyon Hansen <danehans@cisco.com>
+
+RUN yum -y install openstack-neutron-ml2 ; yum clean all
+
+RUN mkdir -p /opt/kolla
+COPY config-neutron.sh /opt/kolla/config-neutron.sh
+
diff --git a/docker/neutron/neutron-base/build b/docker/neutron/neutron-base/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/neutron/neutron-base/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/neutron/neutron-base/config-neutron.sh b/docker/neutron/neutron-base/config-neutron.sh
new file mode 100644
index 000000000..1b60709af
--- /dev/null
+++ b/docker/neutron/neutron-base/config-neutron.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+set -e
+
+. /opt/kolla/kolla-common.sh
+
+: ${ADMIN_TENANT_NAME:=admin}
+: ${NEUTRON_DB_NAME:=neutron}
+: ${NEUTRON_DB_USER:=neutron}
+: ${NEUTRON_KEYSTONE_USER:=neutron}
+: ${KEYSTONE_AUTH_PROTOCOL:=http}
+: ${RABBIT_HOST:=$RABBITMQ_SERVICE_HOST}
+: ${RABBIT_USER:=guest}
+: ${RABBIT_PASSWORD:=guest}
+
+check_required_vars NEUTRON_KEYSTONE_PASSWORD
+dump_vars
+
+cat > /openrc <<EOF
+export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
+export OS_USERNAME="${NEUTRON_KEYSTONE_USER}"
+export OS_PASSWORD="${NEUTRON_KEYSTONE_PASSWORD}"
+export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
+EOF
+
+# Rabbit
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ rabbit_host \
+ "${RABBIT_HOST}"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ rabbit_userid \
+ "${RABBIT_USER}"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ rabbit_password \
+ "${RABBIT_PASSWORD}"
+
+# Keystone
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ auth_strategy \
+ "keystone"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ auth_protocol \
+ "${KEYSTONE_AUTH_PROTOCOL}"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ auth_host \
+ "${KEYSTONE_ADMIN_SERVICE_HOST}"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ auth_port \
+ "${KEYSTONE_ADMIN_SERVICE_PORT}"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ auth_uri \
+ "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ admin_tenant_name \
+ "${ADMIN_TENANT_NAME}"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ admin_user \
+ "${NEUTRON_KEYSTONE_USER}"
+crudini --set /etc/neutron/neutron.conf \
+ keystone_authtoken \
+ admin_password \
+ "${NEUTRON_KEYSTONE_PASSWORD}"
+
+# ML2
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ core_plugin \
+ "ml2"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ service_plugins \
+ "router"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ allow_overlapping_ips \
+ "True"
+
diff --git a/docker/neutron/neutron-server/Dockerfile b/docker/neutron/neutron-server/Dockerfile
new file mode 100644
index 000000000..5004c2347
--- /dev/null
+++ b/docker/neutron/neutron-server/Dockerfile
@@ -0,0 +1,17 @@
+FROM kollaglue/fedora-rdo-neutron-base
+MAINTAINER Daneyon Hansen <danehans@cisco.com>
+
+#Install required packages
+RUN yum install -y openstack-neutron \
+ python-neutronclient \
+ mariadb \
+ ; yum clean all
+
+VOLUME /var/lib/neutron
+
+EXPOSE 9696
+
+ADD ./start.sh /start.sh
+ADD ./check.sh /check.sh
+
+CMD ["/start.sh"]
diff --git a/docker/neutron/neutron-server/build b/docker/neutron/neutron-server/build
new file mode 120000
index 000000000..43944faa0
--- /dev/null
+++ b/docker/neutron/neutron-server/build
@@ -0,0 +1 @@
+../../../tools/build-docker-image \ No newline at end of file
diff --git a/docker/neutron/neutron-server/check.sh b/docker/neutron/neutron-server/check.sh
new file mode 100755
index 000000000..2a44cda91
--- /dev/null
+++ b/docker/neutron/neutron-server/check.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+RES=0
+
+. /openrc
+if ! keystone token-get > /dev/null; then
+ echo "ERROR: keystone token-get failed" >&2
+ RES=1
+else
+ if ! neutron ext-list > /dev/null; then
+ echo "ERROR: neutron ext-list failed" >&2
+ RES=1
+ fi
+fi
+
+exit $RES
+
diff --git a/docker/neutron/neutron-server/start.sh b/docker/neutron/neutron-server/start.sh
new file mode 100755
index 000000000..92ab935c5
--- /dev/null
+++ b/docker/neutron/neutron-server/start.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+set -e
+
+. /opt/kolla/kolla-common.sh
+. /opt/kolla/config-neutron.sh
+
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+ NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \
+ ADMIN_TENANT_NAME NEUTRON_SERVER_SERVICE_HOST \
+ PUBLIC_IP
+check_for_keystone
+check_for_db
+
+mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
+CREATE DATABASE IF NOT EXISTS ${NEUTRON_DB_NAME} DEFAULT CHARACTER SET utf8;
+GRANT ALL PRIVILEGES ON ${NEUTRON_DB_NAME}.* TO
+ '${NEUTRON_DB_USER}'@'%' IDENTIFIED BY '${NEUTRON_DB_PASSWORD}'
+
+EOF
+
+export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
+
+# Configure Keystone Service Catalog
+crux user-create -n "${NEUTRON_KEYSTONE_USER}" \
+ -p "${NEUTRON_KEYSTONE_PASSWORD}" \
+ -t "${ADMIN_TENANT_NAME}" \
+ -r admin
+
+crux endpoint-create -n neutron -t network \
+ -I "${KEYSTONE_AUTH_PROTOCOL}://${NEUTRON_SERVER_SERVICE_HOST}:9696" \
+ -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:9696" \
+ -A "${KEYSTONE_AUTH_PROTOCOL}://${NEUTRON_SERVER_SERVICE_HOST}:9696"
+
+# Database
+crudini --set /etc/neutron/neutron.conf \
+ database \
+ connection \
+ "mysql://${NEUTRON_DB_USER}:${NEUTRON_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${NEUTRON_DB_NAME}"
+
+# Nova
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ notify_nova_on_port_status_changes \
+ "True"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ notify_nova_on_port_data_changes \
+ "True"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_url \
+ "http://${NOVA_API_SERVICE_HOST}:8774/v2"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_admin_auth_url \
+ "http://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_region_name \
+ "RegionOne"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_admin_username \
+ "nova"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_admin_tenant_id \
+ "$(keystone tenant-list | grep $ADMIN_TENANT_NAME | awk '{print $2;}')"
+crudini --set /etc/neutron/neutron.conf \
+ DEFAULT \
+ nova_admin_password \
+ "${NOVA_ADMIN_PASSWORD}"
+
+# Configure ml2_conf.ini
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ ml2 \
+ type_drivers \
+ "gre"
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ ml2 \
+ tenant_network_types \
+ "gre"
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ ml2 \
+ mechanism_drivers \
+ "openvswitch"
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ ml2_type_gre \
+ tunnel_id_ranges \
+ "1:1000"
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ securitygroup \
+ firewall_driver \
+ "neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver"
+crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini \
+ securitygroup \
+ enable_security_group \
+ "True"
+
+/usr/bin/ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
+
+exec /usr/bin/neutron-server