diff options
Diffstat (limited to '')
-rwxr-xr-x | lib/container/config-update | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/container/config-update b/lib/container/config-update new file mode 100755 index 0000000..b76e369 --- /dev/null +++ b/lib/container/config-update @@ -0,0 +1,93 @@ +#!/bin/sh + +# container-tools - Manage systemd-nspawn containers +# Copyright (C) 2016-2017 David Kunz <david.kunz@open-infrastructure.net> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +#set -e + +CONFIG="/etc/container-tools/config" + +echo -n "Creating new config files " + +for FILE in "${CONFIG}"/*.conf +do + CONTAINER="$(basename ${FILE} .conf)" + + NET="$(dig +short ${CONTAINER} | awk -F. '{ print $3 }')" + IP="$(dig +short ${CONTAINER} | awk -F. '{ print $4 }')" + BRIDGE="$(awk -F: '/^cnt.network-brige=/ { print $2 }' ${FILE})" + + CNT_AUTO="$(awk -F= '/^cnt.auto=/ { print $2 }' ${FILE})" + CNT_AUTO="${CNT_AUTO:-FIXME}" + + CNT_NETWORK_BRIDGE="veth-${NET}-${IP}:${BRIDGE}" + CNT_OVERLAY="$(awk -F= '/^cnt.overlay=/ { print $2 }' ${FILE})" + BIND="$(awk -F= '/^bind=/ { print $2 }' ${FILE})" + BOOT="yes" + CAPABILITY="" + DIRECTORY="/var/lib/machines/${CONTAINER}" + DROP_CAPABILITY="" + LINK_JOURNAL="no" + MACHINE="${CONTAINER}" + NETWORK_VETH_EXTRA="veth-${NET}-${IP}:eth0" + PRIVATE_USERS="no" + REGISTER="yes" + + BIND="${BIND:-bind=/srv/data/${CONTAINER}:/srv/${CONTAINER};}" + +cat > ${FILE}-new << EOF +# container-tools: ${CONTAINER} + +[start] +cnt.auto=${CNT_AUTO} +cnt.network-bridge=${CNT_NETWORK_BRIDGE} +cnt.overlay=${CNT_OVERLAY} +bind=${BIND} +boot=${BOOT} +capability=${CAPABILITY} +directory=${DIRECTORY} +drop-capability=${DROP_CAPABILITY} +link-journal=${LINK_JOURNAL} +machine=${MACHINE} +network-veth-extra=${NETWORK_VETH_EXTRA} +private-users=${PRIVATE_USERS} +register=${REGISTER} +EOF + + echo -n "." + +done + +echo " done." + +for FILE in "${CONFIG}"/*.conf-new +do + clear + + echo "diff -Naurp ${CONFIG}/$(basename ${FILE} -new) ${FILE}" + diff -Naurp "${FILE}/$(basename ${FILE} -new)" "${FILE}" + + echo + echo -n "Accept $(basename ${FILE}) [y|N] " + read ACCEPT + + case "${ACCEPT}" in + y|Y) + rm -f "${CONFIG}/$(basename ${FILE} -new)" + mv "${FILE}" "${CONFIG}/$(basename ${FILE} -new)" + ;; + esac +done |