summaryrefslogtreecommitdiffstats
path: root/lib/container/config-update
diff options
context:
space:
mode:
Diffstat (limited to 'lib/container/config-update')
-rwxr-xr-xlib/container/config-update93
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