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}"
|
||||
}
|
||||
|
||||
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?
|
||||
@ -166,9 +195,10 @@ DEFAULT_IPV4_NETMASK_1="255.255.255.0"
|
||||
|
||||
DEFAULT_IPV6_PREFIX=64
|
||||
|
||||
DEFAULT_CODENAME="$(lsb_release -c | awk '{print tolower($2)}')"
|
||||
|
||||
if [[ -f "$conf_file" ]]; then
|
||||
source "$conf_file"
|
||||
fatal "Configuration file '$(basename ${conf_file})' not found!"
|
||||
else
|
||||
warn "No Configuration file '$(basename ${conf_file})'. Using default values.."
|
||||
fi
|
||||
@ -278,16 +308,19 @@ echo ""
|
||||
|
||||
echo " # Insert the Code name of the Linux Distribution."
|
||||
echo " #"
|
||||
echo " # Example for debian: 'stretch'"
|
||||
echo " # Type <return> to accept the default '$DEFAULT_CODENAME'."
|
||||
echo ""
|
||||
echononl "\033[1mCode name:\033[m "
|
||||
echononl "\033[1mCode name [${DEFAULT_CODENAME}]:\033[m "
|
||||
read LXC_RELEASE
|
||||
if [[ -z "$(trim $LXC_RELEASE)" ]] ; then
|
||||
LXC_RELEASE="$DEFAULT_CODENAME"
|
||||
fi
|
||||
|
||||
while [[ -z "$(trim $LXC_RELEASE)" ]]; do
|
||||
warn "Parameter is needed. Try again.."
|
||||
echononl "\033[1mCode name:\033[m "
|
||||
read LXC_RELEASE
|
||||
done
|
||||
#while [[ -z "$(trim $LXC_RELEASE)" ]]; do
|
||||
# warn "Parameter is needed. Try again.."
|
||||
# echononl "\033[1mCode name:\033[m "
|
||||
# read LXC_RELEASE
|
||||
#done
|
||||
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
@ -541,6 +574,11 @@ while [[ -z "$(trim $IPV4_NETMASK_1)" ]]; do
|
||||
done
|
||||
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 ""
|
||||
@ -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[m"
|
||||
echo ""
|
||||
echo " LXC Version..............................: $LXC_VERSION"
|
||||
echo " LXC Major Version........................: $LXC_MAJOR_VERSION"
|
||||
echo ""
|
||||
echo " Base directory LX Containers.............: $LXC_ROOT_DIR"
|
||||
echo " Root directory new LX Container..........: $LXC_CONTAINER_DIR"
|
||||
echo ""
|
||||
@ -556,16 +597,18 @@ echo " Linux distribution.......................: $LXC_DIST"
|
||||
echo " Code name (or release number)............: $LXC_RELEASE"
|
||||
echo ""
|
||||
echo " MAC Address (first) network device.......: $MAC_ADDRESS_1"
|
||||
echo ""
|
||||
echo " IPv4 Address (first).....................: $IPV4_ADDRESS_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
|
||||
echo " IPv6 Address (first).....................: $IPV6_ADDRESS_1"
|
||||
echo " IPv6 Gateway Address (first).............: $IPV6_GATEWAY_1"
|
||||
else
|
||||
echo -e " IPv6 Address (first).....................: - \033[33mNot set\033[m - "
|
||||
fi
|
||||
echo " Netmask first IPv4 Address...............: $IPV4_NETMASK_1"
|
||||
echo " CIDR (IPv4 Prefix) of netmask............: $IPV4_PREFIX_1"
|
||||
if $_second_ipv4 ; then
|
||||
echo ""
|
||||
echo " MAC Address (second) network device......: $MAC_ADDRESS_2"
|
||||
@ -861,11 +904,12 @@ fi
|
||||
|
||||
# - 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"
|
||||
|
||||
_failed=false
|
||||
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg
|
||||
if [[ $LXC_MAJOR_VERSION -lt 3 ]]; then
|
||||
cat << EOF > ${LXC_CONTAINER_DIR}/config 2> $err_msg
|
||||
lxc.rootfs = ${LXC_CONTAINER_DIR}/rootfs
|
||||
|
||||
# Common configuration
|
||||
@ -893,25 +937,25 @@ lxc.network.ipv4 = ${IPV4_ADDRESS_1}/$IPV4_PREFIX_1
|
||||
lxc.network.ipv4.gateway = ${IPV4_GATEWAY_1}
|
||||
# IPv6
|
||||
EOF
|
||||
if [[ -n "${IPV6_ADDRESS_1}" ]] ; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
if [[ -n "${IPV6_ADDRESS_1}" ]] ; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
lxc.network.ipv6 = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1
|
||||
lxc.network.ipv6.gateway = $IPV6_GATEWAY_1
|
||||
EOF
|
||||
else
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
else
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
#lxc.network.ipv6 = ${IPV6_ADDRESS_1}/$IPV6_PREFIX_1
|
||||
#lxc.network.ipv6.gateway = $IPV6_GATEWAY_1
|
||||
EOF
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
_failed=true
|
||||
fi
|
||||
if [[ $? -ne 0 ]]; then
|
||||
_failed=true
|
||||
fi
|
||||
|
||||
if [[ -n "$IPV4_ADDRESS_2" ]]; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
if [[ -n "$IPV4_ADDRESS_2" ]]; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
### Device 2
|
||||
lxc.network.type = veth
|
||||
lxc.network.flags = up
|
||||
@ -922,20 +966,103 @@ lxc.network.hwaddr = $MAC_ADDRESS_2
|
||||
lxc.network.ipv4 = ${IPV4_ADDRESS_2}/$IPV4_PREFIX_2
|
||||
## IPv6
|
||||
EOF
|
||||
if [[ -n "$IPV4_ADDRESS_2" ]]; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
if [[ -n "$IPV6_ADDRESS_2" ]]; then
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||
EOF
|
||||
else
|
||||
cat << EOF >> ${LXC_CONTAINER_DIR}/config 2>> $err_msg
|
||||
#lxc.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ $? -ne 0 ]]; then
|
||||
_failed=true
|
||||
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.network.ipv6 = ${IPV6_ADDRESS_2}/$IPV6_PREFIX_2
|
||||
|
||||
#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 [[ $? -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
|
||||
|
||||
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.delay = 5
|
||||
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
|
||||
if [[ $? -ne 0 ]]; then
|
||||
_failed=true
|
||||
|
Loading…
Reference in New Issue
Block a user