]> git.proxmox.com Git - mirror_ovs.git/blobdiff - tutorial/ovs-sandbox
ovsdb: Remove break after OVS_NOT_REACHED.
[mirror_ovs.git] / tutorial / ovs-sandbox
index ea3b827fe39eb3e4be7aaea186b3f1cffcf20228..1632ad15da5abefefcbc7d218071f16e8aac2e8f 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# Copyright (c) 2013, 2015 Nicira, Inc.
+# Copyright (c) 2013, 2015, 2016 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -69,6 +69,8 @@ built=false
 ovn=false
 ovnsb_schema=
 ovnnb_schema=
+ovn_rbac=true
+dummy=override
 
 for option; do
     # This option-parsing mechanism borrowed from a Autoconf-generated
@@ -112,10 +114,12 @@ These options force ovs-sandbox to use an installed Open vSwitch:
   --gdb-ovn-northd     run ovn-northd under gdb
   --gdb-ovn-controller run ovn-controller under gdb
   --gdb-ovn-controller-vtep run ovn-controller-vtep under gdb
+  --dummy=ARG          pass --enable-dummy=ARG to vswitchd (default: override)
   -R, --gdb-run        automatically start running the daemon in gdb
                        for any daemon set to run under gdb
   -S, --schema=FILE    use FILE as vswitch.ovsschema
   -o, --ovn            enable OVN
+  --no-ovn-rbac        disable role-based access control for OVN
 
 Other options:
   -h, --help           Print this usage message.
@@ -135,6 +139,12 @@ EOF
             srcdir=$optarg
             built=false
             ;;
+        --dummy)
+            prev=dummy
+            ;;
+        --dummy=*)
+            dummy=$optarg
+            ;;
         -s|--sr*)
             prev=srcdir
             built=false
@@ -178,6 +188,9 @@ EOF
         -o|--ovn)
             ovn=true
             ;;
+        --no-ovn-rbac)
+            ovn_rbac=false
+            ;;
         -R|--gdb-run)
             gdb_vswitchd_ex=true
             gdb_ovsdb_ex=true
@@ -223,7 +236,7 @@ if $built; then
     case $srcdir in
         '')
             srcdir=$builddir
-            if test ! -e "$srcdir"/WHY-OVS.md; then
+            if test ! -e "$srcdir"/README.rst; then
                 srcdir=`cd $builddir/.. && pwd`
             fi
             ;;
@@ -301,7 +314,7 @@ OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
 
 if $built; then
     # Easy access to OVS manpages.
-    (cd "$builddir" && ${MAKE-make} install-man mandir="$sandbox"/man)
+    (cd "$builddir" && ${MAKE-make} install-man install-man-rst mandir="$sandbox"/man)
     MANPATH=$sandbox/man:; export MANPATH
 fi
 
@@ -316,19 +329,63 @@ if $ovn; then
     touch "$sandbox"/.ovnsb.db.~lock~
     touch "$sandbox"/.ovnnb.db.~lock~
     run ovsdb-tool create ovnsb.db "$ovnsb_schema"
+    run ovsdb-tool create ovnsb2.db "$ovnsb_schema"
     run ovsdb-tool create ovnnb.db "$ovnnb_schema"
     run ovsdb-tool create vtep.db "$vtep_schema"
-    ovsdb_server_args="ovnsb.db ovnnb.db vtep.db conf.db"
+    ovsdb_server_args="vtep.db conf.db"
+    ovsdb_sb_server_args="ovnsb.db"
+    ovsdb_sb_backup_server_args="ovnsb2.db"
+    ovsdb_nb_server_args="ovnnb.db"
+
+    if [ "$HAVE_OPENSSL" = yes ]; then
+        OVS_PKI="run ovs-pki --dir=$sandbox/pki --log=$sandbox/ovs-pki.log"
+        $OVS_PKI -B 1024 init
+        $OVS_PKI -B 1024 req+sign ovnsb switch
+        $OVS_PKI -B 1024 req+sign ovnnb switch
+        $OVS_PKI -B 1024 -u req+sign chassis-1 switch
+    fi
 fi
 rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
     --remote=punix:"$sandbox"/db.sock $ovsdb_server_args
+if $ovn; then
+    rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir \
+        --pidfile="$sandbox"/ovnnb_db.pid -vconsole:off \
+        --log-file="$sandbox"/ovnnb_db.log \
+        --remote=db:OVN_Northbound,NB_Global,connections \
+        --private-key=db:OVN_Northbound,SSL,private_key \
+        --certificate=db:OVN_Northbound,SSL,certificate \
+        --ca-cert=db:OVN_Northbound,SSL,ca_cert \
+        --ssl-protocols=db:OVN_Northbound,SSL,ssl_protocols \
+        --ssl-ciphers=db:OVN_Northbound,SSL,ssl_ciphers \
+        --remote=punix:"$sandbox"/ovnnb_db.sock $ovsdb_nb_server_args
+    rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir \
+        --pidfile="$sandbox"/ovnsb_db.pid -vconsole:off \
+        --log-file="$sandbox"/ovnsb_db.log \
+        --remote=db:OVN_Southbound,SB_Global,connections \
+        --private-key=db:OVN_Southbound,SSL,private_key \
+        --certificate=db:OVN_Southbound,SSL,certificate \
+        --ca-cert=db:OVN_Southbound,SSL,ca_cert \
+        --ssl-protocols=db:OVN_Southbound,SSL,ssl_protocols \
+        --ssl-ciphers=db:OVN_Southbound,SSL,ssl_ciphers \
+        --remote=punix:"$sandbox"/ovnsb_db.sock $ovsdb_sb_server_args
+    # Start SB back up server
+    rungdb $gdb_ovsdb $gdb_ovsdb_ex ovsdb-server --detach --no-chdir \
+        --pidfile="$sandbox"/ovnsb_db2.pid  -vconsole:off \
+        --log-file="$sandbox"/ovnsb_db2.log \
+        --private-key=db:OVN_Southbound,SSL,private_key \
+        --certificate=db:OVN_Southbound,SSL,certificate \
+        --ca-cert=db:OVN_Southbound,SSL,ca_cert \
+        --remote=punix:"$sandbox"/ovnsb_db2.sock \
+        --unixctl="$sandbox"/sb_backup_unixctl \
+        --sync-from=unix:"$sandbox"/ovnsb_db.sock $ovsdb_sb_backup_server_args
+fi
 
 #Add a small delay to allow ovsdb-server to launch.
 sleep 0.1
 
 #Wait for ovsdb-server to finish launching.
 if test ! -e "$sandbox"/db.sock; then
