ctdb-scripts: Drop CTDB_PUBLIC_ADDRESSES configuration option
authorMartin Schwenke <martin@meltin.net>
Thu, 8 Mar 2018 04:11:51 +0000 (15:11 +1100)
committerAmitay Isaacs <amitay@samba.org>
Mon, 19 Mar 2018 01:23:19 +0000 (02:23 +0100)
This option adds a lot of unnecessary complexity to scripts.
Configuration should go in $CTDB_BASE, either directly or via a
symlink, so simplify by using the default location.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
14 files changed:
ctdb/config/ctdb-crash-cleanup.sh
ctdb/config/ctdbd.conf
ctdb/config/ctdbd_wrapper
ctdb/config/events.d/10.interface
ctdb/config/events.d/11.natgw
ctdb/config/events.d/13.per_ip_routing
ctdb/config/functions
ctdb/doc/ctdb.7.xml
ctdb/doc/ctdbd.conf.5.xml
ctdb/doc/examples/cluster.conf
ctdb/doc/examples/natgw.conf
ctdb/tests/complex/18_ctdb_reloadips.sh
ctdb/tests/eventscripts/10.interface.init.001.sh
ctdb/tests/simple/18_ctdb_reloadips.sh

index 22b0ce86f5f2bb075a76d6d5e2d23f2a2456750e..2ab8e527d3291a063c8d03d668601582db8d7e64 100755 (executable)
@@ -16,11 +16,9 @@ fi
 
 loadconfig ctdb
 
-[ -n "$CTDB_PUBLIC_ADDRESSES" ] || \
-       CTDB_PUBLIC_ADDRESSES="$CTDB_BASE/public_addresses"
-
-[ -f "$CTDB_PUBLIC_ADDRESSES" ] || \
-    die "No public addresses file found. Can't clean up."
+if [ ! -f "$CTDB_BASE/public_addresses" ] ; then
+       die "No public addresses file found. Can't clean up."
+fi
 
 drop_all_public_ips 2>&1 | script_log "ctdb-crash-cleanup.sh"
 
index 2d525c528fdf210d3b68faced19b9458a32fb179..f8c56d078bb7adc5bceca7e084b652dc8742395d 100644 (file)
@@ -11,9 +11,6 @@
 # List of nodes in the cluster.  Default is below.
 # CTDB_NODES=/etc/ctdb/nodes
 
-# List of public addresses for providing NAS services.  No default.
-# CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
-
 # What services should CTDB manage?  Default is none.
 # CTDB_MANAGES_SAMBA=yes
 # CTDB_MANAGES_WINBIND=yes
index 79e130d39ab501ff42ce44383c9a550bbe0f1e4a..d65d53c78fac9a4c824f527e7404e30045a2ba65 100755 (executable)
@@ -95,7 +95,6 @@ build_ctdb_options ()
     maybe_set "--logging"                "$CTDB_LOGGING"
     maybe_set "--nlist"                  "$CTDB_NODES"
     maybe_set "--listen"                 "$CTDB_NODE_ADDRESS"
-    maybe_set "--public-addresses"       "$CTDB_PUBLIC_ADDRESSES"
     maybe_set "--public-interface"       "$CTDB_PUBLIC_INTERFACE"
     maybe_set "--dbdir"                  "$CTDB_DBDIR"
     maybe_set "--dbdir-persistent"       "$CTDB_DBDIR_PERSISTENT"
index f2d44dad12532a0dfeabc109dd8493f8f198bf81..7093470e8ea3af8e8c0d20672f6a3c63131710be 100755 (executable)
 
 loadconfig
 
-[ -z "$CTDB_PUBLIC_ADDRESSES" ] && {
-       CTDB_PUBLIC_ADDRESSES="${CTDB_BASE}/public_addresses"
-}
+ctdb_public_addresses="${CTDB_BASE}/public_addresses"
 
