create-lx-container.sh: add support vor LXC Version 3.
This commit is contained in:
parent
3eddc9adb6
commit
4a7ebb6a19
@ -142,6 +142,35 @@ netmask2cidr() {
|
|||||||
echo "${len}"
|
echo "${len}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detect_os_1 () {
|
||||||
|
|
||||||
|
if $(which lsb_release > /dev/null 2>&1) ; then
|
||||||
|
|
||||||
|
os_dist="$(lsb_release -i | awk '{print tolower($3)}')"
|
||||||
|
os_version="$(lsb_release -r | awk '{print tolower($2)}')"
|
||||||
|
os_codename="$(lsb_release -c | awk '{print tolower($2)}')"
|
||||||
|
|
||||||
|
if [[ "$os_dist" = "debian" ]]; then
|
||||||
|
if $(echo "$os_version" | grep -q '\.') ; then
|
||||||
|
os_version=$(echo "$os_version" | cut --delimiter='.' -f1)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ -e "/etc/os-release" ]]; then
|
||||||
|
|
||||||
|
. /etc/os-release
|
||||||
|
|
||||||
|
os_dist=$ID
|
||||||
|
os_version=${VERSION_ID}
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove whitespace from os_dist and os_version
|
||||||
|
os_dist="${os_dist// /}"
|
||||||
|
os_version="${os_version// /}"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# -------------
|
# -------------
|
||||||
# - Running in a terminal?
|
# - Running in a terminal?
|
||||||
@ -166,9 +195,10 @@ DEFAULT_IPV4_NETMASK_1="255.255.255.0"
|
|||||||
|
|
||||||
DEFAULT_IPV6_PREFIX=64
|
DEFAULT_IPV6_PREFIX=64
|
||||||
|
|
||||||
|
DEFAULT_CODENAME="$(lsb_release -c | awk '{print tolower($2)}')"
|
||||||
|
|
||||||
if [[ -f "$conf_file" ]]; then
|
if [[ -f "$conf_file" ]]; then
|
||||||
source "$conf_file"
|
source "$conf_file"
|
||||||
fatal "Configuration file '$(basename ${conf_file})' not found!"
|
|
||||||
else
|
else
|
||||||
warn "No Configuration file '$(basename ${conf_file})'. Using default values.."
|
warn "No Configuration file '$(basename ${conf_file})'. Using default values.."
|
||||||
fi
|
fi
|
||||||
@ -278,16 +308,19 @@ echo ""
|
|||||||
|
|
||||||
echo " # Insert the Code name of the Linux Distribution."
|
echo " # Insert the Code name of the Linux Distribution."
|
||||||
echo " #"
|
echo " #"
|
||||||
echo " # Example for debian: 'stretch'"
|
echo " # Type <return> to accept the default '$DEFAULT_CODENAME'."
|
||||||
echo ""
|
echo ""
|
||||||
echononl "\033[1mCode name:\033[m "
|
echononl "\033[1mCode name [${DEFAULT_CODENAME}]:\033[m "
|
||||||
read LXC_RELEASE
|
read LXC_RELEASE
|
||||||
|
if [[ -z "$(trim $LXC_RELEASE)" ]] ; then
|
||||||
|
LXC_RELEASE="$DEFAULT_CODENAME"
|
||||||
|
fi
|
||||||
|
|
||||||
while [[ -z "$(trim $LXC_RELEASE)" ]]; do
|
#while [[ -z "$(trim $LXC_RELEASE)" ]]; do
|
||||||
warn "Parameter is needed. Try again.."
|
# warn "Parameter is needed. Try again.."
|
||||||
echononl "\033[1mCode name:\033[m "
|
# echononl "\033[1mCode name:\033[m "
|
||||||
read LXC_RELEASE
|
# read LXC_RELEASE
|
||||||
done
|
#done
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "\033[32m--\033[m"
|
echo -e "\033[32m--\033[m"
|
||||||
@ -541,6 +574,11 @@ while [[ -z "$(trim $IPV4_NETMASK_1)" ]]; do
|
|||||||
done
|
done
|
||||||
HOSTNAME="$(echo "$FQ_HOSTNAME" | cut -f1 -d'.')"
|
HOSTNAME="$(echo "$FQ_HOSTNAME" | cut -f1 -d'.')"
|
||||||
|
|
||||||
|
# - Determin LXC Version
|
||||||
|
# -
|
||||||
|
LXC_VERSION="$(lxc-info --version)"
|
||||||
|
declare -i LXC_MAJOR_VERSION=$(echo $LXC_VERSION | cut -d '.' -f1)
|
||||||
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
@ -548,6 +586,9 @@ echo -e " \033[32m---\033[m"
|
|||||||
echo -e " \033[32m\033[1mParameter Summary - create new LX Container \033[m\033[1m$LXC_NAME\033[m"
|
echo -e " \033[32m\033[1mParameter Summary - create new LX Container \033[m\033[1m$LXC_NAME\033[m"
|
||||||
echo -e " \033[32m---\033[m"
|
echo -e " \033[32m---\033[m"
|
||||||
echo ""
|
echo ""
|
||||||
|
echo " LXC Version..............................: $LXC_VERSION"
|
||||||
|
echo " LXC Major Version........................: $LXC_MAJOR_VERSION"
|
||||||
|
echo ""
|
||||||
echo " Base directory LX Containers.............: $LXC_ROOT_DIR"
|
echo " Base directory LX Containers.............: $LXC_ROOT_DIR"
|
||||||
echo " Root directory new LX Container..........: $LXC_CONTAINER_DIR"
|
echo " Root directory new LX Container..........: $LXC_CONTAINER_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
@ -556,16 +597,18 @@ echo " Linux distribution.......................: $LXC_DIST"
|
|||||||
echo " Code name (or release number)............: $LXC_RELEASE"
|
echo " Code name (or release number)............: $LXC_RELEASE"
|
||||||
echo ""
|
echo ""
|
||||||
echo " MAC Address (first) network device.......: $MAC_ADDRESS_1"
|
echo " MAC Address (first) network device.......: $MAC_ADDRESS_1"
|
||||||
|
echo ""
|
||||||
echo " IPv4 Address (first).....................: $IPV4_ADDRESS_1"
|
echo " IPv4 Address (first).....................: $IPV4_ADDRESS_1"
|
||||||
echo " IPv4 Gateway Address (first).............: $IPV4_GATEWAY_1"
|
echo " IPv4 Gateway Address (first).............: $IPV4_GATEWAY_1"
|
||||||
|
echo " Netmask first IPv4 Address...............: $IPV4_NETMASK_1"
|
||||||
|
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1"
|
||||||
|
echo ""
|
||||||
if [[ -n "$IPV6_ADDRESS_1" ]] ; then
|
if [[ -n "$IPV6_ADDRESS_1" ]] ; then
|
||||||
echo " IPv6 Address (first).....................: $IPV6_ADDRESS_1"
|
echo " IPv6 Address (first).....................: $IPV6_ADDRESS_1"
|
||||||
echo " IPv6 Gateway Address (first).............: $IPV6_GATEWAY_1"
|
echo " IPv6 Gateway Address (first).............: $IPV6_GATEWAY_1"
|
||||||
else
|
else
|
||||||
echo -e " IPv6 Address (first).....................: - \033[33mNot set\033[m - "
|
echo -e " IPv6 Address (first).....................: - \033[33mNot set\033[m - "
|
||||||
fi
|
fi
|
||||||
echo " Netmask first IPv4 Address...............: $IPV4_NETMASK_1"
|
|
||||||
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1"
|
|
||||||
if $_second_ipv4 ; then
|
if $_second_ipv4 ; then
|
||||||
echo ""
|
echo ""
|
||||||
echo " MAC Address (second) network device......: $MAC_ADDRESS_2"
|
echo " MAC Address (second) network device......: $MAC_ADDRESS_2"
|
||||||
@ -861,10 +904,11 @@ fi
|
|||||||
|
|
||||||
# - Create the Container configuration file
|
# - Create the Container configuration file
|
||||||
# -
|
# -
|
||||||
msg="Create Container Configuration '${LXC_CONTAINER_DIR}/config' .."
|
msg="Create Container Configuration '${LXC_CONTAINER_DIR}/config (LXC Version $LXC_VERSION)' .."
|
||||||
echo -en "\033[1G \033[1;30m[ ... ] \033[32m$msg\033[m"
|
echo -en "\033[1G \033[1;30m[ ... ] \033[32m$msg\033[m"
|
||||||
|
|
||||||
_failed=false
|
_failed=false
|
||||||
|
if [[ $LXC_MAJOR_VERSION -lt 3 ]]; then
|
||||||
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg
|
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg
|
||||||
lxc.rootfs = ${LXC_CONTAINER_DIR}/rootfs
|
lxc.rootfs = ${LXC_CONTAINER_DIR}/rootfs
|
||||||
|
|
||||||
@ -922,13 +966,13 @@ lxc.network.hwaddr = $MAC_ADDRESS_2
|
|||||||
lxc.network.ipv4 = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2
|
lxc.network.ipv4 = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2
|
||||||
## IPv6
|
## IPv6
|
||||||
EOF
|
EOF
|
||||||
if [[ -n "$IPV4_ADDRESS_2" ]]; then
|
if [[ -n "$IPV6_ADDRESS_2" ]]; then
|
||||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
#lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
#lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
@ -936,6 +980,89 @@ EOF
|
|||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
_failed=true
|
_failed=true
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg
|
||||||
|
lxc.rootfs.path = ${LXC_CONTAINER_DIR}/rootfs
|
||||||
|
|
||||||
|
# Common configuration
|
||||||
|
lxc.include = /usr/share/lxc/config/${LXC_DIST}.common.conf
|
||||||
|
|
||||||
|
|
||||||
|
# Container specific configuration
|
||||||
|
lxc.mount.fstab = ${LXC_CONTAINER_DIR}/fstab
|
||||||
|
lxc.uts.name = $LXC_NAME
|
||||||
|
lxc.arch = amd64
|
||||||
|
lxc.autodev = 1
|
||||||
|
|
||||||
|
|
||||||
|
# Network configuration
|
||||||
|
|
||||||
|
### Device 1
|
||||||
|
lxc.net.0.type = veth
|
||||||
|
lxc.net.0.flags = up
|
||||||
|
lxc.net.0.link = br0
|
||||||
|
lxc.net.0.name = eth0
|
||||||
|
lxc.net.0.hwaddr = $MAC_ADDRESS_1
|
||||||
|
# IPv4
|
||||||
|
lxc.net.0.ipv4.address = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1
|
||||||
|
lxc.net.0.ipv4.gateway = ${IPV4_GATEWAY_1}
|
||||||
|
# IPv6
|
||||||
|
EOF
|
||||||
|
if [[ -n "${IPV6_ADDRESS_1}" ]] ; then
|
||||||
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
|
lxc.net.0.ipv6.address = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1
|
||||||
|
lxc.net.0.ipv6.gateway = $IPV6_GATEWAY_1
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
|
#lxc.net.0.ipv6.address = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1
|
||||||
|
#lxc.net.0.ipv6.gateway = $IPV6_GATEWAY_1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$IPV4_ADDRESS_2" ]]; then
|
||||||
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
|
### Device 2
|
||||||
|
lxc.net.1.type = veth
|
||||||
|
lxc.net.1.flags = up
|
||||||
|
lxc.net.1.link = br0
|
||||||
|
lxc.net.1.name = eth1
|
||||||
|
lxc.net.1.hwaddr = $MAC_ADDRESS_2
|
||||||
|
## IPv4
|
||||||
|
lxc.net.1.ipv4.address = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2
|
||||||
|
## IPv6
|
||||||
|
EOF
|
||||||
|
if [[ -n "$IPV6_ADDRESS_2" ]]; then
|
||||||
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
|
lxc.net.1.ipv6.address = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
|
#lxc.net.1.ipv6.address = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
_failed=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||||
@ -950,6 +1077,10 @@ cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
|||||||
lxc.start.auto = 1
|
lxc.start.auto = 1
|
||||||
lxc.start.delay = 5
|
lxc.start.delay = 5
|
||||||
lxc.start.order = 100
|
lxc.start.order = 100
|
||||||
|
|
||||||
|
# Limt memory to 1GB less than full Memory of the server
|
||||||
|
# -
|
||||||
|
lxc.cgroup.memory.limit_in_bytes = $(( $(free -b | grep -oP '\d+' | head -n 1)-1000000000 ))
|
||||||
EOF
|
EOF
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
_failed=true
|
_failed=true
|
||||||
|
Loading…
Reference in New Issue
Block a user