-    echo -n "Waiting for ovsdb-server to start..."
+    printf "Waiting for ovsdb-server to start..."
     while test ! -e "$sandbox"/db.sock; do
         sleep 1;
     done
@@ -340,17 +397,41 @@ run ovs-vsctl --no-wait -- init
 
 # Start ovs-vswitchd.
 rungdb $gdb_vswitchd $gdb_vswitchd_ex ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
-    --enable-dummy=override -vvconn -vnetdev_dummy
+    --enable-dummy=$dummy -vvconn -vnetdev_dummy
 
 if $ovn; then
-    ovs-vsctl set open . external-ids:system-id=56b18105-5706-46ef-80c4-ff20979ab068
-    ovs-vsctl set open . external-ids:ovn-remote=unix:"$sandbox"/db.sock
+    ovn-nbctl init
+    ovn-sbctl init
+
+    ovs-vsctl set open . external-ids:system-id=chassis-1
+    ovs-vsctl set open . external-ids:hostname=sandbox
     ovs-vsctl set open . external-ids:ovn-encap-type=geneve
     ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1
 
-    rungdb $gdb_ovn_northd $gdb_ovn_northd_ex ovn-northd --detach --no-chdir --pidfile -vconsole:off --log-file
-    rungdb $gdb_ovn_controller $gdb_ovn_controller_ex ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file
-    rungdb $gdb_ovn_controller_vtep $gdb_ovn_controller_vtep_ex ovn-controller-vtep --detach --no-chdir --pidfile -vconsole:off --log-file
+    if [ "$HAVE_OPENSSL" = yes ]; then
+        ovn-nbctl set-ssl $sandbox/ovnnb-privkey.pem  $sandbox/ovnnb-cert.pem $sandbox/pki/switchca/cacert.pem
+        ovn-nbctl set-connection pssl:6641
+        ovn-sbctl set-ssl $sandbox/ovnsb-privkey.pem  $sandbox/ovnsb-cert.pem $sandbox/pki/switchca/cacert.pem
+        if $ovn_rbac; then
+            ovn-sbctl set-connection role=ovn-controller pssl:6642
+        else
+            ovn-sbctl set-connection pssl:6642
+        fi
+        ovs-vsctl set open . external-ids:ovn-remote=ssl:127.0.0.1:6642
+        OVN_CTRLR_PKI="-p $sandbox/chassis-1-privkey.pem -c $sandbox/chassis-1-cert.pem -C $sandbox/pki/switchca/cacert.pem"
+    else
+        ovs-vsctl set open . external-ids:ovn-remote=unix:"$sandbox"/ovnsb_db.sock
+        OVN_CTRLR_PKI=""
+    fi
+    rungdb $gdb_ovn_northd $gdb_ovn_northd_ex ovn-northd --detach \
+        --no-chdir --pidfile -vconsole:off --log-file \
+        --ovnsb-db=unix:"$sandbox"/ovnsb_db.sock \
+        --ovnnb-db=unix:"$sandbox"/ovnnb_db.sock
+    rungdb $gdb_ovn_controller $gdb_ovn_controller_ex ovn-controller \
+        $OVN_CTRLR_PKI --detach --no-chdir --pidfile -vconsole:off --log-file
+    rungdb $gdb_ovn_controller_vtep $gdb_ovn_controller_vtep_ex \
+        ovn-controller-vtep --detach --no-chdir --pidfile -vconsole:off \
+        $OVN_CTRLR_PKI --log-file --ovnsb-db=unix:"$sandbox"/ovnsb_db.sock
 fi
 
 cat <<EOF
@@ -360,8 +441,22 @@ cat <<EOF
 ----------------------------------------------------------------------
 You are running in a dummy Open vSwitch environment.  You can use
 ovs-vsctl, ovs-ofctl, ovs-appctl, and other tools to work with the
-dummy switch.  
+dummy switch.
+
+EOF
+if $ovn; then cat << EOF
+This environment also has the OVN daemons and databases enabled.
+You can use ovn-nbctl and ovn-sbctl to interact with the OVN databases.
+
+The backup server of OVN SB can be accessed by:
+* ovn-sbctl --db=unix:`pwd`/sandbox/ovnsb_db2.sock
+* ovs-appctl -t `pwd`/sandbox/sb_backup_unixctl
+The backup database file is "sandbox"/ovnsb2.db
 
+
+EOF
+fi
+cat <<EOF
 Log files, pidfiles, and the configuration database are in the
 "sandbox" subdirectory.