-[ ! -f "$CTDB_PUBLIC_ADDRESSES" ] && {
-       if [ "$1" = "init" ]; then
-               echo "No public addresses file found. Nothing to do for 10.interfaces"
+if [ ! -f "$ctdb_public_addresses" ]; then
+       if [ "$1" = "init" ] ; then
+               echo "No public addresses file found"
        fi
        exit 0
-}
+fi
 
 # This sets $all_interfaces as a side-effect.
 get_all_interfaces ()
@@ -29,7 +27,7 @@ get_all_interfaces ()
     # Get all the interfaces listed in the public_addresses file
     all_interfaces=$(sed -e "s/^[^\t ]*[\t ]*//" \
                         -e "s/,/ /g" \
-                        -e "s/[\t ]*$//" "$CTDB_PUBLIC_ADDRESSES")
+                        -e "s/[\t ]*$//" "$ctdb_public_addresses")
 
     # Add some special interfaces if they're defined
     [ "$CTDB_PUBLIC_INTERFACE" ] && all_interfaces="$CTDB_PUBLIC_INTERFACE $all_interfaces"
index b256d37bceca39cba04259a1d716462a18693b6c..f2e17a7f9e99882c54a8bf528ac2c74ca585fafe 100755 (executable)
@@ -197,9 +197,9 @@ startup)
 
        # Error if CTDB_NATGW_PUBLIC_IP is listed in public addresses
        ip_pat=$(echo "$CTDB_NATGW_PUBLIC_IP" | sed -e 's@\.@\\.@g')
-       if grep -q "^${ip_pat}[[:space:]]" \
-           "${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}" ; then
-           die "ERROR: CTDB_NATGW_PUBLIC_IP same as a public address"
+       ctdb_public_addresses="${CTDB_BASE}/public_addresses"
+       if grep -q "^${ip_pat}[[:space:]]" "$ctdb_public_addresses" ; then
+               die "ERROR: CTDB_NATGW_PUBLIC_IP same as a public address"
        fi
 
        # do not send out arp requests from loopback addresses
index c213583b3020589f9df21b6cf4f4a91b80fda94a..2e080a1caff57dbb2188352b534a28ff2093c5bd 100755 (executable)
@@ -207,7 +207,7 @@ get_config_for_ip ()
            if [ "$_ip" = "$_i" ] ; then
                printf "%s" "$_ip "; ipv4_host_addr_to_net "$_ip" "$_maskbits"
            fi
-       done <"${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}"
+       done <"${CTDB_BASE}/public_addresses"
     else
        while read _i _rest ; do
            if [ "$_ip" = "$_i" ] ; then
index b3b348aebe2568cfa215bbabbf055de513d10187..36442991db2bf520689b11e425cf0ec977613d86 100755 (executable)
@@ -592,7 +592,7 @@ drop_all_public_ips ()
        # shellcheck disable=SC2034
        while read _ip _x ; do
                drop_ip "$_ip"
-       done <"${CTDB_PUBLIC_ADDRESSES:-${CTDB_BASE}/public_addresses}"
+       done <"${CTDB_BASE}/public_addresses"
 }
 
 flush_route_cache ()
index 5f5332e76400376533a9d5fbee528c30e62ae4d1..c07af61dbf6bfe7fd69080f7e58cf548edd9837d 100644 (file)
         clients, as long as there are nodes available capable of
         hosting this address.
       </para>
+
       <para>
