Introduce a script to launch ovsdb-server process

The reason for introducing this script is to be able
to launch ovsdb-server and initialize it (create external bridge and plug
external interface) in one shot. It is applicable ONLY to Kubernetes environment
and it is required for Kubernetes DaemonSet usage. The behavior in classical
Kolla has not been changed.

TrivialFix

Change-Id: I54897cc2c0f2bcaaf0411822f3409bf96e92833d
This commit is contained in:
Serguei Bezverkhi 2016-08-05 10:54:35 -04:00
parent 3071d32a3f
commit 41ec75b567
3 changed files with 35 additions and 2 deletions

View File

@ -1,4 +1,4 @@
{
"command": "/usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/run/openvswitch/db.sock --remote=ptcp:6640:{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} --log-file=/var/log/kolla/openvswitch/ovsdb-server.log",
"command": "start-ovsdb-server {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} {% if keystone_replicas is defined %} {{ neutron_bridge_name }} {{ neutron_external_interface }} {% endif %}",
"config_files": []
}

View File

@ -3,7 +3,10 @@ MAINTAINER {{ maintainer }}
COPY ovs_ensure_configured.sh /usr/local/bin/kolla_ensure_openvswitch_configured
COPY extend_start.sh /usr/local/bin/kolla_openvswitch_extend_start
RUN chmod 755 /usr/local/bin/kolla_ensure_openvswitch_configured /usr/local/bin/kolla_openvswitch_extend_start
COPY start_ovsdb_server.sh /usr/local/bin/start-ovsdb-server
RUN chmod 755 /usr/local/bin/kolla_ensure_openvswitch_configured \
/usr/local/bin/kolla_openvswitch_extend_start \
/usr/local/bin/start-ovsdb-server
{% block openvswitch_db_server_footer %}{% endblock %}
{% block footer %}{% endblock %}

View File

@ -0,0 +1,30 @@
#!/bin/bash
# NOTE: (sbezverk) ovs_bridge and ovs_ext_intf variables get initialized only when
# this script is executed for kubernetes deployment. With Ansible deployment, only
# ovsdb-server gets launched and then the following workflow step will create
# an external bridge and plug an external interface. With Kubernetes we want to
# leverage its dynamic nature of automatic scaling up and down. It means all
# activities related to creating initial bridge, plugging external interface
# must be done by DaemonSet launched container.
ovsdb_ip=$1
ovs_bridge=$2
ovs_ext_intf=$3
# NOTE: (sbezverk) The reason for introducing this script is to be able
# to launch ovsdb-server and to create the initial external bridge in one step.
# It is required in order to be able to use DaemonSet.
if [ ! -e $ovs_bridge ] && [ ! -e $ovs_ext_intf ]; then
# NOTE: (sbezverk) This part is executed only by kubernetes deployment.
# Creating external bridge
/usr/sbin/ovsdb-server /etc/openvswitch/conf.db --remote=punix:/var/run/openvswitch/db.sock --run="ovs-vsctl --no-wait --db=unix:/var/run/openvswitch/db.sock add-br $ovs_bridge"
# Plug the external interface into the external bridge.
/usr/sbin/ovsdb-server /etc/openvswitch/conf.db --remote=punix:/var/run/openvswitch/db.sock --run="ovs-vsctl --no-wait --db=unix:/var/run/openvswitch/db.sock add-port $ovs_bridge $ovs_ext_intf"
# Run ovsdb server proces
/usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --log-file=/var/log/kolla/openvswitch/ovsdb-server.log
else
# NOTE: (sbezverk) This part is executed only by kolla-ansible deployment.
/usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/run/openvswitch/db.sock --remote=ptcp:6640:$ovsdb_ip --log-file=/var/log/kolla/openvswitch/ovsdb-server.log
fi