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>
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"
# 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
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"
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 ()
# 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"
# 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
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
# 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 ()
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>
</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>
# 10.1.1.106/24 eth1
# ---------- /etc/ctdb/public_addresses ----------
#
-CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
-
# Enable logging to syslog
CTDB_LOGGING=syslog
# 10.1.1.106/24 eth1
# ---------- /etc/ctdb/public_addresses ----------
#
-CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
-
# Enable logging to syslog
CTDB_LOGGING=syslog
####################
-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}.$$"
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
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}.$$"