-       The public address configuration is stored in a file on each
-       node specified by the <varname>CTDB_PUBLIC_ADDRESSES</varname>
-       configuration variable (see
-       <citerefentry><refentrytitle>ctdbd.conf</refentrytitle>
-       <manvolnum>5</manvolnum></citerefentry>, recommended
-       <filename>/usr/local/etc/ctdb/public_addresses</filename>).  This file
-       contains a list of the public addresses that the node is
-       capable of hosting, one per line.  Each entry also contains
-       the netmask and the interface to which the address should be
-       assigned.
+       The public address configuration is stored in
+       <filename>/usr/local/etc/ctdb/public_addresses</filename> on
+       each node.  This file contains a list of the public addresses
+       that the node is capable of hosting, one per line.  Each entry
+       also contains the netmask and the interface to which the
+       address should be assigned.  If this file is missing then no
+       public addresses are configured.
+      </para>
+
+      <para>
+       Some users who have the same public addresses on all nodes
+       like to put this configuration file in their cluster
+       filesystem.  A symbolic link should be used in this case.
       </para>
 
       <para>
index c59f80628262b797f5e7d6fcc5b40189ae6a4a27..4fe01ef6de368789a6d231fc8bbdf3c16c759e13 100644 (file)
        </listitem>
       </varlistentry>
 
-      <varlistentry>
-       <term>CTDB_PUBLIC_ADDRESSES=<parameter>FILENAME</parameter></term>
-       <listitem>
-         <para>
-           Default is
-           <filename>/usr/local/etc/ctdb/public_addresses</filename>.
-           Corresponds to <option>--public-addresses</option>.
-         </para>
-       </listitem>
-      </varlistentry>
-
       <varlistentry>
        <term>CTDB_PUBLIC_INTERFACE=<parameter>INTERFACE</parameter></term>
        <listitem>
index 030276279aa306dfcb57f1c67ad2c07a64b20d07..b3a3263efdb08acf09d3b324083ee50f3f7cc367 100644 (file)
@@ -65,8 +65,6 @@ CTDB_NODES=/etc/ctdb/nodes
 # 10.1.1.106/24 eth1
 # ---------- /etc/ctdb/public_addresses ----------
 #
-CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
-
 # Enable logging to syslog
 CTDB_LOGGING=syslog
 
index e1e75c78c65a7a16f47b89ad1524d58a54f4e5b6..e1844d63b9740b06e11528d49fc4c334edf35142 100644 (file)
@@ -67,8 +67,6 @@ CTDB_NODES=/etc/ctdb/nodes
 # 10.1.1.106/24 eth1
 # ---------- /etc/ctdb/public_addresses ----------
 #
-CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
-
 # Enable logging to syslog
 CTDB_LOGGING=syslog
 
index 5ac2830ce34b71adf268681c1ed828a9ea631983..e0632f3056460dd54185c988fe6f8b5fa18ecb96 100755 (executable)
@@ -100,7 +100,8 @@ try_command_on_node all "$CTDB setvar TakeoverTimeout ${new_takeover_timeout}"
 
 ####################
 
-addresses=$(get_ctdbd_command_line_option $test_node "public-addresses")
+try_command_on_node $test_node $CTDB_TEST_WRAPPER ctdb_base_show
+addresses="${out}/public_addresses"
 echo "Public addresses file on node $test_node is \"$addresses\""
 backup="${addresses}.$$"
 
index f29dd849fd917595520be3fcbb103dae7db9e4be..65c6bdc2a9aad6ef0c64ada7259c6863c3060c0e 100755 (executable)
@@ -8,6 +8,6 @@ setup_ctdb
 
 rm -f "${CTDB_BASE}/public_addresses"
 
-ok "No public addresses file found. Nothing to do for 10.interfaces"
+ok "No public addresses file found"
 
 simple_test
index 6b92878c3dc79c60e8e4accf0e44218d7c3102bf..95b819fd82b1c7a06f1cc3598bba6e0c33094980 100755 (executable)
@@ -34,7 +34,8 @@ select_test_node_and_ips
 
 echo "Emptying public addresses file on $test_node"
 
-addresses=$(get_ctdbd_command_line_option $test_node "public-addresses")
+try_command_on_node $test_node $CTDB_TEST_WRAPPER ctdb_base_show
+addresses="${out}/public_addresses"
 echo "Public addresses file on node $test_node is \"$addresses\""
 backup="${addresses}.$$"